我使用以下查询提取不在“服务”产品类别中的所有产品,并按自定义元字段“\\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\',
),
))
提前感谢您的帮助!
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
恐怕没有办法使用WP\\u Query进行此类高级查询。
但是,当然,您仍然可以实现这个结果,但您需要编写更多的代码。
有两种解决方案:
很难给出精确的代码,因为您的问题中没有太多细节,但也许这就足够了:)
1。使用posts_where
和posts_join
过滤器如果您不怕编写自己的SQL查询,那么您可以使用posts_where
和posts_join
筛选以向WP\\U查询添加一些更高级的SQL条件。
2。使用第二个WP\\U查询,然后排除这些帖子。如果您不喜欢原始SQL,则可以使用第二个WP\\U查询。使用它可以选择要排除的所有帖子。然后您可以使用他们的ID并将其作为post__not_in
当前WP\\U查询的参数-这样您将排除它们。