默认情况下,WordPress从oldest to newest. 即使Settings-Discussion
选项已修改。这是症结所在,人们可能会怀疑更改这些设置以重新组织评论页面,但事实并非如此。这些设置基本上定义了default comment loop, 以及何时显示哪个页面$cpage
为空。
明确地说,何时$cpage
为空表示您位于帖子URL上,而不是该帖子中的评论页面。
这意味着,问题不在于获取链接,因为代码不是动态的。问题在于如何显示注释。有两种选择\'default_comments_page\'
和\'comment_order\'
每个都有两个设置four configurations. 每个都需要唯一的偏移计算。在下面的代码中,您可以看到在正确的页面上显示正确注释所需的偏移量计算。
function grab_comments( $remainder, $page_total){
global $cpage;
$per_page = get_option(\'comments_per_page\');
$order_asc = get_option(\'comment_order\') == \'asc\';
$order = $order_asc ? \'ASC\' : \'DESC\'; //Affects the offset
if( get_option(\'default_comments_page\') == \'newest\' )
{
if ($cpage == \'\') $cpage = $page_total;
if (get_option(\'comment_order\') == \'desc\')
{
// ; 8,7,6; 5,4,3; 2,1,0
$offset = ( $page_total - $cpage ) * $per_page;
}
else
{
// ; 6,7,8; 3,4,5; 0,1,2
$offset = ( ( $cpage - 1 ) * $per_page ) - ( $per_page - $remainder );
if($offset < 0){
$offset = 0;
$per_page = $remainder != 0 ? $remainder : $per_page;
}
}
}
else // default page: \'oldest\'
{
if ($cpage == \'\') $cpage = 1;
if (get_option(\'comment_order\') == \'asc\')
{
// 0,1,2; 3,4,5; 6,7,8;
$offset = ( $cpage - 1 ) * $per_page;
}
else
{
// 2,1,0; 5,4,3; 8,7,6;
$offset = ( ( $page_total - $cpage ) * $per_page ) - ($per_page - $remainder);
if($offset < 0){
$offset = 0;
$per_page = $remainder != 0 ? $remainder : $per_page;
}
}
}
$args = array(
\'post_id\' => get_the_id()
, \'number\' => $per_page
, \'offset\' => $offset
, \'order\' => $order);
return get_comments($args);
}