web-dev-qa-db-ja.com

20を超えるコメントがある投稿をクエリする

特定の数を超えるコメント数で投稿をクエリする簡単な方法はありますか?

たとえば、20を超えるコメントがある投稿のみを一覧表示します。

$args = array(
    'post_type' => 'post',
    'post_status' => 'publish',

    'posts_per_page' => 25,

    // Something like this
    'comments_query' => array(
        array(
            'value' => 20,
            'type' => 'numeric',
            'compare' => '>=',
        ),
    )
);

$query = new WP_Query( $args );
2
Swen

WP_Queryは現在comment_countフィールドによる問い合わせをサポートしていませんが、この機能のためのパッチが提案されています。 Tracチケット#28399 を参照してください。 更新:#28399は修正されていてバージョン4.9になるはずです

それまでの間、これは this 投稿からの情報に基づいた回避策です。これにより、クエリのwhere句が変更され、制限が可能になります。コメント数に基づいて返された投稿数。

このコードをあなたのfunctions.phpまたはプラグインに追加してください。

// Modify the where clause to include only posts with 20 or more comments
function wpse_post_where_comment_count( $where ) {
    // Don't fire more than once:
    remove_filter( current_filter(), __FUNCTION__ );

    return "{$where} AND {$GLOBALS['wpdb']->posts}.comment_count >= 20";
}

このコードをテンプレートに追加してください。

add_filter( 'posts_where', 'wpse_post_where_comment_count', 10, 1 );
$query = new WP_Query( [
    'post_type'      => 'post',
    'post_status'    => 'publish',
    'posts_per_page' => 25,
] );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) { $query->the_post();
        the_title();
    }
}
2
Dave Romsey