我的目标是分页WP_Comment_Query(). 看来这要么是禁忌,要么是没有可行的信息online, 什么都没有。
为什么?有可能吗?如果是这样,how?
我的目标是分页WP_Comment_Query(). 看来这要么是禁忌,要么是没有可行的信息online, 什么都没有。
为什么?有可能吗?如果是这样,how?
是的,这是可能的,但有点痛。
查看codex page, 唯一值得注意的参数是number
和offset
.
我们需要这两个来创建分页页面。
首先,我们设置$paged
参数,它是当前页面:
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
然后显示评论数:$number = 3;
然后,计算偏移量(查询开始提取注释的位置):$offset = ( $paged - 1 ) * $number;
让我们将它们全部放在arguments变量中:// arguments to filter comments
$args = array(
\'number\' => $number,
\'offset\' => $offset,
\'paged\' => $paged
);
现在让我们点击查询并循环:// the query
$the_query = new WP_Comment_Query;
$comments = $the_query->query( $args );
// Comment Loop
if ( $comments ) {
foreach ( $comments as $comment ) {
echo \'<p>\' . $comment->comment_content . \'</p><br><br>\';
}
} else {
echo \'No comments found.\';
}
好极了。现在我们可以测试添加/page/2
到URL栏检查它是否工作,它确实工作。唯一缺少的是添加分页链接,例如next_posts_link()
作用
问题是我没有找到一种方法max_num_pages
. 在简单的WP\\U查询中,通常可以执行以下操作:
$the_query->max_num_pages
但它在这里不起作用。如果不知道页面的最大数量,我们就无法正确创建分页链接。请注意count($comments)
只会给我们每页的评论总数($number
). 就我个人而言,我通过计算所针对的自定义查询的最大页面数来解决这个问题。我想按用户ID获取评论总数。因此,我使用了如下数字:
$maximum_pages = $user_total_comments / $number;
这对我来说很有效,但我们确实需要一种方法max_num_pages
. 希望有了这个答案will inspire someone to solve the final bit. 至少我们有更多关于分页的信息wp_comment_query()
这里比其他任何地方都好。max_num_pages
. 解决这个问题的一个方法是count()
返回的post数组,并检查它是否与$number
(您在number
数组键),请参见以下内容:$tot_returned_comments = count($comments);
if ($number == $tot_returned_comments) {
echo \'<a href="/comments/page/\' . $nextpage . \'">Next</a>\';
}
这在所有情况下都有效,除非最后一页的帖子数量与您在$number
变量所以,如果你$number
到15,则最终分页页面有15个结果,然后它将显示“下一步”按钮。现在,如果您不关心性能,您可以轻松地运行两个查询。一个不限制结果的count()
结果并使用该计数max_num_pages
价值
但这并不能解决max_num_pages
, 它应该足以让您对wp_comments_query()
.
处理此问题的另一种方法是使用paginate\\u links()和get\\u comments()(或任何类似的查询)。具体来说,为了获得与max\\u num\\u页面等效的页面,可以使用内置函数wp\\u count\\u comments()。
因此,要获得最大的页数,首先要对所有需要的注释进行计数。假设您不想要未经批准的评论:
$all_comments = wp_count_comments();
$all_comments_approved = $all_comments->approved;
将$all\\u comments\\u approved除以每页的评论数很简单。因此,对于每页所需的“n”条注释://Adding one at the end as simple way of rounding up.
$max_num_pages = intval( $all_comments_approved / $comments_per_page ) + 1;
(每页$comments\\u的值应预先设置为>0,并且也用于主评论查询-请参见下文)。根据其他细节,完整分页函数的外观如下所示。(例如:“base”选项有时会因为URL中存在查询变量而变得更加棘手。我不得不在一个应用程序中使用preg\\u replace来解决这个问题。)
$current_page = max(1, get_query_var(\'paged\'));
echo paginate_links(array(
//check codex for how to work with get_pagenum_link and variations
\'base\' => get_pagenum_link(1) . \'%_%\',
\'current\' => $current_page,
\'total\' => $max_num_pages,
\'prev_text\' => __(\'« Previous\'),
\'next_text\' => __(\'Next »\'),
\'end_size\' => 2,
\'mid-size\' => 3
));
。。。剩下的就是格式化输出。。。和主注释查询。后者如下所示:请注意,对于检索到的注释数和计算偏移量而言,每个页面$comments\\u都是至关重要的。还请注意,检索到的对象的总大小受到数量(以及“状态”)的限制。$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$offset = ($paged - 1) * $comments_per_page;
$comments = get_comments(array(
\'status\' => \'approve\',
\'number\' => $comments_per_page,
\'offset\' => $offset
));
我正在使用以下代码进行查询帖子,但我没有得到分页链接。以下代码的问题在哪里。<div id=\"primary\" class=\"content-area\"> <main id=\"main\" class=\"site-main\" role=\"main\"> <?php $arr = array( \'post_type\' => \'post