web-dev-qa-db-ja.com

投稿作成日を取得する方法

特定の投稿の最初のリビジョンを取得して日付を取得するとします。

どうやってするか?

4
Max

post_datepost_date_gmtは、投稿が作成された日付として機能します。スケジュールされた投稿の場合、これは投稿が公開される予定の日付になります。

予定された投稿が追加された日付を決定するための信頼できるネイティブの方法はありません。スケジュールされた投稿の場合、投稿が最初に追加されたときに対応するので、post_modifiedまたはpost_modified_gmtの日付を試すことができます。覚えておく必要がありますが、投稿が変更されるとこの日付が変わるため、これは信頼できません。

もう1つの(信頼できない)方法は、リビジョンを使うことです。改訂を有効にしている場合、投稿がスケジュールまたは公開されると、投稿の改訂が保存されます。予定されたボタンがクリックされたときに予定された投稿の後に保存されるその改訂は、予定されたボタンがクリックされた現在の投稿日を保持します。下の写真をチェック

enter image description here 

これを行う信頼できる方法が必要な場合は、スケジュールされたボタンがクリックされて投稿をスケジュールしたときの正確な時間を節約するための独自のカスタム関数を作成する必要があります。

5
Pieter Goosen

私は同じ情報を必要としていて、ちょうど自分で考え出しました。 @dipak_pustiが示唆しているように、postmetaテーブルから最初の_wp_old_dateを取得するためにカスタムクエリを作成する必要があります。次の文を実行します。

global $wpdb;
$post_id = 1234;
$meta_key = '_wp_old_date';
$post_create_date = $wpdb->get_var( $wpdb->prepare(
    "
        SELECT MIN($wpdb->postmeta.meta_value) as post_create_date
        FROM $wpdb->postmeta
        WHERE $wpdb->postmeta.post_id = %d
            AND $wpdb->postmeta.meta_key = %s
    ",
    $post_id,
    $meta_key
) );

if(is_null($post_create_date)) {
    $post_create_date = get_the_date('Y-m-d', $post_id);
}

echo "<p>Post create date is: {$post_create_date}</p>";

注:_wp_old_dateNULL(これは公開日が変更されていないことを意味します)の場合は、get_the_date('Y-m-d', $post_id)の日付を使用できます。

1
haze

私があなたと同じ種類のケースで立ち往生していたとき、私は日付を表すメタ値を持つメタキー_wp_old_dateを見つけました。

これをグーグルすることで、PostやObjectが変更されたときに古い値を格納するための関数が使われていることがわかりました。

https://wpseek.com/function/wp_check_for_changed_dates/ /

私は知っています、これは非常に遅い答えですが、それは将来他の人を助けるかもしれません。 :)

0
dipak_pusti

get_the_date(); を使用して、フィールド "Published on .."のメタボックス "Publish"に定義されている日付を取得します。これは通常、ユーザーが変更しない限り、ユーザーが投稿を作成した日付です。

0
Fleuv