web-dev-qa-db-ja.com

管理上、特定のユーザーのコメントを表示するにはどうすればいいですか?

ユーザーセクションから、私は彼らの投稿へのリンクを見ることができますが、彼らのコメントは見ることができません。私がコメントに行くとき、特定のユーザーによってコメントだけをフィルターにかける直接的な方法はないようです。どうやってするの? (そのような基本的な機能はどこかにあるはずです、私はそれを見つけることができません。)

2
Borek Bernard

残念ながら、これには直接的な方法はありません。

WP_List_Tableを拡張して追加の列を追加する必要があります。これは関数の例です。

function wpse_get_comments_by_user( $user_ID )
{
    global $wpdb;

    $rows = $wpdb->query( $wpdb->prepare(
         "
            SELECT * 
            FROM %s
            WHERE user_id = %d
         "
        ,$wpdb->comments
        ,(int) $user_ID
    ) );

   return $rows;
}

上記の↑関数は、あなたが彼女/彼のIDで指定したユーザによるコメントのためにあなたにすべてのDB行を返します。

あなたはそれから例えばのために行き、リストすることができますforeachループ内のすべての投稿:

foreach ( wpse_get_comments_by_user( $user->ID ) as $comment )
{
    $post_link = get_permalink( $comment->comment_post_ID );

    echo "<a href='{$post_link}'>";
        // apply the excerpt filters in case the comment content is too long
        echo apply_filters( 'the_excerpt', $comment->comment_content );
        // Add the date
        echo $comment->comment_date;
    echo '</a>';
}

実際の問題は、ユーザーごとにコメントを一覧表示できる管理画面がないことです。そのため、current_user_can( 'manage_options' );の背後にあるコンテンツを隠すリンクとページテンプレートを使用すると、より簡単になると思います。

1
kaiser