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' => '<<',
'next_text' => '>>'
);
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 );
}