【发布时间】:2015-03-24 20:52:57
【问题描述】:
使用 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']? -
为什么你的查询是
$myquery,而你循环的变量是$popularpost? -
你应该在wordpress.stackexchange.com问这个
-
尝试在 WP_Query 参数中设置
paged => 1或page => 1。 -
$instance['count'] 是 5,道歉是一个错字 $myquery 正在循环播放 - 不是热门帖子。上面的帖子现在更正了。我也尝试过 paged => 1 和 page => 1,但不幸的是仍然返回 120 个结果。