为元关键字选择具有给定元值的帖子

时间:2021-01-19 作者:Matthew Brown aka Lord Matt

我正在尝试运行一个查询,该查询返回具有特定元键的给定值的所有帖子。我知道这不是我测试服务器上的任何帖子,但它报告找到了所有帖子,帖子数为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}"
            );
这是可行的,尽管我不知道为什么会这样或那样。希望在答案中看到解释。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

这是可行的,尽管我不知道为什么会这样或那样。希望在答案中看到解释。

因为该代码设置posts_per_page 值到-1 这意味着没有限制,这与设置类似nopagingtrue, 因此,所有找到的帖子都会被退回。

它报告找到了所有职位计数为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 .. :)

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post