Условно обрабатывать комментарии при игнорировании ответов

Я использую тему 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' ); 

Проблема в том, что когда я удаляю ответы на комментарий, точка отчисляется от автора ответа (хотя этот автор никогда не получал точку для ответа в первую очередь).

Я хочу удалить ответы с комментариями, не вычитая точку у своих авторизованных пользователей.

Просто проверьте, имеет ли комментарий родительский элемент до уменьшения точек. get_comment() запись Codex для функции get_comment() , вы заметите, что в том виде, в котором вы используете эту функцию, вам будет возвращен объект, содержащий ключи, соответствующие именам wp_comments таблицы wp_comments . wp_comments внимание, что в wp_comments scehma есть столбец с именем comment_parent который содержит идентификатор сообщения родителя комментария или по умолчанию равен 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' );