Skip to content

Instantly share code, notes, and snippets.

@davidpaulsson
Created October 18, 2012 06:32
Show Gist options
  • Save davidpaulsson/3910181 to your computer and use it in GitHub Desktop.
Save davidpaulsson/3910181 to your computer and use it in GitHub Desktop.
Foundation 4 pagination for WordPress
function foundation_pagination( $p = 2 ) {
if ( is_singular() ) return;
global $wp_query, $paged;
$max_page = $wp_query->max_num_pages;
if ( $max_page == 1 ) return;
if ( empty( $paged ) ) $paged = 1;
if ( $paged > $p + 1 ) p_link( 1, 'First' );
if ( $paged > $p + 2 ) echo '<li class="unavailable"><a href="#">&hellip;</a></li>';
for( $i = $paged - $p; $i <= $paged + $p; $i++ ) { // Middle pages
if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<li class='current'><a href='#'>{$i}</a></li> " : p_link( $i );
}
if ( $paged < $max_page - $p - 1 ) echo '<li class="unavailable"><a href="#">&hellip;</a></li>';
if ( $paged < $max_page - $p ) p_link( $max_page, 'Last' );
}
function p_link( $i, $title = '' ) {
if ( $title == '' ) $title = "Page {$i}";
echo "<li><a href='", esc_html( get_pagenum_link( $i ) ), "' title='{$title}'>{$i}</a></li> ";
}
@terkelg
Copy link

terkelg commented Dec 22, 2012

You saved my day! Thanks a billion!

@rafaeltovar
Copy link

An alternative with UL tag.

if ( ! function_exists( 'foundation_pagination' ) ) :

function foundation_pagination( $p = 2 ) {
    if ( is_singular() ) return;

    global $wp_query, $paged;
    $pagination = '';

    $max_page = $wp_query->max_num_pages;
    if ( $max_page == 1 ) return;
    if ( empty( $paged ) ) $paged = 1;
    if ( $paged > $p + 1 ) $pagination.= p_link( 1, 'First' );
    if ( $paged > $p + 2 ) $pagination .= '<li class="unavailable"><a href="#">&hellip;</a></li>';
    for( $i = $paged - $p; $i <= $paged + $p; $i++ ) { // Middle pages
        if ( $i > 0 && $i <= $max_page ) 
            $pagination .= ($i == $paged ? "<li class='current'><a href='#'>{$i}</a></li> " : p_link( $i ));
    }
    if ( $paged < $max_page - $p - 1 ) $pagination.= '<li class="unavailable"><a href="#">&hellip;</a></li>';
    if ( $paged < $max_page - $p ) $pagination.= p_link( $max_page, 'Last' );

    $pagination = '<ul class="pagination">'. $pagination .'</ul>';
    echo $pagination; 
}
function p_link( $i, $title = '' ) {
    if ( $title == '' ) $title = "Page {$i}";
    return "<li><a href='". esc_html( get_pagenum_link( $i ) ) ."' title='{$title}'>{$i}</a></li> ";
}

@croemmich
Copy link

Thanks! I took your ideas and added some features:
https://gist.github.com/croemmich/5830094

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment