如何更改PRE_GET_POST中WP_QUERY的条件或比较运算符

时间:2021-05-19 作者:Nilesh Chouhan

所以这里是我的问题,我想显示帖子,如果有相同的类别,如果没有帖子,然后显示相同标签的帖子。为此,我使用了;pre\\u get\\u posts“;行动和如下设置查询。

function related_custom_posts($query){
   $query->set( \'category__in\', array(2,3) );
   $query->set( \'tag__in\', array(10,13) );
}

add_action( \'pre_get_posts\', \'related_custom_posts\', 1 );
但它会创建这样的sqlAND ( wp_term_relationships.term_taxonomy_id IN (2) AND tt1.term_taxonomy_id IN (11) ) 但我需要有条件的AND ( wp_term_relationships.term_taxonomy_id IN (2) OR tt1.term_taxonomy_id IN (11) )

提前谢谢。

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

您可以使用tax_query argument 像这样:

$query->set( \'tax_query\', array(
    \'relation\' => \'OR\',
    array(
        \'taxonomy\' => \'category\',
        \'terms\'    => array( 2, 3 ),
    ),
    array(
        \'taxonomy\' => \'post_tag\',
        \'terms\'    => array( 10, 13 ),
    ),
) );

相关推荐

如何改进我的非唯一元数据MySQL条目?

我正在为WooCommerce开发一个插件,它使用一个名为Restock的cpt。在重新进货后,您可以输入产品(id)和重新进货。用户可以在每篇文章中添加任意数量的产品补货对。我当前正在将每个id/重新进货条目保存为元数据值内的关联数组。add\\u post\\u meta中的最后一个参数($unique)设置为false,因此我可以添加与重新进货的产品一样多的值。foreach ( $new_content as $new_product ) { $new_product = arra