• 解決済 unicococo

    (@unicococo)


    予約投稿や、過去の日付で投稿する記事をプレビューで確認する際、
    記事ページの日付が本日のものになってしまいます。
    日付はget_post_timeで表示しています。

    投稿完了後、実際のページでは公開日が表示されますが、
    プレビュー時も実際の公開日を表示することはできないでしょうか。

    専門的知識がないため、初歩的な質問かもしれず恐縮ですが、
    お力をかしていただけますと幸いです。
    よろしくお願いいたします。

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • こんにちは

    the_preview フィルターフックでプレビューの投稿をフィルターできます。
    投稿日は現在時刻ですが、post_date_gmt には投稿日(GMT)が入っているのでそれを代入すればいいかなと思います。

    functions.php 等に、

    function my_the_preview( $post_preview ) {
    	$post_preview->post_date = get_date_from_gmt( $post_preview->post_date_gmt );
    	return $post_preview;
    }
    add_filter( 'the_preview', 'my_the_preview' );
    トピック投稿者 unicococo

    (@unicococo)

    ishitaka様

    こんにちは、お世話になっております。
    ご回答誠にありがとうございます。

    いただいた内容をfunctions.phpに記載したところ、
    予約投稿や過去日程の投稿時に無事公開日を表示することができました。

    ただ、「すぐに公開する」際の表示がおかしくなってしまいました。
    例えば今日10/27でしたら、「-0001.11.30.Mon」と表示されます。
    数分でもずらせば、正常な日付を表示することができるのですが・・・。

    もう少し探ってみます、ありがとうございました。

    ただ、「すぐに公開する」際の表示がおかしくなってしまいました。
    例えば今日10/27でしたら、「-0001.11.30.Mon」と表示されます。

    すみません、どこの表示のことか分かりません。
    もう少し具体的に教えてもらえませんか。

    とりあえず、サンプルコードではプレビューの場合のみの処理なので、他には影響しないと思いますが・・・。

    トピック投稿者 unicococo

    (@unicococo)

    ishitaka様

    ご返信ありがとうございます。
    言葉足らずで申し訳ありません。

    もう少し具体的に教えてもらえませんか。

    こちら、プレビュー時の日付の表示部分です。
    予約投稿や過去日程の投稿時は公開日を表示することができたのですが、
    「すぐに公開する」のままプレビューすると、「-0001.11.30.Mon」と
    表示するようになってしまいました。

    「すぐに公開する」の状態だと、まだ post_date_gmt が設定されていない状態(0000-00-00 00:00:00)でした。よって設定されているかどうかチェックする処理を追加しました。
    失礼しました。

    修正版

    function my_the_preview( $post_preview ) {
    	$date = get_date_from_gmt( $post_preview->post_date_gmt );
    	if ( strtotime( $date ) !== false ) {
    		$post_preview->post_date = $date;
    	}
    	return $post_preview;
    }
    add_filter( 'the_preview', 'my_the_preview' );
    • この返信は8年、 9ヶ月前にishitakaが編集しました。
    トピック投稿者 unicococo

    (@unicococo)

    ishitaka様

    お世話になっております。
    お返事が遅くなってしまい申し訳ありません。

    ご返信ありがとうございました。
    いただいたコードをfunctions.phpに記載してみましたが、
    状態変わらずでした。

    度々すみません。間違えました。(^^;
    あと、strtotime( ‘0000-00-00 00:00:00’ ) の戻り値が PHP バージョンによって違うようなので、strtotime を使わずに単純に文字列として比較するようにしてみました。

    function my_the_preview( $post_preview ) {
    	if ( $post_preview->post_date_gmt != '0000-00-00 00:00:00' ) {
    		$post_preview->post_date = get_date_from_gmt( $post_preview->post_date_gmt );
    	}
    	return $post_preview;
    }
    add_filter( 'the_preview', 'my_the_preview' );
    トピック投稿者 unicococo

    (@unicococo)

    ishitaka様

    「すぐに公開する」際も、無事日付を表示することができました!
    とても助かりました、ありがとうございました。

8件の返信を表示中 - 1 - 8件目 (全8件中)

トピック「プレビュー時、当日以外の公開日が反映されない」には新たに返信することはできません。