WordPress vám dává možnost změnit datum zveřejnění příspěvku a poskytuje vám funkci get_the_date() pro snadné načtení na frontend. Co se však stane, když z nějakého důvodu budete chtít získat přístup ke skutečnému datu, kdy byl příspěvek vytvořen, a ne k tomu, které jste nastavili ručně?
Podle všeho si WordPress při každé změně uchovává meta klíč _wp_old_date
, který ukládá staré datum. To můžete snadno načíst pomocí get_post_meta()
. Takže echo get_post_meta( get_the_ID(), '_wp_old_date' );
by vám dalo pole se všemi starými daty:
array (size=3) 0 => string '2020-03-14' 1 => string '2020-03-21' 2 => string '2020-03-11'
Podle dokumentace get_post_meta()
přijímá třetí, nepovinný parametr, který pokud je nastaven na true, vrátí pouze první hodnotu. Datum vytvoření příspěvku tedy můžeme snadno získat jednoduše pomocí get_post_meta( get_the_ID(), '_wp_old_date', true );
.
Tady je však háček: Pokud jste datum příspěvku nikdy nezměnili, bude _wp_old_date
prázdný. Abychom se s tím vypořádali, musíme zkontrolovat, zda je _wp_old_date
prázdný, a pokud ano, vrátíme se k našemu známému get_the_date()
. Pokud má hodnotu, můžeme ji vrátit, přičemž musíme mít na paměti dvě věci:
- Pravděpodobně bychom chtěli zachovat formát zobrazení, který je nastaven správcem v možnostech WordPressu. Ten můžeme načíst pomocí jednoduchého
get_option( 'date_format' )
. - Měli bychom také použít date_i18n, abychom se ujistili, že datum načteme v lokalizovaném formátu.
Takže nakonec by funkce, která by byla odolnější vůči budoucnosti, pravděpodobně vypadala nějak takto:
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()}
.