The code below from WPSnipps provides an excerpt character counter, but I’d like to count words instead. Does anybody have an idea of how to do this?

// Excerpt character count
function excerpt_count_js(){
      echo '<script>jQuery(document).ready(function(){
jQuery("#postexcerpt .handlediv").after("<div style=\"position:absolute;top:0px;right:5px;color:#666;\"><small>Excerpt length: </small><input type=\"text\" value=\"0\" maxlength=\"3\" size=\"3\" id=\"excerpt_counter\" readonly=\"\" style=\"background:#fff;\"> <small>character(s).</small></div>");
     jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);
     jQuery("#excerpt").keyup( function() {
     jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);
   });
});</script>';
}
add_action( 'admin_head-post.php', 'excerpt_count_js');
add_action( 'admin_head-post-new.php', 'excerpt_count_js');

2 Answers
2

Sorry for reading wrong your question @siouxfan45!

here is the right answer:
just a little improvement in your code and you can count words!

just change these two lines:

jQuery("#excerpt_counter").val(jQuery("#excerpt").val().length);

to this:

jQuery("#excerpt_counter").val(jQuery("#excerpt").val().split(/\S\b[\s,\.\'-:;]*/).length - 1);

Words with single quote like “don’t”, “it’s”, “I’d”, “won’t”…will count as two!
If you want them to count as a single word, then you will want to change the .split() to this:

.split(/\S+\b[\s,\.\'-:;]*/)

Hope I’m right this time!

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *