【WordPress】リンクアドレスを除いた文字数カウントを表示する

当ページのリンクには広告が含まれています。

WordPressの投稿一覧で文字数を確認すると正確な文字数が表示されていませんでした。

テキスト本文以外のカスタムHTML内(リンクアドレス)の文字数が含まれているようで、実際の記事の文字数が知りたい時にちょっと困ります。

目次

文字数にはHTMLのリンクアドレスの文字数もカウントされてしまう

管理画面の投稿一覧の文字数は、HTMLリンクなどの文字数も含まれて表示されているようです。

私としては文章としてどの程度の文字数なのかをみたいので、リンクアドレス以外をカウントしたものを表示したいと思いました。

リンクが多い場合なんかだと、結構影響が大きくて実際の数字の確認がしにくいです。

とんでもなく文字数が多いと思ったらリンクかよ、みたいな

何とかできないものなのか?

SEO的な観点でのHTML文字などの影響については、調べてみましたが明確に書いてあるものを見つけられなかったので、ちょっとわかりません。

編集画面の「アウトライン」上の数字はカスタムHTMLを含んだ数字

編集画面の左上のボタンを押して「アウトライン」を表示すると編集中の記事の文字数などが確認できます。

カスタムHTMLが多いと実際のテキストの文字数の把握がしにくくなる

こちらが実際のアウトライン上の文字数の画面です。

今まではこちらで確認していたのですが、こちらだとカスタムHTML内のリンクの文字数まで拾ってしまっていたようで、記事によってはびっくりするような数になっていました。

ですが本来こちらはカウントしてほしくないのです。上記は文字数が「1241文字」となっています。

こちらが実際にサンプルとして入れたカスタムHTMLです(半角22文字)

カスタムHTMLを削除すると、アウトラインの数字が変わりました(1219文字)

文字数の差分が丁度22文字なので、ばっちりカウントされていたのが分かると思います。

今回は短いコードだったので大したことないのですが、長いリンクだとかなりの誤差になります。

アフィリ系の商品リンクは3,000文字とかあったので、かなりの誤差になります。

カスタムHTMLの中の文字数をカウントしない本文文字数を取得したい!

カスタムHTMLのリンクのせいで、文字数がすごく多く見えてしまいますが、文字数はあっても「記事の内容はほぼリンク」なんて可能性も・・・それだともう中身ペラペラですよね。

自分が書いたテキスト(文章)の正確な文字数が分からないので、やっぱり何とかしたい。

丁度ピッタリなものは残念ながら見つけられなかったので、色々調べてコードを組み合わせて自分なりにやってみました。

ほぼ私が望んでいた通りの数値が取得できたので手順をまとめます。

functions.phpを変更します。

私はSWELLを使用しているので他のテーマを使用している方はPHPの記載場所は別途ご確認ください。

必ずバックアップなどを取る、テスト環境で試すなど対策を行って自己責任で行ってください。当サイトはこちらの記事によるトラブルの一切の責任を負いません。

テストする際は念の為プラグインなどを利用して、テスト環境で行うと安心です

文字数カウント列(カウントHTML含まない)を追加する

コード編集画面(functions.php)を開く

ちなみにSWELLだと子テーマがあるので、そちらを選択して作業進めています。

STEP
サイドメニューから「外観」→「テーマファイルエディター」を選択

初めてテーマファイルエディターを開こうとすると、警告メッセージみたいなのが出ます。

こちらも確認して対策してから進めてください。

STEP
開いた画面右側の「編集するテーマを選択」で対象テーマを確認する。

こちらはテーマによって選択するものが違うと思います。

私の場合はSWELLだったので、SWELLの子テーマが選択されています。もし親テーマになっていたら子テーマ(CHILD)に直しましょう。

たぶんcocoonとかも子テーマあるはず(以前使っていた記憶)

STEP
右下のテーマファイルから「テーマのための関数」を選択

今回は「function.php」を変更したいのでこちらを選択します。

STEP
以降は入力スペース内の「親テーマのfunctions-phpのあとで読み込みたいコード」の下のコード内に入力する

こちらのコードの中に書いていきます。

add_filter('after_setup_theme',function(){
}, 11);
STEP
コメント状態を解除します(行頭の「//」を消す)

コメント状態を解除して「{ }」の間に次のステップ6のコードを書いていきます。

STEP
コードを書いていきます

コードの部分を書き込むとこんな感じです。

列を追加するコードや文字数を取得するコードについて掲載されているサイトさんを参考に書いてみました。

超初心者作成なので、おかしなところは調整してください。

	add_filter('after_setup_theme', function(){

// 1_投稿一覧に文字数列を追加----------
    add_filter('manage_posts_columns', 'add_custom_columns');
    add_action('manage_posts_custom_column', 'output_custom_admin_columns', 10, 2);

    // カラム追加
    function add_custom_columns($columns)
    {
        $columns['content-length'] = '文字数';
        return $columns;
    }

    // 表示設定
    function output_custom_admin_columns($column_name, $post_id)
    {
        // 文字数
        if ($column_name === 'content-length') {
            $content = wp_strip_all_tags(get_the_content(), true);
            apply_filters('the_content', $content);
            echo mb_strlen($content);
		}
	}
// 1_----------------------------------

	}, 11);

ちょっとだけ簡単に説明

「カラム追加」の部分に「表示設定」で作成した関数を指定することで呼び出しています。

今回の文字数以外でも、同じ手順でカラムを追加すれば色々追加できます。

文字数の取得について

今回はHTML タグを取り除いて取得するということで「wp_strip_all_tags」を使用しています。

完全に正確な値では無いようですが、私の環境では一応文字数の確認には耐えられる(極端に違う結果にはならなかった)のでとりあえず良しとしました。

他にも色々方法はあるようなので、もっと精度の高いものが必要な場合は調べていただくといいと思います。

STEP
画面下の方にある「ファイルの更新」をクリックすると内容が保存されます

コード上の間違いであればこの時点でエラー表示が出てロールバックされます。

気になる関数は自分で簡単に確認ができます

画面の下の方にある「解説:関数名」というドロップダウンから、現在書いてあるコードについて簡単に確認することができます。

やり方は簡単です。

  • 選択した状態で「調べる」をクリックする
  • 該当コードのリファレンスを開いてくれる

とっても親切!

ちょっとだけ不満を言うなら、やっぱりリファレンスは英語なので私みたいに「日本語以外の長文は呪文に見える・・・」という人は素直に翻訳して確認しても大体はわかると思います。

サンプルコードなどもあるし、翻訳なのでちょっと「?」なところもありますが、とても勉強になります。

私はもうちょっと英語の理解力あげないとだめだよね・・・

文字数を表示する列を追加完了したら

実際の見え方について一応画像を載せてみます。

もし投稿一覧画面に追加した列が表示れていなかったら、右端の「表示オプション」を開いて、表示内容を設定変更してね。

まとめ

色々調べたものを元に自分なりにやってみました。

私としては臨んだ結果が出たので満足です。

上記のやり方でやってみたら「全然違うじゃん!」てなったらすみませんが諦めて改良してください。

私の環境でいくつか確認した感じだと多少のズレはあったものの、それほど大きな誤差はないかなと(100文字程度のずれはあった)

そのずれが、改行コードなのか?それ以外なのか?ちょっとわかんないです、ごめんなさい・・・

私のようにWordPressのカスタマイズに余り慣れてない人でもなんとかなったよ!ということで、参考になれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次