サポート » 使い方全般 » リビジョンの表示内容を投稿ページに表示したい

  • 解決済 atikuti

    (@atikuti)


    複数人で記事を管理しており、その流れをリビジョンで把握しています。

    このリビジョンの情報(「名前」「日付」)を投稿ページに表示する方法はありますでしょうか?(リンクなどは必要ありません)

    どなたかご教授願います。

15件の返信を表示中 - 1 - 15件目 (全17件中)
  • モデレーター jim912

    (@jim912)

    wp_list_post_revisions にて、リビジョンの取得ができるようなので、得られた配列をループして表示する事が可能かと思われます。

    トピック投稿者 atikuti

    (@atikuti)

    ご教授いただいておりながら時間が空いてしまい大変失礼いたしました。

    お教えいただいたページに習い、
    「functions.php」に「Source」部分の下記コードを書き込んでみましたが、
    エラーになってしまいました。

    エラーにならなければ「wp_get_post_revisions( $post_id = 0, $args = null )」で
    表示できるのかな?と思っておりますが、あまり理解ができておりません。

    申し訳ありませんが、もう少し詳しくお教えいただけないでしょうか。
    大変お手数をお掛けいたしますが、どうぞよろしくお願いいたします。

    以下、エラーになった「Source」部分です。

    function wp_get_post_revisions( $post_id = 0, $args = null ) {
    if ( ! WP_POST_REVISIONS )
    return array();
    if ( ( !$post = get_post( $post_id ) ) || empty( $post->ID ) )
    return array();

    $defaults = array( ‘order’ => ‘DESC’, ‘orderby’ => ‘date’ );
    $args = wp_parse_args( $args, $defaults );
    $args = array_merge( $args, array( ‘post_parent’ => $post->ID, ‘post_type’ => ‘revision’, ‘post_status’ => ‘inherit’ ) );

    if ( !$revisions = get_children( $args ) )
    return array();
    return $revisions;
    }

    トピック投稿者 atikuti

    (@atikuti)

    だいぶ時間が空いてしましましたが、以下のコードでリストは表示できました。
    <?php wp_list_post_revisions(); ?>

    が、この表示は今までのすべてが表示されてしいます。
    最新の1件のみ表示するためにはどのようにしたらよろしいでしょうが?
    どなたかご教授いただけましたら助かります。

    どうぞよろしくお願いいたします。

    トピック投稿者 atikuti

    (@atikuti)

    とりあえず見た目のみですが、以下のスタイルで対応いたしました。(不必要な情報を削除)
    もしできれば書式などを変更したいので、
    <?php wp_list_post_revisions(); ?>のパラメータの設定方法がありましたら、
    ご教授願います。

    ▼以下、強引なCSSです。
    —–
    .post-revisions li {
    display:none;
    }
    .post-revisions li a {
    pointer-events:none;/*リンクを非リンクに変える*/
    cursor:default;/*マウスカーソルを矢印のまま変えない*/
    text-decoration:none;/*下線を消す*/
    }

    .post-revisions li.firstChild {
    display:block;
    }

    wp_get_post_revisions を使うと、新しい順に取得、一件のみ取得、表示させるのでなく投稿データを取得(スタイルを自分でつけて表示)、など御希望に合わせやすいと思います。
    取得条件の指定方法は WP_Query と同じですので WP_Query の説明ページを見てください。

    トピック投稿者 atikuti

    (@atikuti)

    gblsm様
    早速のご連絡およびご教授をありがとうございます。
    基本知識が乏しいため「WP_Query」の指定方法がうまくいきません。
    具体的な記述方法をご教授いただけないでしょうか。

    大変お手数をお掛けいたしますが、どうぞよろしくお願いいたします。

    「うまくいきません」だと、状況がいろいろ考えられるので具体的にお返事しにくいです。そのため、どのように表示したくて、何を試して、どうなったか(どうならなかった、ではなく)を教えてください。

    トピック投稿者 atikuti

    (@atikuti)

    gblsm様
    ご連絡ありがとうございます。
    説明不足で申し訳ありません。
    また知識不足のため説明がうまくできませんが、下記のような状態になります。
    何卒よろしくお願いいたします。

    <目的>
    最終的に表示したいのは、
    記事ページにて最終更新者という項目を表示したいのです。
    従来は下記のコードで表示していました。

    <?php the_modified_author(); ?>(<?php the_modified_date(); ?> <?php the_modified_time(); ?>)

    ところが上記コードでは
    ※プラグイン「Custom Post Order」で並び替えを行うと
    「<?php the_modified_time(); ?>」に更新日は反映されるのですが、
    「<?php the_modified_author(); ?>」には並び替えを行ったユーザー名は反映されません。

    管理画面で確認するとリビジョンには並び替えを行ったユーザー名が残っています。
    そこでリビジョンの名前が記事ページに表示出来たらと考えています。

    <試したこと>
    ・<?php wp_list_post_revisions(); ?> ではログインしていればリストが表示可能。
     しかし今回はログインしてない状態で表示する必要があるため没。

    ・「wp_get_post_revisions」のテスト
     使い方がよく分からないので、いろいろ試しましたが無反応か画面が真っ白になってしまうのみでした。

    <希望>
    ・ログインしていない状態でも最終更新者としてリビジョンの情報から
     最新の「更新者名」と「日付」が記事ページで表示できることになります。

    方法やソースなどお解りになるようでしたら、
    お手数ですがお教えいただけましたら幸いです。
    どうぞよろしくお願いいたします。

    ところが上記コードでは
    ※プラグイン「Custom Post Order」で並び替えを行うと
    「<?php the_modified_time(); ?>」に更新日は反映されるのですが、
    「<?php the_modified_author(); ?>」には並び替えを行ったユーザー名は反映されません。

    ねんのため確認させてください。まず、プラグイン Custom Post Order は、このリンク先のものですね。
    https://wordpress.org/plugins/custom-post-order/
    そうだとして、「並び替えを行ったユーザー」というのは、管理画面の「設定 > Custom Post Order」の設定内容を変更したユーザー、でしょうか?

    トピック投稿者 atikuti

    (@atikuti)

    gblsm様
    ご連絡ありがとうございます。
    プラグインは下記のものを使用しております。
    https://wordpress.org/plugins/order-up-custom-post-order/
    version:2.2
    wordpress:3.5.1

    ドラッグで記事の順番を変更できるものです。
    各記事を確認すると、入力ボックスの右下にある最後の編集の
    日付は並び替えのものになりますが、編集者は変更されません。
    並び替えをした人の名前はリビジョンにしか残っていません。

    atikutiさん、記事を並べ替えるプラグインは他にもありますね。他のものへ変えて正常になるか確かめることはできませんか?
    WordPressのバージョンが(プラグインも)私の使っているものより古いので、ちょっと試してみるという訳にいきません。。。

    トピック投稿者 atikuti

    (@atikuti)

    gblsm様
    早速のご確認およびご連絡をありがとうございます。
    プラグインの件ですが、運用して数年経過しているサイトの為、
    プラグインの変更は非常にリスクを伴います。

    出来ましたら現状態で、リビジョンの情報を拾えたらと思うのですが、
    それがちゃんと表示できません。

    テスト用に複製サイトを作って、そちらで検証するのが良さそうですね。プラグインを変更せずに済む場合でも、何かしらコード修正が必要になると思います。

    一番新しいリビジョンから post_author(投稿の作成者の ID)を取り出して、その display_name(ブログ上の表示名)を表示する例です。動作確認していませんのでご注意ください。

    <div>the_modified: <?php the_modified_author(); ?> ( <?php the_modified_date(); ?> <?php the_modified_time(); ?> )</div>
    <div>
    <?php
    	$rev1 = wp_get_post_revisions( get_the_ID(), array( 'posts_per_page' => 1 ) );
    	if ( empty( $rev1 ) ) {
    		echo 'リビジョンがありません。';
    	} else {
    		$rev1 = reset( $rev1 );
    		$author = get_the_author_meta( 'display_name', $rev1->post_author );
    		echo 'revision author: ', $author;
    	}
    ?>
    </div>

    トピック投稿者 atikuti

    (@atikuti)

    gblsm様
    ご連絡、本当に有難うございます。
    お知らせいただきました内容で希望通りの表示が出来ました。
    いただきましたソースを拝見して「wp_get_post_revisions」
    (取得条件の指定方法など WP_Query の使い方)を
    勉強させていただきます。
    この度は本当に有難うございました。

15件の返信を表示中 - 1 - 15件目 (全17件中)
  • トピック「リビジョンの表示内容を投稿ページに表示したい」には新たに返信することはできません。