Wp_queryの多数の例を見てきましたが、これを理解することはできません。私が比較していたものがメタ値だった場合、私はメタクエリにすることができましたが、どうやらあなたは非メタ値と比較することはできません?
これは私がそれがうまくいくと思ったものです:
$commentpost = new WP_Query( array( 'key' => 'comment_count',
'value' => '0',
'compare' => '>',
'orderby' => 'comment_count',
'order' => 'DESC',
) );
任意の助けがいただければ幸いです。
WP_Query
クラスは、orderby
をcomment_count
にネイティブに使用することができますが、それに基づいてクエリするのと同じことはありません。しかしposts
-テーブルを見ると、変更する必要があまりないことがわかります。
ID | post_author | post_date | post_date_gmt | post_content | post_title | post_excerpt | post_status | comment_status | ping_status | post_password | post_name | to_ping | pinged | post_modified | post_modified_gmt | post_content_filtered | post_parent | guid | menu_order | post_type | post_mime_type | comment_count
ですから、私たちができることは、クエリをインターセプトしてposts_where
- filter内のWHERE
句を変更することです。
<?php
defined( 'ABSPATH' ) or exit;
/* Plugin Name: (#121083) Query WHERE comment count not is 0 */
add_filter( 'posts_where', 'wpse121083WhereCommentCountNotNull' );
function wpse121083WhereCommentCountNotNull( $where )
{
// Don't fire more than once:
remove_filter( current_filter(), __FUNCTION__ );
# @TODO Add abort clauses/cases here
return "{$where} AND {$GLOBALS['wpdb']->posts}.comment_count != 0";
}
クエリを傍受したくない場合のように、まだビットを入力する必要があります。それはテストされていないことを心に留めておいてください。