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.


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

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.