而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
因此,我们可以做的是拦截查询并修改
WHERE
中的子句
posts_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";
}
您仍然需要填写一些位,比如您不想拦截查询的情况。请记住,它没有经过测试。