サポート » 使い方全般 » 記事の最初のリビジョン(執筆開始)日時を取得したい

  • 解決済 KonpeitoRO

    (@konpeitowp)


     お世話になっております。
     WordPress で投稿や固定ページの執筆開始(最初のリビジョン)日時を取得して、ページに表示させたいのですが、どのようにすれば実現できますか?プラグインなしで、テンプレートタグなどで実装するのが理想です。
     テーマは「Cocoon 2.5.4.2」で、WP.Ver6.1.1です。また、子テーマを使っています。PHPバージョンは 8.1.13 で使っています。
     ご教示いただければ幸いです。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 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 等を参照すれば表示できないでしょうか。

    こんにちは

    wp_get_post_revisions() を使うのもいいかもです。

    サンプル コードを書いてみました。

    $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 );
    }
    トピック投稿者 KonpeitoRO

    (@konpeitowp)

     @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というコンテンツの表示を制御する(?)テンプレートににたどり着きました。
     これはコードを記述するファイルが間違っているのでしょうか?面倒な質問となりますが、ご教示いただければ幸いです。
    詳細なシステム情報

    • この返信は1年、 5ヶ月前にKonpeitoROが編集しました。理由: 不足説明を追加

    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 );
    }
    トピック投稿者 KonpeitoRO

    (@konpeitowp)

     @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 のコミュニティには感謝です。
     今後ともよろしくお願いいたします。

    • この返信は1年、 5ヶ月前にKonpeitoROが編集しました。理由: 画像へのリンクがおかしくなっていたので修正
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「記事の最初のリビジョン(執筆開始)日時を取得したい」には新たに返信することはできません。