Post Pagination with Page Number- WordPress Theme Development

Post Pagination with Page Number- WordPress Theme Development

Replace the default Old-New Pagination with Numbered Pagination

Code

<?php 
// Do not include the opening php code
function numeric_pagination ($pageCount = 9, $query = null) {
 if ($query == null) {
  global $wp_query;
  $query = $wp_query;
 }
 if ($query->max_num_pages <= 1) {
  return;
 }
 $pageStart = 1;
 $paged = $query->query_vars['paged'];
 // set current page if on the first page
 if ($paged == null) {
  $paged = 1;
 }
 // work out if page start is halfway through the current visible pages and if so move it accordingly
 if ($paged > floor($pageCount / 2)) {
  $pageStart = $paged - floor($pageCount / 2);
 }
 if ($pageStart < 1) {
  $pageStart = 1;
 }
 // make sure page start is
 if ($pageStart + $pageCount > $query->max_num_pages) {
  $pageCount = $query->max_num_pages - $pageStart;
 }
?>
 <div id="archive_pagination">
<?php
 if ($paged != 1) {
?>
 <a href="<?php echo get_pagenum_link(1); ?>" class="numbered page-number-first"><span>&lsaquo; <?php _e('<< First', 'global'); ?></span></a>
<?php
 }
 // first page is not visible...
 if ($pageStart > 1) {
  //echo 'previous';
 }
 for ($p = $pageStart; $p <= $pageStart + $pageCount; $p ++) {
  if ($p == $paged) {
?>
  <span class="numbered page-number-<?php echo $p; ?> current-numeric-page"><?php echo $p; ?></span>
<?php } else { ?>
  <a href="<?php echo get_pagenum_link($p); ?>" class="numbered page-number-<?php echo $p; ?>"><span><?php echo $p; ?></span></a>

<?php
  }
 }
 // last page is not visible
 if ($pageStart + $pageCount < $query->max_num_pages) {
  //echo "last";
 }
 if ($paged != $query->max_num_pages) {
?>
  <a href="<?php echo get_pagenum_link($query->max_num_pages); ?>" class="numbered page-number-last"><span><?php _e('>> Last', 'global'); ?> &rsaquo;</span></a>
<?php } ?>

</div>
<?php }

Insert in to place you want to display the pagination

numeric_pagination();