Community Forums › Forums › Archived Forums › Design Tips and Tricks › Function to modify numbered pagination
Tagged: archive pagination, pagination
- This topic has 20 replies, 3 voices, and was last updated 9 years, 5 months ago by
Carla the Moose.
-
AuthorPosts
-
October 1, 2015 at 2:40 pm #167178
Carla the Moose
MemberSure, but be forewarned: These are changes I made directly to a Genesis file. NOT a good idea. When I have some time, I'm going to write a proper function for my child theme.
Thanks to Brad's guidance, I found the code in genesis/lib/structure/post.php. Here it is. Copy this to a text editor, and then open a blank document and copy the original post.php contents and save it.
Search for XXX and you'll see what I did. There are six of them. The first marks the beginning of the section where you'll find the code. This is just that section. I only wanted numbers to display, so I also removed the previous/next text links, including the invisible but present anchor link.
ETA: For the $paged code, where you see XXX is the line I removed to limit the numbered links to display only one on either side of the active link. I hope that makes sense. Just compare with the original code and you'll see what I removed.
add_action( 'genesis_after_endwhile', 'genesis_posts_nav' ); /** XXX * Conditionally echo archive pagination in a format dependent on chosen setting. * * This is shown at the end of archives to get to another page of entries. * * @since 0.2.3 * * @uses genesis_get_option() Get theme setting value. * @uses genesis_prev_next_posts_nav() Prev and Next links. * @uses genesis_numeric_posts_nav() Numbered links. */ function genesis_posts_nav() { if ( 'numeric' === genesis_get_option( 'posts_nav' ) ) genesis_numeric_posts_nav(); else genesis_prev_next_posts_nav(); } /** * Echo archive pagination in Previous Posts / Next Posts format. * * Applies <code>genesis_prev_link_text</code> and <code>genesis_next_link_text</code> filters. * * @since 0.2.2 */ function genesis_prev_next_posts_nav() { $prev_link = get_previous_posts_link( apply_filters( 'genesis_prev_link_text', '« ' . __( 'Previous Page', 'genesis' ) ) ); $next_link = get_next_posts_link( apply_filters( 'genesis_next_link_text', __( 'Previous Page', 'genesis' ) . ' »' ) ); $prev = $prev_link ? '<div class="pagination-previous alignleft">' . $prev_link . '</div>' : ''; $next = $next_link ? '<div class="pagination-next alignright">' . $next_link . '</div>' : ''; $nav = genesis_markup( array( 'html5' => '<div %s>', 'xhtml' => '<div class="navigation">', 'context' => 'archive-pagination', 'echo' => false, ) ); $nav .= $prev; $nav .= $next; $nav .= '</div>'; if ( $prev || $next ) echo $nav; } /** XXX * Echo archive pagination in page numbers format. * * Applies the <code>genesis_prev_link_text</code> and <code>genesis_next_link_text</code> filters. * * The links, if needed, are ordered as: * * * previous page arrow, * * first page, * * up to two pages before current page, * * current page, * * up to two pages after the current page, * * last page, * * next page arrow. * * @since 0.2.3 * * @global WP_Query $wp_query Query object. * * @return null Return early if on a single post or page, or only one page present. */ function genesis_numeric_posts_nav() { if( is_singular() ) return; global $wp_query; //* Stop execution if there's only 1 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 to the array if ( $paged >= 1 ) $links[] = $paged; //* Add the pages around the current page to the array if ( $paged >= 3 ) { $links[] = $paged - 1; //* XXX } if ( ( $paged + 2 ) <= $max ) { //* XXX $links[] = $paged + 1; } genesis_markup( array( 'html5' => '<div %s>', 'xhtml' => '<div class="navigation">', 'context' => 'archive-pagination', ) ); $before_number = genesis_a11y() ? '<span class="screen-reader-text">' . __( 'Page ', 'genesis' ) . '</span>' : ''; echo '<ul>'; //* Previous Post Link REMOVED XXX //* Link to first page, plus ellipses if necessary 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 ) ), $before_number . '1' ); if ( ! in_array( 2, $links ) ) echo '<li class="pagination-omission">…</li>'; } //* Link to current page, plus 2 pages in either direction if necessary sort( $links ); foreach ( (array) $links as $link ) { $class = $paged == $link ? ' class="active" aria-label="' . __( 'Current page', 'genesis' ) . '"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $before_number . $link ); } //* Link to last page, plus ellipses if necessary if ( ! in_array( $max, $links ) ) { if ( ! in_array( $max - 1, $links ) ) echo '<li class="pagination-omission">…</li>' . "\n"; $class = $paged == $max ? ' class="active"' : ''; printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $before_number . $max ); } //* Next Post Link REMOVED XXX echo '</ul></div>' . "\n"; }
-
AuthorPosts
- The forum ‘Design Tips and Tricks’ is closed to new topics and replies.