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:
- 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' )
. - 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()}
.