3

I'm using the following code in my function.php to display the top commenters in my theme:

function top_comment_authors($amount = 5){

    global $wpdb;

    $results = $wpdb->get_results('
        SELECT
            COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url
        FROM
            '.$wpdb->comments.'
        WHERE
            comment_author_email != "" AND comment_type = "" AND comment_approved = 1
        GROUP BY
            comment_author_email
        ORDER BY
            comments_count DESC, comment_author ASC
        LIMIT '.$amount

    );

    $output = "<ul>";
    foreach($results as $result){
    $output .= "<li>".get_avatar($result->comment_author_email, 30).' <p>'.(($result->comment_author_url) ? "<a href='".$result->comment_author_url."'>" : "").$result->comment_author.(($result->comment_author_url) ? "</a>" : "")." (".$result->comments_count.")</p></li>";
    }
    $output .= "</ul>";

    echo $output;
}

It works fine, but I'd like to exclude myself, aka the admin/author. Is this possible at all? If so, how would I do that? In what way would I have to modify the code above?

Thanks a lot in advance! :)

2 Answers 2

3

Extend the WHERE clause:

WHERE
    comment_author_email != "" 
    AND comment_author_email != "YOUR_MAIL_ADDRESS" 
    AND comment_type = "" 
    AND comment_approved = 1 
)

If you want to exclude multiple email addresses, use the NOT IN operator and a comma separated list of strings:

AND comment_author_email NOT IN ( "[email protected]", "[email protected]" )
2
  • How to exclude multiple email addresses?
    – Bikram
    Nov 14, 2019 at 16:10
  • @Bikram See my update. :)
    – fuxia
    Nov 14, 2019 at 18:04
-1

comment_author_email is fine but as far as I'm concerned I prefer using user id :

AND user_id!="1" 

It should do the job !

2
  • 1
    User ID 1 is not necessary an admin; it doesn't even have to exist.
    – fuxia
    Apr 12, 2013 at 11:18
  • you're right :/
    – JMau
    Apr 19, 2013 at 20:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.