admin管理员组

文章数量:1292078

So here is my problem I want to show Posts if have same category if not have post then show post of same tag. And to do that I am using "pre_get_posts" action. and setting query like following.

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 );

But it create sql like this AND ( wp_term_relationships.term_taxonomy_id IN (2) AND tt1.term_taxonomy_id IN (11) ) but i need this with OR condition AND ( wp_term_relationships.term_taxonomy_id IN (2) OR tt1.term_taxonomy_id IN (11) )

Thanks in advance.

So here is my problem I want to show Posts if have same category if not have post then show post of same tag. And to do that I am using "pre_get_posts" action. and setting query like following.

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 );

But it create sql like this AND ( wp_term_relationships.term_taxonomy_id IN (2) AND tt1.term_taxonomy_id IN (11) ) but i need this with OR condition AND ( wp_term_relationships.term_taxonomy_id IN (2) OR tt1.term_taxonomy_id IN (11) )

Thanks in advance.

Share Improve this question asked May 19, 2021 at 16:20 Nilesh ChouhanNilesh Chouhan 884 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 1

You can achieve the OR relation using the tax_query argument like so:

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

本文标签: wp queryHow I can change the condition or compare operator for WPQuery in pregetposts