Общее количество комментариев пользователей без учета комментариев к их собственным публикациям
В настоящее время я работаю над плагином, на который я намекал здесь, и до сих пор мне удавалось закодировать все, не хватало только одного фрагмента головоломки.
Вот как я получаю общее количество комментариев для current_user
:
global $wpdb, $current_user;
get_currentuserinfo();
$userID = $current_user->ID;
$where = 'WHERE comment_approved = 1 AND user_id = ' . $userID ;
$comment_count = $wpdb->get_var("SELECT COUNT( * ) AS total
FROM {$wpdb->comments}
{$where}");
echo 'Total Comments: ' . $comment_count;
Я хочу, чтобы echo
общее количество комментариев current_user
учитывалось в сообщениях других пользователей , поэтому я не хочу считать комментарии к собственным сообщениям автора. Возможно ли такое? И если да, то как?
1 answers
Я не знаю ни о каких функциях WordPress, которые делают это, поэтому вы можете попробовать поиграть с таким запросом (непроверенным):
function get_custom_user_comments_count( $uid ){
global $wpdb;
$sql = "SELECT COUNT(*) as total
FROM {$wpdb->comments} as c
JOIN {$wpdb->posts} as p ON p.ID = c.comment_post_ID
WHERE c.comment_approved = '1'
AND p.post_status ='publish'
AND p.post_type ='post'
AND p.post_author != c.user_id
AND c.user_id = %d";
$comment_count = $wpdb->get_var( $wpdb->prepare( $sql, $uid ) );
return $comment_count;
}
И используйте его так:
global $current_user;
get_currentuserinfo();
echo 'Total Comments: ' . get_custom_user_comments_count( $current_user->ID );
Это предполагает, что комментарии пишутся при входе пользователей в систему, поэтому столбец user_id
в таблице wp_comments заполняется.
Обновление:
Другим подходом было бы собрать количество комментариев на пользователя в мета-файле пользователя.
Вы могли бы попробовать, например, подключиться к действию comment_post
. Этот подход может быть реализован до того, как пользователи напишут комментарии на сайте.