Общее количество комментариев пользователей без учета комментариев к их собственным публикациям


В настоящее время я работаю над плагином, на который я намекал здесь, и до сих пор мне удавалось закодировать все, не хватало только одного фрагмента головоломки.

Вот как я получаю общее количество комментариев для 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 учитывалось в сообщениях других пользователей , поэтому я не хочу считать комментарии к собственным сообщениям автора. Возможно ли такое? И если да, то как?

Author: Community, 2013-05-25

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. Этот подход может быть реализован до того, как пользователи напишут комментарии на сайте.

 1
Author: birgire, 2013-05-27 01:04:54