【WordPress】特定のmetaデータのある記事のコメントを表示しない方法

wordpressコメントmetaデータでフィルタ Wordpress
wordpressコメントmetaデータでフィルタ

最新のコメント一覧などで、特定の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 );

コメント

タイトルとURLをコピーしました