特定の数を超えるコメント数で投稿をクエリする簡単な方法はありますか?
たとえば、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 );
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();
}
}