WP管理画面でタイトル文字数カウンターを表示するカスタマイズ方法(旧ビジュアルエディター用)

SEO的にタイトルタグの文字数は、32文字が良いとよく言われています。

中には、「28文字だ」とか、「30文字だ」とか、各々の考えで、いろいろとあります。

どの文字数がベストかはさておき、Wordpressで記事のタイトルを決めるとき「タイトルの文字数」を気にしている方も、ある程度おられるかと思います。

ただ、Wordpress管理画面では、「本文の文字数表示カウンター」はあっても、「タイトルの文字数表示カウンター」はデフォルトでありません。

記事本文の文字数

そこで先日、「タイトル文字数カウンター」が表示されるよう、以下のようにカスタマイズしてみました。

Wordpressタイトルの文字数カウント表示

確かに、タイトル入力部分にカウンターがあると、タイトル文字数が一目瞭然です。

「これはこれで結構便利かも」ということで今回は、上記のような「タイトルの文字数を表示するカスタマイズ」をコピペ一発でできる方法を紹介したいと思います。

また加えて、「半角文字数を0.5」、「全角文字数を1」として数えるカスタマイズ方法も同時に紹介したいと思います。

全角と半角を分けてタイトル文字数をカウントする

全角と半角をどのようにカウントするかはSEO的好みになると思います。
当記事の内容は、旧ビジュアルエディター用のものです。WordPress5.0からデフォルトになったブロックエディターには対応していません。
スポンサーリンク
レクタングル(大)広告

投稿管理画面のタイトル文字数を表示する方法

カスタマイズ方法は簡単で、以下の項目で紹介するコードどちらかをテーマ(子テーマ)のfunctions.phpにコピペするだけです。

タイトル文字数カウンターは、投稿・固定ページの管理画面に表示されます。どうせ管理画面に表示するものなので、スタイルはインラインで行っています。

全角半角どちらとも1文字としてカウントする方法

全角・半角の区別なく、どの文字も1文字としてカウントする場合は、以下のコードをfunctions.phpにコピペしてください。

//Wordpress投稿画面のタイトル文字数をカウントする
function count_title_characters() {?>
<script type="text/javascript">
jQuery(document).ready(function($){
  //in_selの文字数をカウントしてout_selに出力する
  function count_characters(in_sel, out_sel) {
    $(out_sel).html( $(in_sel).val().length );
  }

  //ページ表示に表示エリアを出力
  $('#titlewrap').after('<div style="position:absolute;top:-24px;right:0;color:#666;background-color:#f7f7f7;padding:1px 2px;border-radius:5px;border:1px solid #ccc;">文字数<span class="wp-title-count" style="margin-left:5px;">0</span></div>');

  //ページ表示時に数える
  count_characters('#title', '.wp-title-count');

  //入力フォーム変更時に数える
  $('#title').bind("keydown keyup keypress change",function(){
    count_characters('#title', '.wp-title-count');
  });

});
</script><?php
}
add_action( 'admin_head-post-new.php', 'count_title_characters' );
add_action( 'admin_head-post.php', 'count_title_characters' );

すると、以下のように全半角区別なく1文字としてカウントされます。

Wordpressタイトルの文字数カウント表示[4]

全角は1文字、半角は0.5文字としてカウントする方法

全角は1文字、半角は0.5文字としてカウントしたい場合は、以下のコードをfunctions.phpにコピペします。

//Wordpress投稿画面のタイトル文字数をカウントする
function count_title_characters() {?>
<script type="text/javascript">
jQuery(document).ready(function($){
    //全角を1、半角を0.5として数える
    function count_zen_han_characters(str) {
      len = 0;
      str = escape(str);
      for (i=0;i<str.length;i++,len++) {
        if (str.charAt(i) == "%") {
          if (str.charAt(++i) == "u") {
            i += 3;
            len++;
          }
          i++;
        }
      }
      return len / 2;
    }

  //in_selの文字数をカウントしてout_selに出力する
  function count_characters(in_sel, out_sel) {
    $(out_sel).html( count_zen_han_characters($(in_sel).val()) );
  }

  //ページ表示に表示エリアを出力
  $('#titlewrap').after('<div style="position:absolute;top:-24px;right:0;color:#666;background-color:#f7f7f7;padding:1px 2px;border-radius:5px;border:1px solid #ccc;">文字数<span class="wp-title-count" style="margin-left:5px;">0</span></div>');

  //ページ表示時に数える
  count_characters('#title', '.wp-title-count');

  //入力フォーム変更時に数える
  $('#title').bind("keydown keyup keypress change",function(){
    count_characters('#title', '.wp-title-count');
  });

});
</script><?php
}
add_action( 'admin_head-post-new.php', 'count_title_characters' );
add_action( 'admin_head-post.php', 'count_title_characters' );

すると以下のように、全角は1文字、半角は0.5文字としてカウントされます。

全角と半角を分けてタイトル文字数をカウントする[4]

参考

上記で紹介したコードは、以下の記事を参考にさせていただきました。

ブログのタイトルは、Googleの検索結果タイトル尺の関係上32~36文字程度が良いなんて言われます。そこで今回は「Wordpressでのブログ更新に地味に役立つ!投稿画面のタイトル部に文字数カウンタをつけよう!」をブログしちゃいます。

