• Resolved Emma_W

    (@emma_w)


    Hi,

    I’m trying, on one page of my site, to show only posts which are saved in the ‘video’ post format (I know this is not the ideal taxonomy for this, but I’m working with a legacy site and I can’t really change it). My theming skills are very very rusty, and I’ve been attempting to do it with taxonomy queries but whatever I do it seems to show every post in the archive regardless of format, rather than only the video format ones. What’s wrong with my code, and what do I need to change?

    <?php
    			$args = array(
      			'tax_query' => array(
        			array(
          			'taxonomy' => 'post_format',
          			'field' => 'slug',
          			'terms' => 'post-format-video'
        		)
      		)
    		);
    query_posts();
    			while ( have_posts() ) : the_post();
    
    			the_content();
    
    			endwhile; // End of the loop.
    			?>
Viewing 4 replies - 1 through 4 (of 4 total)
  • You forgot to use the $args array. Change query_posts() to query_posts($args). I also suggest adding wp_reset_query() after the loop.

    For more info: https://codex.wordpress.org/Function_Reference/query_posts

    Thread Starter Emma_W

    (@emma_w)

    Hi,

    Thank you so much, this works perfectly.

    I have noticed that I can’t seem to get it to paginate – pagination is blank, although the previous and next links are fine – it also seems to be disregarding the posts per page. Not sure if I should start a new topic for this or if it’s related!

    <span class="pagination">Pages: <?php echo paginate_links( $args ); ?></span>
    			<div class="navigation">
      <div class="alignleft"><?php previous_posts_link('&laquo; Previous') ?></div>
      <div class="alignright"><?php next_posts_link('More &raquo;') ?></div>
    </div>
    
    			<?php
    			//Protect against arbitrary paged values
    			$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
    
    			$args = array(
    				'paged'=>$paged,
    				'numberposts'=>5,
      			'tax_query' => array(
        			array(
          			'taxonomy' => 'post_format',
          			'field' => 'slug',
          			'terms' => 'post-format-video'
        		)
      		)
    		);
    query_posts($args);
    			while ( have_posts() ) : the_post();
    
    			get_template_part( 'template-parts/content', get_post_format() );
    
    			endwhile; // End of the loop.
    			?>
    
    <?php
    wp_reset_query();  // Restore global post data
    ?>

    The navigation should be called after query_posts($args); function. Also instead of numberposts try using posts_per_page instead.

    Thread Starter Emma_W

    (@emma_w)

    Brilliant, thank you. All sorted!

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Showing all posts in 'video' format on page – what's wrong with my query?’ is closed to new replies.