使用wp_Query按元值获取唯一帖子

时间:2019-11-04 作者:stefanosn

我使用wp\\u query通过元值检索我的帖子。其中一个元值具有存储在数据库中的相同文本。让我举个例子。

Post title  Meta value
hello1         text1
hello2         text2 
hello3         text2
所以在数据库中有三个帖子。第一个在元值中有“text1”。另外两个在meta值中存储了“text2”。

查询正在运行,但我需要根据元值返回不同的帖子。所以结果应该是

hello1        text1
hello2        text2
我不想出现的第三篇帖子,因为它与标题为hello2的帖子具有相同的元价值。所以,只有独特的元价值的职位,我想出现在你的理解。

如何使用wp\\U查询实现这一点?

这是我目前为止的代码,它返回所有基于meta\\u值文本的非空帖子。

$args = array(

            \'cat\'=>\'44\',
        \'posts_per_page\'=>\'16\',
        \'post_type\' => \'post\',
        \'post_status\' => \'publish\',

        \'meta_query\' => [
            \'metavalue1\' => [ \'key\' => \'Meta_value\', \'value\' => \'\', \'compare\' => \'!=\' ],
            \'price1\'=> [ \'key\' => \'price_euro\', \'value\' => \'30\', \'compare\' => \'>\',\'type\'=>\'NUMERIC\' ],
],
    \'orderby\' => \'price1\',
    \'order\' => \'ASC\'
    );

    $wp_query = new WP_Query($args);
感谢您的帮助。我在搜索中使用此代码。负责搜索的php文件。

1 个回复
SO网友:kero

您可以简单地将查询限制为仅返回一个结果。为此,请使用字段posts_per_page 在查询参数中。检查the documentation 有关此的详细信息。

$args = [
    \'cat\' => \'44\',
    \'posts_per_page\' => \'16\',
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',

    \'meta_query\' => [
        \'metavalue1\' => [
            \'key\' => \'Meta_value\',
            \'value\' => \'\',
            \'compare\' => \'!=\'
        ],
        \'price1\'=> [
            \'key\' => \'price_euro\',
            \'value\' => \'30\',
            \'compare\' => \'>\',
            \'type\' => \'NUMERIC\'
        ],
    ],

    \'orderby\' => \'price1\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => 1,
];

$wp_query = new WP_Query($args);
旁注:为了使代码更具可读性,请坚持一件事。使用短数组语法([ ]) 某处?->随处使用,避免array(). 使用\'key\' => \'value\'? 不使用\'key\'=>\'value\' 其他地方

相关推荐

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

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