Instead of trying to get the posts AND the category, you should do individual queries for each $slides = array(); $found_posts = array(); // get the video posts $query = new WP_Query( array( 'post_type' => 'videos', 'posts_per_page' => -1 ) ); if($query->have_posts()){ while ( $query->have_posts() ) { $query->the_post(); $carousel_slide = 'put your slide content here, so probably an <li> element or something?'; $found_posts[] = $post->ID; $slides[] = $carousel_slide; } wp_reset_postdata(); } // get the video category $query = new WP_Query( array( 'category_name' => 'video', 'posts_per_page' => -1 'post__not_in' => $found_posts, ) ); if($query->have_posts()){ while ( $query->have_posts() ) { $query->the_post(); $carousel_slide = 'put your slide content here, so probably an <li> element or something?'; $slides[] = $carousel_slide; } wp_reset_postdata(); } // we should now have all our slides in the $slides array so lets print them out echo implode('',$slides);