文字数を意識して記事を書く
ブログを書いたり、SEOを考えるうえで、本文の文字数というのは結構重要です。
本文の文字数はGoogleがコンテンツの質を評価する指標の一つになっているそうで、少なすぎるとコンテンツの質が低いと判断される可能性が出てくるようです。
一般的には最低でも400字と言われていますが、400字なんてあっという間ですからあまり最低ラインにはこだわらなくても良さそうですが。。
ただ、サイトのポリシーやコンテンツの内容によっては読みやすい文字数というのがなんとなくある気がするので文字数にはちょっと気を配りたいところ。
1万字の記事と400字の記事が混在しているブログは読みにくいと思うのです。
studio9ではガッツリ読める記事を意識的に多くしているので、平均で1記事あたり5,000字近いです。多い記事だと10,000字を超えてるものもあります。一方、こちらのパーソナルは比較的サラリと読めるようにしたいので、1,500~3,000字程度が良いかなぁと考えている所です。
そんなわけで、記事の文字数を投稿一覧に表示する方法を探したのですが、なかなか良いのが見つからなかったので自分で作ってみました。おまけでタイトルの文字数も一覧表示させます。
タイトルの文字数は投稿画面にリアルタイム表示させるのが便利です
⇒ WordPressの投稿画面にリアルタイムでタイトル文字数を表示させる方法
本文文字数を一覧表示する方法
方法はいたって簡単で、下記コードをfunctions.phpにコピペするだけ。こんな感じになります。
*ご使用は自己責任にてお願いしますね^^;
数字のスタイルをCSSで変更する場合はこちらをどうぞ!
- 管理ページのCSSを超簡単に変更できるプラグインAdd Admin CSSが便利!
ちなみに、個別に文字数を確認したいなら投稿画面のテキストエリア左下に、デフォルトで文字数が表示されてます(リアルタイムじゃないので下書き保存しないと正確に表示されない)。
ホントはココの数字を持って来て表示したかったのですが、どうしていいかわからなかったので、$post の post_content からやや強引に文字数をカウントしてみました。。
/********************** 記事一覧に文字数を表示 **********************/ function manage_posts_columns($columns) { //項目を追加 $columns['main_wordcount'] = "本文文字数"; $columns['title_wordcount'] = "タイトル文字数"; return $columns; } function add_column($column_name, $post_id) { global $post; if( $column_name == 'main_wordcount' ) { $main_word = str_replace( array("\r\n","\r","\n"), '', strip_tags( $post -> post_content)) ; $main_word = mb_strlen( $main_word); echo $main_word; } if( $column_name == 'title_wordcount' ) { //SJISに変換してカウント $title_word = (strlen(mb_convert_encoding($post -> post_title,'SJIS', 'UTF-8')))/2; echo $title_word; } } add_filter( 'manage_posts_columns', 'manage_posts_columns' ); add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );
上記すべてをそのままfunctions.phpの中の適当な場所(最終行の ?>の前ならどこでもOK)にコピペすればOKです。
投稿一覧に表示するための項目を作成するためには「manage_posts_columns」というフィルターフックを使うそうで、始めの 「function manage_posts_columns 」で加えたい項目を追加します。今回は本文とタイトルの文字数を表示させたかったので、「main_wordcount」と「title_wordcount」を追加。名前は任意でOK。
投稿一覧に値を表示するためには「manage_posts_custom_column」というアクションフックを使い、$postから値を取得。(関数の中なのでglobal つける)
本文は「$post -> post_content」から取得し、「strip_tags」でタグを除去したのち、「str_replace」で改行コードも除去してみました。
それを「mb_strlen」でカウントする感じ。
投稿画面左下の表示とは若干違うのですが(汗)、±1%程度の誤差です。何が違うんでしょうねぇ。。
どうせならタイトルの文字数も表示させようということで、「$post -> post_title」から値を取得。全角1文字、半角0.5文字でカウントしたかったので、「strlen」でカウントしたら全角1文字3バイトとなってしまいました。。
どうやらUTF-8の全角文字は3バイト(3カウント)らしいので、一旦SJISに変換してからカウントすることに。
strlenで全角文字が3バイトになる
めでたく全角を2バイトでカウントできたので2で割ったら完成。
無事に一覧画面に表示できました。ちなみに必要ないときは「表示オプション」からいつでも非表示にできます^^