• 解決済 curono

    (@curono)


    記事の投稿者は<?php the_author(); ?>で取得できますが、記事を編集した人を取得するにはどうしたらいいでしょうか?

    記事の投稿者はAさんだが、更新したのはBさんというかんじです

    以上、よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • wp_posts テーブルに更新者の情報はなさそうなので、更新者のIDをカスタムフィールドに保存します。
    既存の投稿でまだ保存していないときは、投稿者を更新者としています。

    ★functions.php

    add_action( 'publish_post', 'save_edit_user', 1 ,10);
    function save_edit_user($post_id) {
        update_post_meta( $post_id, '_edit_post_user', get_current_user_id() );
    }

    ★single.php

    <?php
    $edit_user_id = get_post_meta(get_the_ID(),'_edit_post_user',true);
    echo '更新者:';
    if ($edit_user_id > 0)  the_author_meta( 'user_login', $edit_user_id );
    else                    the_author();

    トピック投稿者 curono

    (@curono)

    なるほど。カスタムフィールドに情報を保持させて編集者を取得する方法で代用できるのですね。すばらしいアイデアありがとうございます。

    ただ、フックのpublish_postなんですがいくら更新してもカスタムフィールドに_edit_post_userが作られません。

    そこで、試しにsave_postに変更してみたら作成できました。

    バグかなんかでしょうかね。。。

    カスタムフィールドの key を ‘save_post’ にしたのですか?
    先頭に ‘_’ が付いているカスタムフィールドは、通常のカスタムフィールドとして管理画面には表示されません。表示されないだけで、きちんと機能しているのではないですか?
    無理に key に ‘_’ を付ける必要もないのですが、意味不明なカスタムフィールドが表示されるとイヤかなと思い ‘_’ を付けただけです。

    もし、ポストがカスタム投稿タイプならフックは、’publish_{post_type}’ にする必要があります。

    追:
    フックが ‘save_post’ ということですね。それの方がいいかもしれません。

    トピック投稿者 curono

    (@curono)

    とりあえずフックがsave_postできました。

    どうもありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「記事の投稿者でなく編集者を取得したい」には新たに返信することはできません。