【WordPress】記事文字数のカウント方法(コア機能・プラグイン)チェックと、フロントへの出力について

更新: 2021/06/22 2786文字

今回は、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プラグインが良いでしょう。管理画面一覧などでも確認しやすくなります。

とはいえ、このような機能は自作できるかもしれません。 文字数を『フィールドから呼び出す』または『the_content()のタグを含まない値を計測』『そして追加カラムに表示』と言った流れです。manage_edit-post_columns記事などもご覧になってください。

WordPressで、記事文字数をカウントして、フロント出力する方法

失敗例(2000字の記事で4000など、やたら多い文字数が出る)

それではさっそくやってみましょう。PHPには与えられた文字列の長さをチェックするファンクションがあります。日本語などマルチバイト文字を含むので『mb_strlen』(マルチバイトじゃない場合はstrlen)を、『post_content』の文字列に使えばokという発想になりました。個別の記事ページに出力したいので『single.php』に記載しました。

で、管理画面でのカウントは『2321』なんですけど・・・

2倍近い値がでてしまいました。これは文字数カウントのサイトに、記事部分をコピーして貼り付けた値に近い数値です(スペース込み4607が出る。厳密なカウント方法は違うかも。)データベースpost_contentの部分には、執筆に使ったhtmlタグなども入っています。どうにかタグ除去はできないでしょうか?

管理画面・実際の値に近い数値を出すプログラム(strip_tagsでタグ除去)

そこで、適当に『php タグ除去』とかで検索してたら『strip_tags』というものを見つけたので、これをかませてみました。strip_tagsに渡すのは『get_post_fieldで取った記事本文』。2番目のパラメーターに『取り除かないタグを指定』もできるそうです(今回は使っていません)。

WordPressで、記事文字数をカウントして、フロント出力するプログラム 使い方は同様に、『single.php』に記載。

表示例

WordPressで、記事文字数をカウントして、フロント出力 表示例 すこしカウントのしかたの違いなどがあると思うんですけど、管理画面でのカウントに近い値・2500程度が出てきました。 (タグ内マルチバイト文字もカウント・または 自己終了型XHTMLタグ無視か?) これで、ユーザー・読者にも、ある程度コンテンツボリュームを確認いただけるようになります。

参考リンク(PHP関連)

あとがき・まとめ

  • WordPressはデフォルトで文字数カウントができる(クラシック/ブロックで表示は違う)
  • WP Word Count等が便利
  • phpのファンクション『mb_strlen』で、マルチバイト文字のカウントができるが、タグも含んでしまう
  • phpのファンクション『strip_tags』では、与えられた文字列に対してタグの除去ができる

まとめると、このようなところでしょうか。文字数をフロント側で確認できると、ユーザー・読者が『ボリュームがどのくらいあるかわかる』というメリットがあります。一覧ページでループ回して、表示させてもよいでしょう。

WordPressサイト制作&リニューアル・機能開発サービス | アトリエSS


【カテゴリ】- PHP・データベースetc
【タグ】- , , , ,

関連記事

【PHP etc.プログラム学習サイトコードコピペ】全角引用符・バッククオートが入ってて動かない件に注意
【WPユーザー名バレ対策】ユーザー名表示からPHP・preg_matchでリダイレクト(wp-json/wp/v2/usersなど)
【WordPress組み込み関数】is_home()とis_front_page()って同じ?→似てますが、厳密には挙動が異なります
【超危険】WordPressデータベースリビジョンお掃除
【WordPressカスタムフィールド検索】meta_queryで、シリアライズ値が入ったフィールドを持つ記事をヒットさせるには?
【PHPプログラミング】メモ帳に適当にメモったPV数値をexplodeで配列にし、array_sumで合計値を計算する
【画像つきでわかりやすい】WordPressで使われるデータは、MySQLデータベースに、どのように格納されているの?
【WPカスタマイズ】プラグイン不使用、テーマに関連記事表示機能を実装しPV・滞在時間を上げる
【WordPress条件分岐】is_singleとis_singularって違うの?→idやスラッグ指定、投稿タイプ指定の面で違いが
【PHPプログラミング】glob関数を使って、特定ディレクトリ内のファイル一覧取得や、出力を行う方法
【PHPファイル取得でmidiデータ配布サイト】glob関数とWordPress関数で、midiダウンロード&関連記事一覧を作成
侍エンジニア塾ブログにあったPHPコードをシンプルに書いてみる(foreachで配列キーや値取得・continueで空要素スキップ)