web-dev-qa-db-fra.com

Nombre de mots extrait

Le code ci-dessous de WPSnipps fournit un compteur de caractères d'extrait, mais j'aimerais comptermotsà la place. Est-ce que quelqu'un a une idée de comment faire cela?

// 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');
3
AndrettiMilas

Désolé de mal lire votre question @ siouxfan45!

voici la bonne réponse: il suffit d'améliorer légèrement votre code et de compter les mots!

il suffit de changer ces deux lignes:

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

pour ça:

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

Les mots avec des guillemets simples tels que "ne pas", "c'est", "je", "ne" sera pas ... compteront pour deux! Si vous voulez qu'ils comptent comme un seul mot, vous voudrez changer le .split() en ceci:

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

J'espère que j'ai raison cette fois!

3
KBRckr

Lors de la mise en œuvre de cette excellente réponse (merci!), J'ai mis au point ce qui, à mon avis, est un moyen plus agréable d'afficher le nombre que l'étrange champ inactif utilisé par le code d'origine. Cela montre seulement "Nombre de mots: $ Word_count" juste en dessous de la zone de texte. Le code ci-dessous incorpore également le code de KBRckr pour compter les contractions (ne pas) dans un seul mot.

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');
?>
3
jerclarke