使用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)也有同样的问题。
我很难理解为什么会这样。