danixland

pagination function

Jun 11th, 2011
368
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function sog_use_permalink() {
  2.     if ( get_option('permalink_structure') != '' ) {
  3.         return true;
  4.     } else {
  5.         return false;
  6.     }
  7. }
  8.  
  9. function sog_pagination( $query, $baseURL = '', $range = 2 ) {
  10.     if ( ! $baseURL ) $baseURL = get_bloginfo( 'url' );
  11.     $page = $query->query_vars["paged"];
  12.     $total_pages = $query->max_num_pages;
  13.     if ( !$page ) $page = 1;
  14.     $qs = $_SERVER["QUERY_STRING"] ? "?".$_SERVER["QUERY_STRING"] : "";
  15.     // Only necessary if there's more posts than posts-per-page
  16.     if ( $query->found_posts > $query->query_vars["posts_per_page"] ) {
  17.         echo '<div class="paging">';
  18.         // First link
  19.         if( $page-$range > $range ) {
  20.             if( sog_use_permalink() ) {
  21.                 echo '<a class="next" href="'.$baseURL.'/page/1/'.'">First [1]</a>';
  22.             } else {
  23.                 echo '<a class="next" href="'.$baseURL.'/'.add_query_arg('paged', '1', $qs).'">First [1]</a>';
  24.             }
  25.         }
  26.         // Previous link?
  27.         if ( $page > 1 ) {
  28.             if( sog_use_permalink() ) {
  29.                 echo '<a class="previous" href="'.$baseURL.'/page/'.($page-1).'/'.'">&laquo; previous</a>';
  30.             } else {
  31.                 echo '<a class="previous" href="'.$baseURL.'/'.add_query_arg('paged', ($page-1), $qs).'">&laquo; previous</a>';
  32.             }
  33.         }
  34.         // Loop through pages
  35.         for ( $i=1; $i <= $total_pages; $i++ ) {
  36.             // Current page or linked page?
  37.             if ( $i == $page ) {
  38.                 echo '<span class="active">' . $i . '</span>';
  39.             } else {
  40.                 if( $i == $page+$range || $i == $page-$range ) {
  41.                     if( sog_use_permalink() ) {
  42.                         echo '<a href="'.$baseURL.'page/'.$i.'/">'.$i.'</a>';
  43.                     } else {
  44.                         echo '<a href="'.$baseURL.add_query_arg('paged', $i, $qs).'">'.$i.'</a>';
  45.                     }
  46.                 }
  47.             }
  48.         }
  49.         // Next link?
  50.         if ( $page < $total_pages ) {
  51.             if( sog_use_permalink() ) {
  52.                 echo '<a class="next" href="'.$baseURL.'/page/'.($page+1).'/'.'">next &raquo;</a>';
  53.             } else {
  54.                 echo '<a class="next" href="'.$baseURL.'/'.add_query_arg('paged', ($page+1), $qs).'">next &raquo;</a>';
  55.             }
  56.         }
  57.         // Last link
  58.         if( $page+$range < $total_pages ) {
  59.             if( sog_use_permalink() ) {
  60.                 echo '<a class="next" href="'.$baseURL.'/page/' . $total_pages . '/'.'">Last [' . $total_pages . ']</a>';
  61.             } else {
  62.                 echo '<a class="next" href="'.$baseURL.'/'.add_query_arg('paged', ($total_pages), $qs).'">Last [' . $total_pages . ']</a>';
  63.             }
  64.         }
  65.         echo '</div>';
  66.     }
  67.     wp_reset_postdata();
  68. }
RAW Paste Data