1

I need to post articles and pages present in two specific taxonomy in a slider. I tried to merge the $args and $args2 but the slider disappears from the page. Could anyone tell me how to write the code correctly? Thanks!

This is the code:

    <?php

        $slider_counter = 0;

  $args = array(
    'post_type' => 'post',
    'category_name' => 'slider'
  );

$args2 =  array(
'post_type' => 'page',
'tax_query' => array(
    array(
        'taxonomy' => 'my_taxonomy',
        'field' => 'slug',
        'terms' => 'slider'
    )
)
  );


  $merged_query_args = array_merge( $args, $args2 );

        $query_slider = new WP_Query ( $merged_query_args );


        while ( $query_slider->have_posts() ) :
            $query_slider->the_post(); ?>

        <?php $slider_counter++ ;?>

            <?php $slider_image_attributes = wp_get_attachment_image_src( get_post_thumbnail_id( $post ->ID ), 'slider_img' );?>

            <div class="swiper-slide <?php if ($slider_counter ==1) { echo 'active'; } ?>">
                <a href="<?php the_permalink(); ?>"><img src="<?php echo $slider_image_attributes[0]; ?>" class="d-block w-100" alt="..."></a>
                <div class="carousel-caption d-none d-md-block">
                    <div class="dispaly-3"><a href="<?php the_permalink(); ?>" class="slider-a"><?php the_title(); ?></a></div>
                </div>
            </div>

        <?php endwhile;

        wp_reset_query();
        wp_reset_postdata();  ?>
  • Why are you using a custom taxonomy for pages? It may be a necessity in your specific case but I'm just wondering if it'd be easier to simply use the existing category taxonomy. You could query both post_types using an array(). So post_type => array( 'post', 'page' ),. If you have to keep the two separate taxonomies then your best bet would be to run two queries and just collect the returned IDs into a new array, then run a foreach to output the posts and pages whose IDs are in that new array. – Tony Djukic May 20 at 17:32
  • Thanks for the answer, yes my need lies in the fact that both pages and posts can be inserted in the slider. – Knives May 21 at 9:29
0

You could try merging the two arg arrays:

$args = array(
    'post_type' => array('post','page'),
    'tax_query' => array(
       'relation' => 'OR',
       array(
         'taxonomy' => 'category',
         'field' => 'slug',
         'terms' => 'slider'
      ),
      array(
         'taxonomy' => 'my_taxonomy',
         'field' => 'slug',
         'terms' => 'slider'
      ),
    ),
  );
| improve this answer | |
  • Thanks for the answer, the code works but also gives this error: Warning: Use of undefined constant relation - assumed 'relation' (this will throw an Error in a future version of PHP). Why? – Knives May 21 at 9:31
  • Apologies, @Knives - there should be single quotes around the word 'relation' - updated the answer to address that. – Michelle May 21 at 18:22
  • Thank you so much!!!! Now work perfectly! – Knives May 22 at 9:19
  • @Knives Fantastic! If you could please mark this answer as 'accepted' that would be great (green checkmark to the left of this answer will do it). Thanks! – Michelle May 22 at 16:49

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.