Pagination is somewhat working on frontpage, doesn’t update when “prev” is clicked

I followed the very simple tutorial that’s on this page: http://wp.tutsplus.com/tutorials/wordpress-pagination-a-primer/ (Scroll down to “A Better Solution”) – He makes it seem so simple, and it works in that the pagination links are there and the URL changes in the address bar, but it doesn’t actually update when clicking on 2 or 3..

Site – chrisayreswebdev.com/besh

Read More

I know I’m missing something, just not sure what. Any ideas? Thanks!

EDIT:
functions.php:

function paginate() {
global $wp_query; 
$total_pages = $wp_query->max_num_pages;  

if ($total_pages > 1){  

 $current_page = max(1, get_query_var('paged'));  

 echo paginate_links(array(  
        'base' => get_pagenum_link(1) . '%_%',  
        'format' => 'page/%#%',  
        'current' => $current_page,  
        'total' => $total_pages,
     ));  
}
}

index.php:

        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
                <div class="post">
                <h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
                 <?php the_title(); ?></a></h1>
                <h4>Posted on <?php the_time('F jS, Y') ?></h4>
                <div class="horzline"></div>
                <p><?php the_content(__('(more...)')); ?></p>
                </div>
            <?php endwhile; else: ?>
            <p><?php _e("Sorry, we couldn't find the post you are looking for."); ?></p>

        <?php endif; ?>
        <?php paginate(); ?>  

Related posts

Leave a Reply

1 comment

  1. I suspect your problem is here:

    'base' => get_pagenum_link(1) . '%_%'
    

    You’re passing 1 to get_pagenum_link(), rather than the actual page number. Try passing your previously determined $current_page instead:

    'base' => get_pagenum_link( $current_page ) . '%_%'
    

    Note, I use this as base:

    'base' => @add_query_arg('paged','%#%')
    

    Edit

    I tried your suggestion as well as the '@add_query_arg' that you use and neither seemed to actually update the pagination to the next set of posts. The url changes to “/besh/page/2” but the posts don’t change and the page number stays at 1. It’s as if I’m missing something entirely from my code.

    The best I can do is to give you my full, working code:

    /**
     * Paginate Archive Index Page Links
     */
    function oenology_get_paginate_archive_page_links( $type = 'plain', $endsize = 1, $midsize = 1 ) {
        global $wp_query, $wp_rewrite;  
        $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
    
        // Sanitize input argument values
        if ( ! in_array( $type, array( 'plain', 'list', 'array' ) ) ) $type = 'plain';
        $endsize = (int) $endsize;
        $midsize = (int) $midsize;
    
        // Setup argument array for paginate_links()
        $pagination = array(
            'base' => @add_query_arg('paged','%#%'),
            'format' => '',
            'total' => $wp_query->max_num_pages,
            'current' => $current,
            'show_all' => false,
            'end_size' => $endsize,
            'mid_size' => $midsize,
            'type' => $type,
            'prev_text' => '&lt;&lt;',
            'next_text' => '&gt;&gt;'
        );
    
        if( $wp_rewrite->using_permalinks() )
            $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
    
        if( !empty($wp_query->query_vars['s']) )
            $pagination['add_args'] = array( 's' => get_query_var( 's' ) );
    
        return paginate_links( $pagination );
    }