Pages_Comments_Links()不起作用

时间:2013-01-06 作者:Chris

我正在使用paginate\\u comments\\u links()获取当前用户的所有注释:

<?php
global $current_user;
get_currentuserinfo();
$userid = $current_user->ID;

$args = array(
    \'user_id\' => $userid,
   \'number\' => 2,
);
$comments = get_comments($args);
foreach($comments as $comment) :
    echo(\'<br />\' . $comment->comment_date . \'<br />\' . $comment->comment_content);
endforeach;

paginate_comments_links();
?>
但是,没有显示分页。我已经发表了7条评论,所以我希望每页看到2条评论,总共4页。但是,根本没有显示分页。

打开php中的错误会显示:注意:未定义的属性:WP\\u查询::/WP includes/comment中的$注释。php在线788

我哪里做错了?

1 个回复
最合适的回答,由SO网友:Ed Burns 整理而成

paginate_comment_links() 实际上对注释进行了一些神奇的设置,然后调用标准wordpresspaginate_links(). 我相信部分魔法利用了wp_list_comments().

因此,即使您的代码工作得很好,也不能使用内置的分页注释功能,因为您没有使用wp_list_comments(). 你不能使用这个功能,因为它只获取特定帖子或页面的评论,而你无论如何都不想这样做。。。

解决方案是使用paginate_links() 因为这种方法实际上非常灵活。为了做到这一点,你需要知道两件事——你在哪一页,总共有多少页。为了适应这种情况,我们需要从get_comments() 这不是最优的,但我们会利用现有资源。下面是代码可能的外观(完全未经测试,因此没有保修-抱歉):

<?php
$comments_per_page = 5;
$current_page = max( 1, get_query_var(\'paged\') );

global $current_user;
get_currentuserinfo();
$userid = $current_user->ID;

$args = array(\'user_id\' => $userid, \'number\' => 0);
$comments = get_comments($args);

$total_comments = count($comments);
$total_pages = (($total_comments - 1) / $comments_per_page) + 1;

$start = $comments_per_page * ($current_page - 1);
$end = $start + $comments_per_page;

// Might be good to test and make sure there are comments for the current page at this point!

for($i = $start; $i < $end; $i++) {
    echo(\'<br />\' . $comment->comment_date . \'<br />\' . $comment->comment_content);
}

if($total_pages > 1) {
    $args = { \'total\'=>$total_pages, \'current\'=>$current_page };
    paginate_links($args);
}
?>
这可能并不完美,但它应该能帮助你找到正确的方向。唯一难看的是,我们正在读取查询中的所有注释,而不是将其限制为我们想要的页面上的注释-但我们没有另一种好方法来获取用户现有的注释数量(get_comment_count 是基于帖子的)。

结束

相关推荐

如何正确使用Comments-template.php

我想修改已登录用户和未登录用户的评论表单。我通过更改注释修改了未登录用户的表单。php,但我不太确定如何为登录用户修改我的表单。我知道我必须使用comments\\u template(),但每当我尝试在页面中使用它时。php,我遇到这样的错误Notice: Undefined variable: args in {PATH}/twwr-theme/comments-template.php on line 13 这些是我评论的内容。php,有点乱<?php if (!empty

Pages_Comments_Links()不起作用 - 小码农CODE - 行之有效找到问题解决它

Pages_Comments_Links()不起作用

时间:2013-01-06 作者:Chris

我正在使用paginate\\u comments\\u links()获取当前用户的所有注释:

<?php
global $current_user;
get_currentuserinfo();
$userid = $current_user->ID;

$args = array(
    \'user_id\' => $userid,
   \'number\' => 2,
);
$comments = get_comments($args);
foreach($comments as $comment) :
    echo(\'<br />\' . $comment->comment_date . \'<br />\' . $comment->comment_content);
endforeach;

paginate_comments_links();
?>
但是,没有显示分页。我已经发表了7条评论,所以我希望每页看到2条评论,总共4页。但是,根本没有显示分页。

打开php中的错误会显示:注意:未定义的属性:WP\\u查询::/WP includes/comment中的$注释。php在线788

我哪里做错了?

1 个回复
最合适的回答,由SO网友:Ed Burns 整理而成

paginate_comment_links() 实际上对注释进行了一些神奇的设置,然后调用标准wordpresspaginate_links(). 我相信部分魔法利用了wp_list_comments().

因此,即使您的代码工作得很好,也不能使用内置的分页注释功能,因为您没有使用wp_list_comments(). 你不能使用这个功能,因为它只获取特定帖子或页面的评论,而你无论如何都不想这样做。。。

解决方案是使用paginate_links() 因为这种方法实际上非常灵活。为了做到这一点,你需要知道两件事——你在哪一页,总共有多少页。为了适应这种情况,我们需要从get_comments() 这不是最优的,但我们会利用现有资源。下面是代码可能的外观(完全未经测试,因此没有保修-抱歉):

<?php
$comments_per_page = 5;
$current_page = max( 1, get_query_var(\'paged\') );

global $current_user;
get_currentuserinfo();
$userid = $current_user->ID;

$args = array(\'user_id\' => $userid, \'number\' => 0);
$comments = get_comments($args);

$total_comments = count($comments);
$total_pages = (($total_comments - 1) / $comments_per_page) + 1;

$start = $comments_per_page * ($current_page - 1);
$end = $start + $comments_per_page;

// Might be good to test and make sure there are comments for the current page at this point!

for($i = $start; $i < $end; $i++) {
    echo(\'<br />\' . $comment->comment_date . \'<br />\' . $comment->comment_content);
}

if($total_pages > 1) {
    $args = { \'total\'=>$total_pages, \'current\'=>$current_page };
    paginate_links($args);
}
?>
这可能并不完美,但它应该能帮助你找到正确的方向。唯一难看的是,我们正在读取查询中的所有注释,而不是将其限制为我们想要的页面上的注释-但我们没有另一种好方法来获取用户现有的注释数量(get_comment_count 是基于帖子的)。

相关推荐

Geoip shortcodes in comments

我想知道如何从geoip插件添加国家/地区短代码(https://pl.wordpress.org/plugins/geoip-detect/) 输入注释字段。[geoip\\u detect2 property=“country”]据我所知,注释字段必须是所见即所得字段(默认情况下不是文本)。还有其他方法吗?通过自定义php函数或其他方式?你好,Michal