Echo posts pagination.
beans_posts_pagination( )
Return: (void)
Source
function beans_posts_pagination() {
/**
* Filter whether {@see beans_posts_pagination()} should be short-circuit or not.
*
* @since 1.0.0
*
* @param bool $pre True to short-circuit, False to let the function run.
*/
if ( apply_filters( 'beans_pre_post_pagination', is_singular() ) ) {
return;
}
global $wp_query;
if ( $wp_query->max_num_pages <= 1 ) {
return;
}
$current = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
$count = intval( $wp_query->max_num_pages );
beans_open_markup_e( 'beans_posts_pagination', 'ul', array(
'class' => 'uk-pagination uk-grid-margin',
'role' => 'navigation',
) );
// Previous.
if ( get_previous_posts_link() ) {
beans_open_markup_e( 'beans_posts_pagination_item[_previous]', 'li' );
beans_open_markup_e( 'beans_previous_link[_posts_pagination]', 'a', array(
'href' => previous_posts( false ), // Automatically escaped.
), $current );
beans_open_markup_e( 'beans_previous_icon[_posts_pagination]', 'i', array(
'class' => 'uk-icon-angle-double-left uk-margin-small-right',
) );
beans_close_markup_e( 'beans_previous_icon[_posts_pagination]', 'i' );
beans_output_e( 'beans_previous_text[_posts_pagination]', __( 'Previous', 'tm-beans' ) );
beans_close_markup_e( 'beans_previous_link[_posts_pagination]', 'a' );
beans_close_markup_e( 'beans_posts_pagination_item[_previous]', 'li' );
}
// Links.
foreach ( range( 1, $wp_query->max_num_pages ) as $link ) {
// Skip if next is set.
if ( isset( $next ) && $link != $next ) {
continue;
} else {
$next = $link + 1;
}
$is_separator = array(
1 != $link, // Not first.
1 == $current && 3 == $link ? false : true, // Force first 3 items.
$count > 3, // More.
$count != $link, // Not last.
( $current - 1 ) != $link, // Not previous.
$current != $link, // Not current.
( $current + 1 ) != $link, // Not next.
);
// Separator.
if ( ! in_array( false, $is_separator ) ) {
beans_open_markup_e( 'beans_posts_pagination_item[_separator]', 'li' );
beans_output_e( 'beans_posts_pagination_item_separator_text', '...' );
beans_close_markup_e( 'beans_posts_pagination_item[_separator]', 'li' );
// Jump.
if ( $link < $current ) {
$next = $current - 1;
} elseif ( $link > $current ) {
$next = $count;
}
continue;
}
// Integer.
if ( $link == $current ) {
beans_open_markup_e( 'beans_posts_pagination_item[_active]', 'li', array( 'class' => 'uk-active' ) );
beans_open_markup_e( 'beans_posts_pagination_item[_active]_wrap', 'span' );
beans_output_e( 'beans_posts_pagination_item[_active]_text', $link );
beans_close_markup_e( 'beans_posts_pagination_item[_active]_wrap', 'span' );
beans_close_markup_e( 'beans_posts_pagination_item[_active]', 'li' );
} else {
beans_open_markup_e( 'beans_posts_pagination_item', 'li' );
beans_open_markup_e( 'beans_posts_pagination_item_link', 'a', array(
'href' => get_pagenum_link( $link ), // Automatically escaped.
), $link );
beans_output_e( 'beans_posts_pagination_item_link_text', $link );
beans_close_markup_e( 'beans_posts_pagination_item_link', 'a' );
beans_close_markup_e( 'beans_posts_pagination_item', 'li' );
}
}
// Next.
if ( get_next_posts_link() ) {
beans_open_markup_e( 'beans_posts_pagination_item[_next]', 'li' );
beans_open_markup_e( 'beans_next_link[_posts_pagination]', 'a', array(
'href' => next_posts( $count, false ), // Automatically escaped.
), $current );
beans_output_e( 'beans_next_text[_posts_pagination]', __( 'Next', 'tm-beans' ) );
beans_open_markup_e( 'beans_next_icon[_posts_pagination]', 'i', array(
'class' => 'uk-icon-angle-double-right uk-margin-small-left',
) );
beans_close_markup_e( 'beans_next_icon[_posts_pagination]', 'i' );
beans_close_markup_e( 'beans_next_link[_posts_pagination]', 'a' );
beans_close_markup_e( 'beans_posts_pagination_item[_next]', 'li' );
}
beans_close_markup_e( 'beans_posts_pagination', 'ul' );
}