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:

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

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.