php - 尽管在 wp_query 中,WordPress 仍忽略 LIMIT/posts_per_page

标签 php mysql wordpress

使用 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

关于php - 尽管在 wp_query 中,WordPress 仍忽略 LIMIT/posts_per_page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150190/

相关文章:

php:计算字符串在 mySql 数组中出现的次数

javascript - 刷新后将轮播保持在同一张幻灯片上

mysql - 多表Mysql JOIN

html - 选择类属性值以 "xx"开头的多个类

html - Contact Form 7 插件提交按钮

php - PDO fetch 语句之间是否存在性能差异?

php - 错误101(net::ERR_CONNECTION_RESET):在PHP中

MySQL row_count() 行受影响

MySql 连接字符串 localhost

php - 如何将 IBM Watson cURL 命令转换为 PHP