Adding Numeric Pagination for Archive, Search and Index
-
So I’m trying to build a pagination function which is supposed to work with three files index.php, search.php and search.php . The code that I currently have works with just index but I would like to make it compatible with both the archive and the search files.
NOTE: I though that it could work by just adding the is_search(),etc but thats not the case; another question why do I have to use is_singular instead of is_home(which I tried but did not work)?
function numeric_pagination() { if( is_singular() || is_search() || is_archive() && have_posts() ) return; global $wp_query; /* Stop the code if there is only a single page page */ 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 ); /*Add current page into the array */ 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 aria-label="pagination"><ul class="pagination">' . "\n"; /*Display Previous Post Link */ if ( get_previous_posts_link() ) printf( '<li>%s</li>' . "\n", get_previous_posts_link() ); /*Display Link to first page*/ if ( ! in_array( 1, $links ) ) { $class = 1 == $paged ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' ); if ( ! in_array( 2, $links ) ) /* echo '<li>…</li>';*/; } /* Link to current page */ sort( $links ); foreach ( (array) $links as $link ) { $class = $paged == $link ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link ); } /* Link to last page, plus ellipses if necessary */ if ( ! in_array( $max, $links ) ) { if ( ! in_array( $max - 1, $links ) ) //echo '<li>…</li>' . "\n"; $class = $paged == $max ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max ); } /** Next Post Link */ if ( get_next_posts_link() ) printf( '<li>%s</li>' . "\n", get_next_posts_link() ); echo '</ul></nav>' . "\n"; }
Any idea about what I can do to improve the code?
Viewing 5 replies - 1 through 5 (of 5 total)
Viewing 5 replies - 1 through 5 (of 5 total)
- The topic ‘Adding Numeric Pagination for Archive, Search and Index’ is closed to new replies.