web-dev-qa-db-ja.com

抜粋ワード数

以下のWPSnippsのコードは抜粋文字カウンターを提供しますが、私は代わりに単語を数えたいのですが。これを行う方法について誰かが考えを持っていますか?

// 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

@ siouxfan45あなたの質問を間違って読んで申し訳ありません!

これが正しい答えです。コードを少し改善するだけで、単語を数えることができます。

これら2行を変更するだけです。

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

これに:

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

"しない"、 "だ"、 "したい"、 "しない"などの単一引用符を含む単語は2つとして数えられます。それらを1つのWordとして数えたい場合は、.split()を次のように変更します。

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

私はこの時間が正しいことを願っています!

3
KBRckr

この素晴らしい答えを実装している間(ありがとう)、元のコードで使用されていた奇妙な非アクティブフィールドよりも数字を表示するのに適した方法だと思いました。これはテキストエリアのすぐ下に "Word count:$ Word_count"だけを表示します。以下のコードは、収縮を1つのWordとしてカウントする(しない)ためのKBRckrのコードも組み込んでいます。

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