这不是一个bug。
如果您查看从line 2100 of wp/wp-includes/comment-template.php 在wp_list_comments
函数,您将看到如果per_page
参数已设置且其值与主wp\\U查询的值不同,它将执行单独的注释查询并显示这些注释查询,而不是已排序的注释查询。
要解决此问题,您需要创建一个自定义助行器并将其传递给wp_list_comments
函数并在此执行排序:
wp_list_comments([\'walker\' => new MySortingCommentWalker()]);
考虑到您正在编写插件,您可以使用
wp_list_comments_args
筛选以确保始终使用自定义助行器:
add_filter(\'wp_list_comments_args\', function($args) {
$args[\'walker\'] = new MySortingCommentWalker();
return $args;
});
您可以扩展默认值
Walker_Comment
类,重写
paged_walk
方法并对其中的注释进行排序。排序后,可以将它们传递给父方法:
class MySortingCommentWalker extends \\Walker_Comment
{
public function paged_walk($elements, $max_depth, $page_num, $per_page, ...$args)
{
// Pass $elements to your sorting function here
return parent::paged_walk($elements, $max_depth, $page_num, $per_page, $args);
}
}