Skip to content

Instantly share code, notes, and snippets.

@karrikas
Created May 4, 2016 11:07
Show Gist options
  • Select an option

  • Save karrikas/e3f08f36b351616d1d3119cfc15510a5 to your computer and use it in GitHub Desktop.

Select an option

Save karrikas/e3f08f36b351616d1d3119cfc15510a5 to your computer and use it in GitHub Desktop.
Bootstrap pagination for Wordpress
function wp_bootstrap_pagination()
{
if( is_singular() ) {
return;
}
global $wp_query;
if( $wp_query->max_num_pages <= 1 ) {
return;
}
$paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
$max = intval( $wp_query->max_num_pages );
if ( $paged >= 1 ) {
$links[] = $paged;
}
/** Add the pages around the current page to the array */
if ( $paged >= 3 ) {
$links[] = $paged - 1;
$links[] = $paged - 2;
}
if ( ( $paged + 2 ) <= $max ) {
$links[] = $paged + 2;
$links[] = $paged + 1;
}
echo '<nav class="text-center"><ul class="pagination">';
if ( get_previous_posts_link() ) {
printf( '<li>%s</li>', get_previous_posts_link('&laquo;') );
} else {
echo '<li class="disabled"><span><span aria-hidden="true">&laquo;</span></span></li>';
}
if ( ! in_array( 1, $links ) ) {
$class = 1 == $paged ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>', $class, esc_url( get_pagenum_link( 1 ) ), '1' );
if ( ! in_array( 2, $links ) ) {
echo '<li>…</li>';
}
}
sort( $links );
foreach ( (array) $links as $link ) {
$class = $paged == $link ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>', $class, esc_url( get_pagenum_link( $link ) ), $link );
}
if ( ! in_array( $max, $links ) ) {
if ( ! in_array( $max - 1, $links ) ) {
printf('<li>%s</li>', get_next_posts_link('…'));
}
$class = $paged == $max ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>', $class, esc_url( get_pagenum_link( $max ) ), $max );
}
/** Next Post Link */
if ( get_next_posts_link() ) {
printf( '<li>%s</li>', get_next_posts_link('&raquo;') );
} else {
echo '<li class="disabled"><span><span aria-hidden="true">&raquo;</span></span></li>';
}
echo '</ul></nav>';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment