我正在尝试运行一个查询,该查询返回具有特定元键的给定值的所有帖子。我知道这不是我测试服务器上的任何帖子,但它报告找到了所有帖子,帖子数为7(有21篇帖子)。
我一直在看笔记here 还有这个问题here 但我无法得到一个合理的结果。
$args = array(
\'post_type\' => \'post\',
\'meta_query\' => array(
\'relation\' => \'AND\',// outcome is the same with and without this line
array(
\'key\' => \'perma\',
\'compare\' => \'=\',
\'value\' => "{$raw_perma}"
),
),
);
// create a custom query
$my_query = new \\WP_Query( $args );
echo $my_query->post_count; // 7 (regardless of $raw_perma value).
我想知道我做错了什么。“作为”;是否有包含此元键值对的帖子"E;似乎这应该是一个微不足道的问题来回答。
Update
建立
another question 并尝试了以下方法:
$args = array(
\'posts_per_page\' => -1,
\'post_type\' => \'post\',
\'meta_key\' => \'perma\',
\'meta_value\' => "{$raw_perma}"
);
这是可行的,尽管我不知道为什么会这样或那样。希望在答案中看到解释。
最合适的回答,由SO网友:Sally CJ 整理而成
这是可行的,尽管我不知道为什么会这样或那样。希望在答案中看到解释。
因为该代码设置posts_per_page
值到-1
这意味着没有限制,这与设置类似nopaging
到true
, 因此,所有找到的帖子都会被退回。
它报告找到了所有职位计数为7的职位(有21个职位)
我认为最初的问题是你可能不知道$post_count
(即。WP_Query::$post_count
) 实际上是当前页面的帖子数,所以如果LIMIT
已使用(在由生成的SQL语句中)WP_Query
), e、 g.通过设置posts_per_page
比如说,10
这是默认值,然后$post_count
可能是10
或更少取决于数据库中与特定查询匹配的帖子总数。
因此,如果您想获得总数,请使用$found_posts
属性:
$my_query = new \\WP_Query( array(
\'posts_per_page\' => 1, // just for testing
) );
echo "Number of posts with LIMIT applied: {$my_query->post_count}<br>";
echo "Number of posts without LIMIT applied: {$my_query->found_posts}";
看见
here 如果您想查看其他属性
WP_Query
.
如果未设置posts_per_page
在查询参数中,该值默认为10
或者你在;博客页面最多显示“;阅读设置管理页面上的输入(wp-admin
→ 设置→ 阅读)。我猜你把它设置为7
?
我认为"{$raw_perma}"
可以简单地写为$raw_perma
如中所示\'meta_value\' => $raw_perma
和\'value\' => $raw_perma
.. :)