为什么旧的评论回复评论也出现在评论列表的末尾

时间:2015-01-22 作者:Bundarr

编辑:更新了使用get\\u comments offset参数的函数。问题仍在发生。

我在一篇文章的末尾显示了5条评论,并使用ajax请求其余的评论。在本页上,http://www.universityaffairs.ca/opinion/in-my-opinion/phd-studies-in-canada-a-dilemma-for-international-students/#comments

JoshanRodrigues的评论是对另一条评论的回复。这很好。

当我通过ajax点击更多评论链接加载其余评论时,Joshan Rodrigues的评论再次出现在列表的末尾,即使评论日期较旧。试试看。

下面是ajax调用的函数。

function get_more_comments() {
global $wpdb; // this is how you get access to the database

$comments = get_comments( 
                array(
                    \'post_id\'   => $_REQUEST[\'post_id\'],
                    \'status\'    => \'approve\',
                    \'order\'     => \'ASC\',
                    \'offset\'    => 5,
                    \'number\'    => 1000
                )
            );

echo \'<ol class="commentlist">\';
wp_list_comments( 
            array(
                \'avatar_size\' => 0,
                \'walker\'    => new Walker_Comment_custom(),
            ),
            $comments
        );
echo \'</ol>\';

die(); 
}
知道为什么会这样吗?

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

我认为一个很好的方法就是使用comment__not_in 的参数get_comments() 作用发送当前在Ajax请求中显示的注释的ID,并在comment__not_in 论点例如,您可以将这些ID发送为comment__not_in[] 查询变量(数组格式):

$comment_not_in = $_REQUEST[\'comment__not_in\'];
$comments = get_comments( 
                array(
                    \'post_id\'         => $_REQUEST[\'post_id\'],
                    \'status\'          => \'approve\',
                    \'order\'           => \'ASC\',
                    \'comment__not_in\' =>  $comment_not_in,
                    \'number\'          => 1000
                )
            );
此外,我建议清理数据。由于ID应该是整数,我们可以这样做:

$comment_not_in = array_map( \'intval\', $_REQUEST[\'comment__not_in\'] );
$comments = get_comments( 
                array(
                    \'post_id\'         => (int) $_REQUEST[\'post_id\'],
                    \'status\'          => \'approve\',
                    \'order\'           => \'ASC\',
                    \'comment__not_in\' =>  $comment_not_in,
                    \'number\'          => 1000
                )
            );

结束

相关推荐

从管理面板提交AJAX表单

我在管理面板中创建了一个页面,并在那里创建了CSV导出/导入表单。我的表格的作用是“/wp-admin/admin-post.php“。我想通过ajax提交该表单。我想保持在我在管理面板中创建的同一页面上。这是我用表单创建管理页面的代码。add_action( \'admin_menu\', \'suiteImportExport\' ); function suiteImportExport(){ add_submenu_page(\'edit.php?post_type=su