Displaying Numeric Pagination vs. Previous and Next Links in WordPress?

By default, WordPress shows previous and next links when content is split onto different pages. Is there a way to get it to use proper pagination (with numbers), perhaps with a plugin?

Related posts

Leave a Reply

2 comments

  1. Add to Functions.php

    /* Numeric Pagination ********************************************/
    
    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 } ?>
    

    Before The Loop

    <?php
    $page = (get_query_var('paged')) ? get_query_var('paged') : 1;
    query_posts("showposts=6&paged=$page");
    ?>
    

    After The Loop Between endwhile and else

    <?php numeric_pagination(); ?>