When i started the creating process of this theme i considered to integrate one of the popular WordPress plugins for pagination. I than decided to publish the XSimulator theme for free and i felt that it could lead to any problems and issues for someone else to make a similar looking theme when the requirements are a lot of different plugins he must install first. Fortunately i found a great programmed script which is very easy to implement and powerful.
Open your functions.php and create a new function:
/* Adds pagination * * @since XSimulator 1.0 * @param $range total list of pages * @param $range count of maximum page links from left and right side of the current page link. * @bool $show_one_page_hint shows a text like: page 1 of 6 * @bool $show_one_pager Do not show nav arrows * */ function xsimu_pagination($range = 3, $show_one_pager = true, $show_page_hint = false) { global $wp_query; $num_of_pages = (int)$wp_query->max_num_pages; if(!is_single() && $num_of_pages > 1) { $current_page = get_query_var('paged') === 0 ? 1 : get_query_var('paged'); $num_of_display_pages = ($range * 2) + 1; $output = '<div id="pagination">'; if($show_page_hint) { $output .= '<span>Page ' . $current_page . ' of ' . $num_of_pages . '</span>'; } if($current_page > 2 && $current_page > $range + 1 && $num_of_display_pages < $num_of_pages) { $output .= '<a href="' . get_pagenum_link(1) . '" title="Page 1 - Latest article">«</a>'; } if($show_one_pager && $current_page > 1) { $output .= '<a href="' . get_pagenum_link($current_page - 1) . '" title="Page ' . ($current_page - 1) . ' - Latest Artikel">‹</a>'; } for($i = 1; $i <= $num_of_pages; $i++) { if($i < $current_page + $range + 1 && $i > $current_page - $range - 1) { if($current_page === $i) { $output .= '<span class="current">' . $i . '</span>'; } else { $output .= '<a href="' . get_pagenum_link($i) . '" title="Page ' . $i . '" >' . $i . '</a>'; } } } if($show_one_pager && $current_page < $num_of_pages) { $output .= '<a href="' . get_pagenum_link($current_page + 1) . '" title="Page ' . ($current_page + 1) . ' - Older article">›</a>'; } if($current_page < $num_of_pages - 1 && $current_page + $range < $num_of_pages && $num_of_display_pages < $num_of_pages) { $output .= '<a href="' . get_pagenum_link($num_of_pages) . '" title="Page ' . $num_of_pages . ' - Older article">»</a>'; } $output .= '</div>'; return $output; } }
Open the template file where you want to publish your pagination. E.g. category.php
echo xsimu_pagination(2, true, false);
You´re ready:)
Thanks to the author of the original script on the page smart-webentwicklung.de