Total word count for posts by one author

I use a plug-in called Post Word Count to sum the total number of published words across my entire site … then again, I’m the only author, so this is a pretty simple example. But you could start with this plug-in and add a filter that changes the query based on the author’s ID. Basically:

function post_word_count_by_author($author = false) {
    global $wpdb;
$now = gmdate("Y-m-d H:i:s",time());

    if ($author) $query = "SELECT post_content FROM $wpdb->posts WHERE post_author="$author" AND post_status="publish" AND post_date < '$now'";
        else $query = "SELECT post_content FROM $wpdb->posts WHERE post_status="publish" AND post_date < '$now'";

$words = $wpdb->get_results($query);
if ($words) {
    foreach ($words as $word) {
        $post = strip_tags($word->post_content);
        $post = explode(' ', $post);
        $count = count($post);
        $totalcount = $count + $oldcount;
        $oldcount = $totalcount;
    }
} else {
    $totalcount=0;
}
return number_format($totalcount);
}

This function will return a total count of all published words by that author (based on the author ID). If you don’t specify an author ID, it will return a count of all published words. This won’t count post revisions, drafts, or schedule posts, just those currently visible to users.

Disclaimer, I haven’t tested this yet, but it’s based on the original Post Word Count plug-in and should work just fine.

Leave a Comment