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
    Commented Nov 14, 2019 at 16:10
  • @Bikram See my update. :)
    – fuxia
    Commented 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
    Commented Apr 12, 2013 at 11:18
  • you're right :/
    – JMau
    Commented Apr 19, 2013 at 20:01

Your Answer

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

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