Excerpt Word Count

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');

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

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(/Sb[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!

Method 2

While implementing this great answer (thanks!) I worked out what I think is a nicer way of displaying the number than the weird inactive field used by the original code. This shows just “Word count: $word_count” right below the textarea. The code below also incorporates KBRckr’s code to count contractions (don’t) as one word.

Screenshot of what my excerpt word count code gives you

<?php
/**
 * Use jQuery to add a word counter to the excerpt box
 *
 * Should attach to all post screens and indicate the number of words just below the #excerpt textarea
 */
function gv_excerpt_word_count_js() {
      echo '
     <script>jQuery(document).ready(function(){
jQuery("#postexcerpt #excerpt").after("Word Count: <strong><span id='excerpt-word-count'></span></strong>");
     jQuery("#excerpt-word-count").html(jQuery("#excerpt").val().split(/S+b[s,.'-:;]*/).length - 1);
     jQuery("#excerpt").keyup( function() {
     jQuery("#excerpt-word-count").html(jQuery("#excerpt").val().split(/S+b[s,.'-:;]*/).length - 1);
   });
});</script>
    ';
}
add_action( 'admin_head-post.php', 'gv_excerpt_word_count_js');
add_action( 'admin_head-post-new.php', 'gv_excerpt_word_count_js');
?>


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x