konpeitowp さん、こんにちは。
投稿のリビジョンは、 リビジョンの保存方法 ( https://ja.wordpress.org/support/article/revisions/#%e3%83%aa%e3%83%93%e3%82%b8%e3%83%a7%e3%83%b3%e3%81%ae%e4%bf%9d%e5%ad%98%e6%96%b9%e6%b3%95 ) に記載があるように post_name に {親投稿 ID}-revision(-#) の形で保存されています。
たとえば、投稿ID が 10 の最初のリビジョンであれば、’10-revision-v1′ のような post_name で保存されていますので リビジョンをスラッグで検索して post_date や post_modified 等を参照すれば表示できないでしょうか。
サンプル コードを書いてみました。
$revisions = wp_get_post_revisions( null, array( 'orderby' => 'date', 'order' => 'ASC', 'posts_per_page' => 1 ) );
if ( $revisions ) {
$revision = current( $revisions );
echo get_the_date( '', $revision->ID );
}
@ko-chan さん、
@ishitaka さん、ご返信いただきありがとうございます。
プログラミング初心者なりにご教示いただいた内容を参考に、プログラムを書いてみましたが、管理画面で投稿や固定ページは表示がおかしくなり本文は表示されませんでした。
先ほど @ishitaka さんがご提示くださったサンプルコード、手始めに子テーマ(Cocoon Child)のtmp/content.phpにコピー&ペーストさせていただきましたが、自分なりに書いたコードと同様の症状が発生しました。
なお、コード追加後のエラー表示(共通)については、画面キャプチャはこちらに保存してあり、またエラー表示は当該コードをコメントアウトではなくまるごと削除すると、解消する状態です。
<?php //最初のリビジョン
$revisions = wp_get_post_revisions( null, array( 'orderby' => 'date', 'order' => 'ASC', 'posts_per_page' => 1 ) );
if ( $revisions ) {
$revision = current( $revisions );
echo get_the_date( '', $revision->ID );
}
やはり(Cocoonに限らず)完成されているテーマはPHPファイルのカスタマイズが階層が深いなどで自作と比べて分かりにくいと感じました。Cocoonのそれらしきテンプレートファイルを開いてみると、tmp/content.phpというコンテンツの表示を制御する(?)テンプレートににたどり着きました。
これはコードを記述するファイルが間違っているのでしょうか?面倒な質問となりますが、ご教示いただければ幸いです。
詳細なシステム情報
PHP の開始タグと終了タグ (<?php と ?>) が正しくないのではないでしょうか?
下記のどちらかで試してみてはどうでしょうか。
<?php //最初のリビジョン
$revisions = wp_get_post_revisions( null, array( 'orderby' => 'date', 'order' => 'ASC', 'posts_per_page' => 1 ) );
if ( $revisions ) {
$revision = current( $revisions );
echo get_the_date( '', $revision->ID );
}
?>
または
//最初のリビジョン
$revisions = wp_get_post_revisions( null, array( 'orderby' => 'date', 'order' => 'ASC', 'posts_per_page' => 1 ) );
if ( $revisions ) {
$revision = current( $revisions );
echo get_the_date( '', $revision->ID );
}
@ishitaka さん、度々ありがとうございます。
仰るとおりPHPの閉じタグを忘れていたのが原因でした。ご提示いただいた前者
<?php //最初のリビジョン
$revisions = wp_get_post_revisions( null, array( 'orderby' => 'date', 'order' => 'ASC', 'posts_per_page' => 1 ) );
if ( $revisions ) {
$revision = current( $revisions );
echo get_the_date( '', $revision->ID );
}
?>
をtmp/content.phpに挿入すると、無事解決しました。
最初のリビジョンの日付表示の様子
また、 @ko-chan さんもお力を貸していただきありがとうございました。
プログラミング初心者の私はまだまだ勉強中ですが、WordPress のコミュニティには感謝です。
今後ともよろしくお願いいたします。
-
この返信は3年前に
KonpeitoROが編集しました。理由: 画像へのリンクがおかしくなっていたので修正