WordPress daje ci możliwość zmiany daty publikacji postu i zapewnia ci get_the_date(), aby łatwo pobrać go na frontend. Co się jednak stanie, jeśli z jakiegoś powodu chcesz uzyskać dostęp do rzeczywistej daty utworzenia postu, zamiast tej, którą ręcznie ustawiłeś?

Najwyraźniej WordPress przechowuje klucz meta _wp_old_date, który przechowuje starą datę za każdym razem, gdy się zmienia. Możesz łatwo odzyskać to za pomocą get_post_meta(). Tak więc, echoing get_post_meta( get_the_ID(), '_wp_old_date' ); da ci tablicę ze wszystkimi starymi datami:

array (size=3) 0 => string '2020-03-14' 1 => string '2020-03-21' 2 => string '2020-03-11'

Zgodnie z dokumentacją, get_post_meta() akceptuje trzeci, opcjonalny parametr, który, jeśli ustawiony na true, zwróci tylko pierwszą wartość. Tak więc, możemy łatwo uzyskać datę utworzenia postu po prostu używając get_post_meta( get_the_ID(), '_wp_old_date', true );.

Jest jednak pewien haczyk: Jeśli nigdy nie zmieniłeś daty postu, _wp_old_date będzie pusty. Aby sobie z tym poradzić, musimy sprawdzić, czy _wp_old_date jest puste, a jeśli tak, wracamy do znanego nam już get_the_date(). Jeśli ma wartość, możemy ją zwrócić, pamiętając o dwóch rzeczach:

  1. Prawdopodobnie chcielibyśmy zachować format wyświetlania, który jest ustawiony przez Admina w opcjach WordPressa. Możemy pobrać to za pomocą prostego get_option( 'date_format' ).
  2. Powinniśmy również użyć date_i18n, aby upewnić się, że pobieramy datę w zlokalizowanym formacie.

Tak więc, w końcu, bardziej przyszłościowa funkcja prawdopodobnie wyglądałaby coś takiego:

function get_creation_date( $entry_id = '' ) { $post_id = $entry_id ? $entry_id : get_the_ID(); $old_date = get_post_meta( $post_id, '_wp_old_date', true ); return $old_date ? // If the old date exists date_i18n( get_option( 'date_format' ), // Retrieve the date in localized format strtotime( $old_date ) ) : // and use the display format set on WordPress options get_the_date(); // else, use get_the_date()}

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.