function get_the_ry_posts_pagination($args = array()) { $args = wp_parse_args($args, array('class' => 'pagination', 'end_size' => 2, 'mid_size' => 2, 'show_all' => false, 'show_prev_next' => true, 'show_page_number' => true, 'show_type' => 'html', 'prev_text' => _x('Previous', 'previous post'), 'next_text' => _x('Next', 'next post'), 'screen_reader_text' => __('Posts navigation'), 'before_page_number' => '', 'after_page_number' => '')); $archives_list = RY_CP::wp_get_archives($args); $total = count($archives_list); if ($total < 2) { return ''; } $show_all = (bool) $args['show_all']; $show_prev_next = (bool) $args['show_prev_next']; $show_page_number = (bool) $args['show_page_number']; $end_size = (int) $args['end_size']; if ($end_size < 1) { $end_size = 1; } $mid_size = (int) $args['mid_size']; if ($mid_size < 0) { $mid_size = 2; } $query_year = get_query_var('year'); $query_month = get_query_var('monthnum'); $query_day = get_query_var('day'); $current = 1; foreach ($archives_list as $key => $value) { if ($value['year'] == $query_year && $value['month'] == $query_month && $value['day'] == $query_day) { $current = $key + 1; break; } } if ($show_prev_next && 1 < $current) { $page_links[] = '<a class="prev page-numbers" href="' . esc_url($archives_list[$current - 2]['url']) . '">' . $args['prev_text'] . '</a>'; } for ($n = 1; $n <= $total; ++$n) { if ($n == $current) { $page_links[] = '<span class="page-numbers current">' . $args['before_page_number'] . ($show_page_number ? number_format_i18n($n) : $archives_list[$n - 1]['text']) . $args['after_page_number'] . '</span>'; $dots = true; } else { if ($show_all || ($n <= $end_size || $current && $n >= $current - $mid_size && $n <= $current + $mid_size || $n > $total - $end_size)) { $page_links[] = '<a class="page-numbers" href="' . esc_url($archives_list[$n - 1]['url']) . '">' . $args['before_page_number'] . ($show_page_number ? number_format_i18n($n) : $archives_list[$n - 1]['text']) . $args['after_page_number'] . '</a>'; $dots = true; } elseif ($dots && !$show_all) { $page_links[] = '<span class="page-numbers dots">' . __('…') . '</span>'; $dots = false; } } } if ($show_prev_next && $current < $total) { $page_links[] = '<a class="next page-numbers" href="' . esc_url($archives_list[$current]['url']) . '">' . $args['next_text'] . '</a>'; } switch ($args['show_type']) { case 'array': return $page_links; case 'list': $links = '<ul class="page-numbers">' . "\n\t" . '<li>' . join('</li>' . "\n\t" . '<li>', $page_links) . '</li>' . "\n" . '</ul>' . "\n"; break; default: $links = join("\n", $page_links); break; } $navigation = _navigation_markup($links, $args['class'], $args['screen_reader_text']); $navigation = apply_filters('ry_posts_pagination_html', $navigation, $args); return $navigation; }