こんにちは
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' );
ishitaka様
こんにちは、お世話になっております。
ご回答誠にありがとうございます。
いただいた内容をfunctions.phpに記載したところ、
予約投稿や過去日程の投稿時に無事公開日を表示することができました。
ただ、「すぐに公開する」際の表示がおかしくなってしまいました。
例えば今日10/27でしたら、「-0001.11.30.Mon」と表示されます。
数分でもずらせば、正常な日付を表示することができるのですが・・・。
もう少し探ってみます、ありがとうございました。
ただ、「すぐに公開する」際の表示がおかしくなってしまいました。
例えば今日10/27でしたら、「-0001.11.30.Mon」と表示されます。
すみません、どこの表示のことか分かりません。
もう少し具体的に教えてもらえませんか。
とりあえず、サンプルコードではプレビューの場合のみの処理なので、他には影響しないと思いますが・・・。
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' );
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' );
ishitaka様
「すぐに公開する」際も、無事日付を表示することができました!
とても助かりました、ありがとうございました。