有条件地处理评论,同时忽略回复

时间:2014-01-28 作者:dkl

我使用WordPress主题来奖励用户发布评论的分数(跟踪用户内部元数据)。但是,他们不会因为回复评论而获得分数。

当我将评论移动到垃圾箱时,通过以下代码从评论作者处扣减一分:

// Remove 1 point if their comment is removed
function deleteAPointFromUser( $comment_id ) {
    $comment = get_comment( $comment_id );
    $authorid = $comment->user_id;
    $currentPointNumber = get_user_meta( $authorid, \'points\', true );

    // Decrement comment author\'s "points" by 1
    update_user_meta( $authorid, \'points\', $currentPointNumber - 1 ); 
}
add_action( \'trash_comment\', \'deleteAPointFromUser\' );
问题是,当我删除对某条评论的回复时,该回复的作者会被扣分(即使该作者从一开始就没有收到回复的分数)。

我想删除评论回复,而不从其创作用户身上扣减一分。

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

只需在递减点之前检查注释是否有父级。正在读取Codex entry for the get_comment() function, 您将注意到,以使用函数的方式,将返回一个对象,其中包含与wp_comments 桌子查看wp_comments scehma, 请注意,有一列名为comment_parent 包含注释父级的帖子ID,或默认为0 如果注释没有父项。因此,您可以通过以下方式达到预期效果:

function deleteAPointFromUser( $comment_id ) {
    $comment = get_comment( $comment_id );

    // Only decrement user \'points\' if the comment being deleted has no parent comment.
    if( $comment->comment_parent == 0 ) {
        $authorid = $comment->user_id;
        $currentPointNumber = get_user_meta( $authorid, \'points\', true );

        update_user_meta( $authorid, \'points\', $currentPointNumber - 1 );
    }
}
add_action( \'trash_comment\', \'deleteAPointFromUser\' );

结束

相关推荐

如何从循环外部的wp_list_Comments中获取特定数据?

我需要一些帮助,对wordpress很陌生。我只需要评论标题和评论日期wp_list_comments 函数,在将$postid声明为全局变量后从外部循环调用。现在,我正在获取有关评论的所有信息,如作者、日期、标题、评论等。那么,我如何才能获得上述特定细节?