全角、半角を分けてカウントするJavaScriptコードは以下の記事を参考にさせていただきました。

JavaScriptで全角を2、半角を1と数えるコード。

まとめ

こんな感じで、「タイトルカウンター」をコピペ一発で作成することができます。

僕自身、タイトルの文字数自体は、そこまで気にしておらず、多少長くても付けたいタイトルを記入しています。今では、Googleが勝手にタイトル変更とかしてしまいますし。

ただ、30文字前後(未満)であれば、「意図したタイトルが検索結果に表示される可能性は高い」のは間違いないのかなと。ですので、30文字前後で収まるようであれば、そのような”タイトル付け”をするのも良いのかもしれません。

そんなわけで、「タイトルをつけるとき文字数を分かりやすく表示したい」なんて場合は、結構手軽にできるカスタマイズなので、試してみてください。

ちなみに、当記事のタイトル文字数は32文字です(全半角1文字として)。

32文字のタイトル

Simplicity最新版では、全半角区別なく1文字としてカウントする方法が既に実装されています。Simplicity上で同様のカスタマイズを行った場合は、不具合が出る可能性があるのでご注意ください。

『WP管理画面でタイトル文字数カウンターを表示するカスタマイズ方法(旧ビジュアルエディター用)』へのコメント

  1. 名前:izu 投稿日:2017/08/21(月) 23:42:43 ID:e842a6382

    すみません。ちょっとお伺いしたいのですが…。
    いつも、為になるカスタマイズ方法の記事を書かれていらっしゃり参考にさせて頂いています。

    こちらのタイトルの文字数カウントについてですが、
    このカスタマイズによって、
    (ダッシュボードのカスタマイズなので)サイトの表示スピードに影響はないと考えても良いのでしょうか?

    お忙しい中、
    恐れ入りますがご返信頂けましたら幸いです。

    何卒ご教授お願い申しあげます。

  2. アバター画像 名前:わいひら 投稿日:2017/08/22(火) 14:22:51 ID:acb140d2a

    (ダッシュボードのカスタマイズなので)サイトの表示スピードに影響はないと考えても良いのでしょうか?

    はい。
    管理画面の、投稿・固定ページの「投稿」ページをフックしているので、通常のパブリックなページ表示には影響ないと思います。

  3. 名前:美遊☆彡 投稿日:2017/12/25(月) 12:37:41 ID:3c2a43997

    こんにちは。
    ブログいつも拝見させてもらっています。
    知識の広さに驚くばかりです。

    初心者で知識が乏しいのですが、「functions.phpにコピペするだけ」ということですが、どの部分にコピペするとかないのでしょうか?どの部分の後が良いとか?

    初心者すぎる質問ですみません。

  4. 名前:美遊☆彡 投稿日:2017/12/25(月) 12:38:25 ID:3c2a43997

    こんにちは。
    ブログいつも拝見させてもらっています。
    知識の広さに驚くばかりです。

    初心者で知識が乏しいのですが、「functions.phpにコピペするだけ」ということですが、どの部分にコピペするとかないのでしょうか?どの部分の後が良いとか?

  5. アバター画像 名前:わいひら 投稿日:2017/12/25(月) 19:30:18 ID:a135303ee

    基本的に、PHPの文法を崩しさえしなければ、どこに貼ってもOKです。

    ただ、一般的にはfunctions.phpの最後に追記する形で記入すればよいかと思います。

  6. 名前:美遊☆彡 投稿日:2018/01/03(水) 10:29:44 ID:2bb174848

    ご親切に教えていただいて、ありがとうございます。
    本当に簡単にできて、びっくりです。
    本当にありがとうございます。
    はてぶポチしていきますね。

  7. 名前:がぴ 投稿日:2018/02/26(月) 00:55:01 ID:bd8b833e3

    はじめまして。

    ダッシュボードにあるクイックドラフトのタイトルの文字をカウントするのは難しいでしょうか??

  8. アバター画像 名前:わいひら 投稿日:2018/02/27(火) 23:38:24 ID:0c8dc52f9
    add_action( 'admin_head-index.php', 'count_title_characters' );

    上記のコードを追記することでいけるかと思ったのですが、うまく動作しないようです。
    #titleとか#titlewrapは同様に使われているので、いけるかと思ったのですが。
    やっぱちょっと難しいのかもしれません。

  9. 名前:がぴ 投稿日:2018/03/03(土) 00:20:07 ID:3b983bb69

    ありがとうございます!
    やはり難しいのですね。

  10. 名前:yabe 投稿日:2019/01/15(火) 01:06:15 ID:c2f885394

    わいひらさんの記事、いつも参考にさせていただいています。

    コードのコピペ(Code Snippetsに追加しました)により
    従来のクラシックエディタでは文字数を表示することができましたが、
    ワードプレス5から新しくなったブロックエディタではうまく表示されませんでした。
    ブロックエディタで表示させるにはコードをどのように修正すれば良いのでしょうか?

  11. アバター画像 名前:わいひら 投稿日:2019/01/18(金) 22:55:18 ID:73a206a44

    すいません。
    この記事は、ブロックエディター公開前に書いたものなので、現在の対応方法はまだ分かってません。
    本文中にもの旨を追記しておきます。