WordPress.org

Ready to get started?Download WordPress

Forums

Pagination not working in page template (2 posts)

  1. elkebirmed
    Member
    Posted 1 year ago #

    I want to make a template page for displaying taxonomies as template. posts shown in the first page repeated on the next page and so on.

    Please let me know how to make the loop continue in the next page and don't repeat the same posts.

    The template page: blog.php

    <?php
    
    /*
     Template Name: Blog
    */
    
    get_header(); ?>
    
        <div id="page-content">
    
            <?php $blog_query = new WP_Query( 'showposts:-1' ); ?>
            <?php if ( $blog_query->have_posts() ) : while ( $blog_query->have_posts() ): $blog_query->the_post(); ?>
    
            <article id="post-<?php the_ID(); ?>" <?php post_class( 'article categories' ); ?>>
    
                <?php // Starting content ?>
                <div class="content-section">
                    <h2 class="content-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                </div><!-- content-section -->
    
            </article><!-- article -->
    
        <?php endwhile; ?>
    
        <?php else : ?>
    
            <?php _e( 'Sorry, no posts matched your criteria.', $text_domain ); ?>
    
        <?php endif; ?>
    
        <?php v_pagination( $blog_query->max_num_pages, $range = 2 ); ?>
    
        </div><!-- #page-content -->
    
    <?php get_footer(); ?>

    The pagination function:

    function v_pagination( $pages = '', $range = 2 ) {
    $showitems = ( $range * 2 ) + 1;
    global $paged;
    
    if ( empty( $paged ) ) $paged = 1;
    if ( $pages == '' ) {
        global $wp_query;
        $pages = $wp_query->max_num_pages;
    
        if ( !$pages ) {
            $pages = 1;
        }
    }   
    
    if ( 1 != $pages ) {
        echo "<div class='pagination-container'>\n<div class='pagination'>";
        if ( $paged > 2 && $paged > $range+1 && $showitems < $pages ) echo "<a href='".get_pagenum_link(1)."'>&laquo;</a>";
        if ( $paged > 1 && $showitems < $pages ) echo "<a href='".get_pagenum_link( $paged - 1 )."'>&lsaquo;</a>";
    
        for ( $i=1; $i <= $pages; $i++ ) {
            if ( 1 != $pages &&( !( $i >= $paged+$range+1 || $i <= $paged-$range-1 ) || $pages <= $showitems ) ) {
                echo ( $paged == $i )? "<span class='current'>".$i."</span>":"<a href='".get_pagenum_link( $i )."' class='inactive' >".$i."</a>";
            }
        }
    
        if ( $paged < $pages && $showitems < $pages ) echo "<a href='".get_pagenum_link( $paged + 1 )."'>&rsaquo;</a>";
        if ( $paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages ) echo "<a href='".get_pagenum_link( $pages )."'>&raquo;</a>";
        echo "</div>\n</div>\n";
    }
    }
  2. alchymyth
    Forum Moderator
    Posted 1 year ago #

    your template is running $blog_query while the pagination function is using $wp_query;

    besides, the custom query is getting all posts with the -1 as posts per page parameter.

    review:
    http://codex.wordpress.org/Class_Reference/WP_Query

Topic Closed

This topic has been closed to new replies.

About this Topic