最新のコメント一覧などで、特定のmetaデータのある記事のコメントをフィルターして表示しない方法です。
comments_clauses フィルターでSQL句を追加する
下記は、未ログイン時に’block’というmeta情報が存在する記事のコメントを表示しないようにしています。
// 未ログイン時は非公開Postのコメントを非表示
function custom_comments_clauses($clauses, $comment_query) {
global $wpdb;
if (!is_user_logged_in()) {
$clauses['join'] .= " LEFT JOIN {$wpdb->postmeta} ON {$wpdb->comments}.comment_post_ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = 'block'";
$clauses['where'] .= " AND {$wpdb->postmeta}.meta_key is null";
};
return $clauses;
};
add_filter( 'comments_clauses', 'custom_comments_clauses', 10, 2 );
コメント