WordPress.org

Ready to get started?Download WordPress

Forums

Set number of posts for custom taxonomy (5 posts)

  1. Stef Verbeeck
    Member
    Posted 2 years ago #

    Hi all,

    We use a custom post type called "clients" to display our portfolio, which works perfect. This post type has a (category-like) taxonomy "services" to divide these client posts in two categories. The "query_posts" is set to 50 posts per page so only the 50 latest projects are shown. You can see this page here.

    We provide a filter at the top of the page so visitors can choose between the two "services" and show only those posts. The problem is, the template for "taxonomy-services.php" does not work with query_posts, so we have no way to determine how many posts should be shown. By default, WP shows only the 10 latest posts for the selected taxonomy/category.

    This is the code we use:

    <?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); ?>
    
    <!-- projects -->
    <div class="projects">
    <ul class="hover_block">
    <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    	<li><a href="<?php echo get_permalink(); ?>"><?php the_post_thumbnail( array(200,140) ); ?><h5><?php the_title(); ?></h5><?php echo cc_get_the_term_list($post->ID, 'services', ' ', ', ', '', 0); ?></a></li>
    <?php endwhile; wp_reset_query(); ?>
    </ul>
    </div>

    As said, this works fine, but we would like to display more than the 10 latest posts (in fact, all posts if possible). We need some sort of overwrite for the WP defaults set in wp-admin. Any advice on how to accomplish this for custom taxonomies?

    Thanks in advance,
    Stef

  2. keesiemeijer
    moderator
    Posted 2 years ago #

    Try it with this in your theme's functions.php:

    function my_post_queries( $query ) {
      // not an admin page and it is the main query
      if (!is_admin() && $query->is_main_query()){
    
        if(is_tax()){
          // show 50 posts on custom taxonomy pages
          $query->set('posts_per_page', 50);
        }
      }
    }
    add_action( 'pre_get_posts', 'my_post_queries' );

    This only works if you don't have a query_posts on the loop.

  3. Stef Verbeeck
    Member
    Posted 2 years ago #

    Thanks keesiemeijer for your input.

    Unfortunately, when I insert this in my functions.php; reloading the page displays following error:

    Fatal error: Call to undefined method WP_Query::is_main_query() in /var/www/html/wp-content/themes/v21/functions.php on line 80

    :(

  4. Stef Verbeeck
    Member
    Posted 2 years ago #

    Quick update: removing the first part seems to fix the fatal error:

    function my_post_queries( $query ) {
    
    	if(is_tax()){
          // show 50 posts on custom taxonomy pages
          $query->set('posts_per_page', 50);
        }
      }
    add_action( 'pre_get_posts', 'my_post_queries' );
  5. umair.razzaq
    Member
    Posted 1 year ago #

    Thanks keesiemeijer & Stef, this updated code works for me.

Topic Closed

This topic has been closed to new replies.

About this Topic