我使用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\' );
问题是,当我删除对某条评论的回复时,该回复的作者会被扣分(即使该作者从一开始就没有收到回复的分数)。
我想删除评论回复,而不从其创作用户身上扣减一分。
最合适的回答,由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\' );