web-dev-qa-db-ja.com

カスタム投稿タイプのコメントが一般公開されないようにする

コメントをサポートするCPTがあります。このCPTは内部使用のみを目的としています。ただし、コメントは[最近のコメント]デフォルトウィジェットに表示されます。 RSSフィードにも表示されます。

CPTのコメントがウィジェットやフィードなどに表示されないようにする簡単な方法はありますか?

ありがとうございました

2
smartcat

最近のコメントウィジェットからカスタム投稿タイプのコメントを削除する

最近のコメントウィジェットの引数はwidget_comments_argsフィルターを使ってカスタマイズできます。コメントが含まれる投稿タイプをカスタマイズするには、$post_type変数をカスタマイズします。

$post_type関連するコメントを取得する投稿タイプまたは投稿タイプの配列。任意の値に一致するように 'any'を渡します。デフォルトは空です。

デフォルトでは、すべての投稿タイプのコメントが含まれます。次のコードは、投稿からのコメントだけが表示されるように、$post_typepostのみを含む配列に設定します。追加の投稿タイプを含めるには、それらを単に配列に追加します。

add_action( 'widget_comments_args', 'wpse_widget_comments_args' );
function wpse_widget_comments_args( $args ) {
    $args['post_type'] = [
        'post',
    ];

    return $args;
}

RSSコメントフィードからカスタム投稿タイプのコメントを削除する

このコードスニペット(見つかった解決策に基づく here )を使用すると、RSSコメントフィード(http://example.com/comments/feed)からbookおよびproduct投稿タイプに関連するコメントを削除できます。 comment_feed_whereフィルタを使用してcomments RSSクエリのwhere節を変更することによって機能します。

add_filter( 'comment_feed_where', 'wpse_comment_feed_where' );
function wpse_comment_feed_where( $where ) {
    return $where . " AND wp_posts.post_type NOT IN ( 'book', 'product' )";
}
1
Dave Romsey