Calendar - © Dafne Cholet 2011-01-20

Filtr dnia: get_the_date

Na jednej z grup na FB Artur opisał następujący problem:

Mam na swoim blogu szablon i wszystko byłoby w porządku gdyby nie problem z datą – wyświetla mi ją jako MM.DD.RRRR, a chciałbym by pokazywało ją po naszemu. W opcjach mam ustawione wyświetlanie daty na „3 listopada 2015”.

Szybka analiza motywu ujawniła, że na format daty, podany jest na sztywno w jednym z plików motywu w taki sposób: get_the_date('m.d.Y');. Dokładne sprawdzenie wykluczyło możliwość stworzenia w prosty sposób motywu potomnego, bo zaciąganie pliku nie jest zrobione w zalecany dla motywu potomnego sposób.

Co można zrobić w takiej sytuacji?

Można wytworzyć motyw potomny i podmienić odpowiednie pliki, ale tak jak pisałem wcześniej ten motyw trzeba by prawie cały skopiować, albo przynajmniej zrobić to w dośc paskudny sposób.

Nie poddaję się jednak i szukam innego sposobu. Okazuje się, że moje ulubione akcje i filtry i w tym przypadku dadzą sobie bez kłopotu radę. Zastosowałem filtr get_the_dateget_the_date, który pozwala na całkowitą podmianę wyświetlanej daty. Niestety nie ma filtra pozwalającego na wymuszenia formatu daty, więc musimy sami taką datę wpisać.

add_filter('get_the_date', 'iworks_get_the_date', 10, 3);
function iworks_get_the_date($the_date, $d, $post)
{
    return mysql2date( get_option( 'date_format' ), $post->post_date );
}
[zip href="http://iworks.pl/wp-content/uploads/2015/11/iworks-force-set-date-format.php-.zip"]iworks-force-set-date-format.php[/zip]

Jak użyć podany kod?

Masz 3 rozwiązania:

  1. wrzuć załączony plik do folderu wp-content/plugins, a potem włącz wtyczkę
  2. wrzuć załączony plik do folderu wp-content/mu-plugins
  3. dołącz kod do pliku functions.php aktualnie używanego motywu

Poprzedni

Akcja dnia: user_register

Następne

Masowa zmiana daty wpisów

2 komentarze

  1. Marcin Bazanowski

    Bardzo fajny filtr, aczkolwiek masz tam mały duży błąd :)

    $post to moze być albo obiekt WP_Post albo samo ID. Więc tak jak w codexie, trzeba sprawdzić z czym mamy do czynienia, co by nam się system nie wywalił, że chcemy się dostać do daty z int’a :D

    Pozdrawiam :)

    • Nie Marcinie, nie mam tam błędu. Pierwszą linijką funkcji, na której końcu znajduje się wywołenie filtra to:

      $post = get_post( $post );

      A chwilę póżniej sprawdzanie czy $post istnieje.

      Więc w tym konkretnym miejscu to zawsze jest obiekt.

      W innym przypadku, mógłbyś mieć rację ;-)

Oparte na WordPress & Theme by Anders Norén