How to create a reading timer from WordPress content

Following on from the post for How to create a reading timer from Advanced custom fields content, I thought I’d share how to create the same thing but for the standard WordPress content. So, here is a little function that calculates the average reading time based upon the post content.

Working out the reading time

First, place this within your theme or child/custom theme’s functions file.

// Reading time calculator
  function reading_time($the_post_ID) {
    // get the content
    $the_content = get_post_field( 'post_content', $the_post_ID );
    // count the number of words
    $words = str_word_count( strip_tags( $the_content ) );

    // calculate reading time based on number of words
    // divided by 200 - average words read per minute
    $readingtime = ceil($words / 200);
  if ($readingtime <= 1) { // If the reading time is equal to or less than 1
    $timer = " minute";
  } else {
    $timer = " minute";
  }
  if ($readingtime == 0) { // if the reading time equals 0 then change it to 1
    $totalreadingtime = "1" . $timer . " read";
  } else {
    $totalreadingtime = $readingtime . $timer . " read";
  }
  return $totalreadingtime;
}

 

Display the reading time

To display the reading time within your template files use this snippet.

// Display the reading time
// Wrap this in the HTML tag of your liking
echo reading_time(get_the_ID());

If you like this post then you might like this one too.
How to create a reading timer from ACF Pro flexible content