使用 WP 查询:
$myquery = new WP_Query( array('posts_per_page' => $instance['count'], 'meta_key' => 'mywp_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC' ) );
让我们得到请求:
echo $myquery->request;
它返回:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND ( wp_postmeta.meta_key = 'mywp_post_views_count' ) GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value+0 DESC LIMIT 0, 5
这在 MySQL 中正常运行,给了我 5 个帖子 ID。但是WordPress返回120个结果!
echo '$myquery = ' . count( $myquery->posts );
返回: $myquery = 120
我在循环时检查过:
while ( $myquery->have_posts() ) : $myquery->the_post();
它确实输出了 120 个独特的帖子,而不是预期的 5 个帖子。
我可以确认:
echo 'Count: '.$instance['count'];
返回: 计数: 5
我正在运行最新的稳定WordPress(4.1),除了ACF(高级自定义字段)之外没有插件 - 只是我的自定义主题。禁用此插件不起作用,默认的WordPress主题(2015)也有同样的问题。
我正在努力理解为什么会发生这种情况。
检查$instance['count']
是否具有所需的posts_per_page值。例如,如果你想要 5 个帖子,$instance['count']
应该是= 5
;
$instance['count'] = 5; //just for the sake of the test
我知道
这是 6 年前问过的,但这仍然让我发疯,所以也许它会帮助某人。我需要两个选项才能使posts_per_page工作:
'ignore_sticky_posts' => true,
'paged' => 1,
我尝试单独使用它们,但没有帮助,只有当两者都设置好时,一切正常。
对于解析,只需定义数组即可WP_Query!喜欢这个:
$args=[
'category_name' => '',
'posts_per_page' => $home_post_count,
'paged' => $paged];
$query = 新WP_Query( $args);