PHP:Wordpress中的自定义分页


PHP : Custom pagination in Wordpress

我将此代码用于自定义分页:

global $wpdb, $table_prefix, $current_user;
get_currentuserinfo();
$umail = $current_user->user_email;
$paged = $wpdb->get_results("SELECT * FROM {$table_prefix}comments WHERE comment_author_email = '$umail'");
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
$pages = COUNT($paged);
$pages = ceil($pages / 2);
$querystring = "";
foreach ($_GET as $key => $value) {
    if ($key != "page") $querystring .= "$key=$value&";
}
// Pagination
for ($i = 1; $i <= $pages; $i++) {
    echo "<a " . ($i == $page ? "class='"selected'" " : "");
    echo "href='"?{$querystring}page=$i";
    echo "'">$i</a> ";
}

这段代码将我的评论分页如下:1 2 3 4 5 6 7 8 9 10 11

如何更改代码以获得如下页码:1 2 3。。。11

谢谢你的帮助。

尝试以下循环:

$page           = 8;//current page
$pages          = 15;//count of all pages
$batch_middle   = 5;//the approximate number of pages in the middle links to display. Current page will be in the middle
$batch_lr       = 1;//number of pages in the left and right links
for($i = 1; $i <= $pages;$i++)  
{  
    //display first links
    if ($i <= $batch_lr) 
    {
        echo $i . ' '; 
        continue;
    }
    //display last links
    if ($i > $pages-$batch_lr) 
    {
        echo $i . ' '; 
        continue;
   }
    //display middle links
    if ($i>=($page-floor($batch_middle/2)) && $i<=($page+floor($batch_middle/2))) 
    {
        echo $i . ' '; 
        continue;
    }
    //placeholder
    echo ' ... ';
    //move the pointer
    $i = ($i < $page) ? ($page-floor($batch_middle/2)-1) : ($pages-$batch_lr) ;
}
//output example 1: 1 2 ... 14 15
//output example 2: 1 2 ... 7 8 9 ... 14 15
//output example 3: 1 2 3 4 5 ... 14 15
//output example 4: 1  ... 6 7 8 9 10 ... 15

$page$pages替换为获取当前页面和总页面数的逻辑
替换$batch_middle$batch_lr以配置第一批、第二批和第三批链路中的多个链路