如何在WordPress中组合Tax_Query和Date_Query

时间:2018-07-03 作者:Richard Tinkler

我使用以下查询提取不在“服务”产品类别中的所有产品,并按自定义元字段“\\u vintage\\u age”订购它们。

$q->set( \'tax_query\', array(array(
    \'taxonomy\' => \'product_cat\',
    \'field\' => \'slug\',
    \'terms\' => array( \'Service\' ),  
    \'operator\' => \'NOT IN\'
)));

$q->set(\'meta_query\',array(array(
    \'vtp_age\' => array(
    \'key\' => \'_vintage_age\',
    \'value\' => array(1,2,3),
    \'compare\' => \'IN\'
))));

$q->set(\'orderby\',array(
    \'vtp_age\' => \'ASC\',
    \'date\' => \'ASC\'
));
我现在需要扩展此查询,以排除1个多月前用product\\u类别“Seld”修改过的产品(即显示所有未售出、未服务的产品和上月售出的所有产品)。我的猜测是使用这样的东西,但如何将其仅应用于“已售出”的产品,并将其添加到原始查询中?

array(
    \'date_query\' => array(
        array(
            \'column\' => \'post_modified_gmt\',
            \'after\'  => \'1 month ago\',
        ),
))
提前感谢您的帮助!

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

恐怕没有办法使用WP\\u Query进行此类高级查询。

但是,当然,您仍然可以实现这个结果,但您需要编写更多的代码。

有两种解决方案:

很难给出精确的代码,因为您的问题中没有太多细节,但也许这就足够了:)

1。使用posts_whereposts_join 过滤器如果您不怕编写自己的SQL查询,那么您可以使用posts_whereposts_join 筛选以向WP\\U查询添加一些更高级的SQL条件。

2。使用第二个WP\\U查询,然后排除这些帖子。如果您不喜欢原始SQL,则可以使用第二个WP\\U查询。使用它可以选择要排除的所有帖子。然后您可以使用他们的ID并将其作为post__not_in 当前WP\\U查询的参数-这样您将排除它们。

结束

相关推荐

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

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