Envato Elements - pobierasz co chcesz, ile chcesz

Dziś będzie o tym, jak dodać do strony na WordPressie informacje o dacie ostatniej aktualizacji, i to w taki sposób, by data ta była zaciągana automatycznie, bez potrzeby ręcznego wypełniania jakiś dodatkowych pól – WordPress i tak przechowuje w bazie danych tego typu informacje.

Data ostatniej aktualizacji wpisu w WordPressie

Z racji tego, że sporo wpisów, które ukazują się na stronie WebInsider.pl to poradniki techniczne, a więc często data, która określa kiedy powstały dane treści ma szczególne znaczenie, bo chyba każdemu zależy, by prezentowane rozwiązanie nie okazało się tylko „niepotrzebną stratą czasu”.

Dlatego przy niektórych wpisów możecie trafić nie tylko na datę powstania wpisu, ale i date ostatniej aktualizacji, dzięki czemu od razu wiadomo, czy prezentowane treści były w jakiś sposób aktualizowane, co daje większą szansę, że zadziałają rozwiązania z wpisów teoretycznie opublikowanych nawet kilka lat temu (dzięki aktualizacji treści):

Cała operacja sprowadza się do wykorzystania duetu w postaci motywu potomnego i kilkunastu linijek kodu w pliku functions.php:

function webinsider_wp_last_modified_post_date( $the_date ) {
    if ( get_post_type() === 'post' ) {
        $post_time = get_post_time( 'd.m.Y', 'His' );
        $post_modified_time = get_post_modified_time( 'd.m.Y', 'His' );
        if ( $post_modified_time !== $post_time ) {
            $date = sprintf( __( esc_html( get_post_time( 'd.m.Y' ) ) . ' (aktualizacja %s)' ), esc_html( get_post_modified_time( 'd.m.Y' ) ) );
        }
        else {
            $date = sprintf( __( esc_html( get_post_time( 'd.m.Y' ) ) ) );
        }
        return $date;
    }
}
add_action( 'get_the_date', 'webinsider_wp_last_modified_post_date' );
add_action( 'get_the_time', 'webinsider_wp_last_modified_post_date' );

Powyższy kod sprawdza czy data publikacji wpisu jest różna od daty ostatniej modyfikacji, i jeśli tak jest, to wtedy oprócz daty publikacji doda fragment odpowiedzialny za wyświetlenie informacji o dacie ostatniej aktualizacji (daty wyświetlane są w formacie 17.03.2017).

Oczywiście można go zmodyfikować by porównywał również czas, ale moim zdaniem to generuje tylko niepotrzebne zamieszanie, bo wystarczy nawet w chwilę po publikacji zmienić jakąś literówkę, czy jakieś ustawienia dotyczące wpisu i już będziemy mieli dodatkową informację o aktualizacji. Stąd – moim zdaniem – porównywanie dat jest sensowniejszym rozwiązaniem.

Kilka dodatkowych modyfikacji

W komentarzach pojawiło się kilka pytań dotyczących modyfikacji tego kodu, dlatego uznałem, że warto też przy okazji odpowiadania na te komentarze zaktualizować artykuł, bo może nie każdy czyta komentarze.

Data aktualizacji również dla stron

By wyświetlić datę aktualizacji również dla stron należy zmodyfikować linijkę z warunkiem „if” w powyższym kodzie:

if ( ( get_post_type() === 'post' ) || ( get_post_type() === 'page' ) ) {

Więcej informacji na ten temat znajdziecie w WordPress Codex (Function Reference/get post types).

Zmiana języka dla daty

Z racji tego, że mamy tu obsługę formatowania daty zgodną z PHP, to nic nie stoi na przeszkodzie by zmienić format np. na „10 października 2018”. Przynajmniej w teorii wystarczy zamienić „d.m.Y” np. na „j F Y”:

get_post_modified_time( 'j F Y' )

Problem w tym, że spowoduje to wyświetlanie słownych składników daty w języku angielskim, niezależnie od ustawień regionalnych w WordPressie.

By wyświetlać te elementy zgodnie z językiem ustawionym w WordPressie należy przekazać do funkcji dodatkowe parametry:

get_post_modified_time( 'j F Y', false, null, true )

Modyfikację wystarczy przeprowadzić w linijkach z „sprintf”.

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Młody Szymon powiedział tacie o promocji dla czytelników WebInsider.pl i zaoszczędzili 80% na księgowości internetowej wFirma
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Monika ćwiczy przed kongresem ko..., ale zapisała się do Newslettera WebInsider.pl, choć... i tak nic nie widzi