【WordPress】記事文字数のカウント方法(コア機能・プラグイン)チェックと、フロントへの出力について
| 更新: 2024/02/10 | 2753文字
今回は、WordPressの『記事文字数のカウント』について取り上げます。勿論、誰も興味がないクソ文を20000文字書いたってダメなんですけど(笑)、文字数的にも『ある程度まとまったコンテンツがあるか』はチェックしたいところだと思います。 コア機能・プラグインによる文字数のカウントや、『カウントしてフロントに出力する(ユーザーがコンテンツ量を視認できる)』というところも行ってみます。さっそく確認してきましょう。
目次
WordPressでの、デフォルト搭載/プラグインでの、記事文字数のカウント方法
クラシックエディタ使用時の文字数カウント
クラシックエディタ使用時の文字数カウント・表示部分は『記事編集部分の下』に出てきます。WordPressにデフォルトで搭載されている機能ですね。とくにフィールドに格納されている数値では無いようです。
というのも、WordPressには『〇〇(ドメイン)/wp-admin/js/word-count.min.js』に、カウント用スクリプトが入っています。このスクリプトが、文字入力数に応じて『wp-word-countというidが付いている部分』の数値を変えているからです。
ブロックエディタ使用時の文字数カウント
ブロックエディタ使用時です。ちょっとわかりにくいんですが、画面の上のほうに小さい『i』のようなアイコンがあり、クリックすると文字数が確認できます。使っているスクリプトは違うかも(word-count.min.jsじゃなくて、idがwp-editor-js-translationsというスクリプトが出力されている)
文字数がクラシック使用時と少しずれています。理由は、p-editor-js-translationsスクリプト内のパラメーターに『Word count type:characters_including_spaces』というのがあるからです(スペース含む)。『半角/全角スペースや記号などを含まないカウント』をしている場合は、数値上ズレが発生する場合があります。
プラグインを利用した文字数カウント(例:WP Word Count)
デフォルト搭載機能でもなんとかなるけど、より詳細に管理画面で確認したい場合はWP Word Countプラグインが良いでしょう。管理画面一覧などでも確認しやすくなります。
■WP Word Countプラグイン
https://ja.wordpress.org/plugins/wp-word-count/
とはいえ、このような機能は自作できるかもしれません。 文字数を『フィールドから呼び出す』または『the_content()のタグを含まない値を計測』『そして追加カラムに表示』と言った流れです。manage_edit-post_columns記事などもご覧になってください。
■manage_edit-post_columns記事(当サイト内)
/tag/manage_edit-post_columns/
WordPressで、記事文字数をカウントして、フロント出力する方法
失敗例(2000字の記事で4000など、やたら多い文字数が出る)
それではさっそくやってみましょう。PHPには与えられた文字列の長さをチェックするファンクションがあります。日本語などマルチバイト文字を含むので『mb_strlen』(マルチバイトじゃない場合はstrlen)を、『post_content』の文字列に使えばokという発想になりました。個別の記事ページに出力したいので『single.php』に記載しました。
で、管理画面でのカウントは『2321』なんですけど・・・
2倍近い値がでてしまいました。これは文字数カウントのサイトに、記事部分をコピーして貼り付けた値に近い数値です(スペース込み4607が出る。厳密なカウント方法は違うかも。)データベースpost_contentの部分には、執筆に使ったhtmlタグなども入っています。どうにかタグ除去はできないでしょうか?
そこで、適当に『php タグ除去』とかで検索してたら『strip_tags』というものを見つけたので、これをかませてみました。strip_tagsに渡すのは『get_post_fieldで取った記事本文』。2番目のパラメーターに『取り除かないタグを指定』もできるそうです(今回は使っていません)。
使い方は同様に、『single.php』に記載。
表示例
すこしカウントのしかたの違いなどがあると思うんですけど、管理画面でのカウントに近い値・2500程度が出てきました。 (タグ内マルチバイト文字もカウント・または 自己終了型XHTMLタグ無視か?) これで、ユーザー・読者にも、ある程度コンテンツボリュームを確認いただけるようになります。
参考リンク(PHP関連)
■strip_tags(phpマニュアル)
https://www.php.net/manual/ja/function.strip-tags.php
■mb_strlen(phpマニュアル)
https://www.php.net/manual/ja/function.mb-strlen.php
あとがき・まとめ
- WordPressはデフォルトで文字数カウントができる(クラシック/ブロックで表示は違う)
- WP Word Count等が便利
- phpのファンクション『mb_strlen』で、マルチバイト文字のカウントができるが、タグも含んでしまう
- phpのファンクション『strip_tags』では、与えられた文字列に対してタグの除去ができる
まとめると、このようなところでしょうか。文字数をフロント側で確認できると、ユーザー・読者が『ボリュームがどのくらいあるかわかる』というメリットがあります。一覧ページでループ回して、表示させてもよいでしょう。
【カテゴリ】- WordPressファンクションetc
【タグ】- mb_strlen(PHP), PHP, strip_tags(PHP), WordPress