WordPressで投稿一覧ページに記事毎の文字数を表示する方法

2019-08-24WordPressWordPressカスタマイズ

WordPress管理画面での記事一覧ページに記事毎の文字数を取得して表示する方法になります。

私は特にはSEOの為に文字数に拘る派ではありませんが、一覧で文字数がチェックできるとSEO視点でも文字数とアクセス数の兼ね合いチェックにも便利かと思います。

表示サンプル

投稿一覧に記事の文字数を表示

文字数表示用のカラムを追加

manage_posts_columnsを使って投稿一覧ページのカラム一覧を取得、追加します。

functions.php

//文字数表示用のカラムを追加
add_filter('manage_posts_columns', function($columns){
            $columns['count'] = "文字数";
            return $columns;
});

任意の新しい配列のキー名と値(表示時、カラムのタイトルになります)を設定します。

※WordPress固有のキー名(author、categories 、tags、comments、date)とは重複しない様にしましょう。

文字数を取得して表示

manage_posts_custom_columnにて追加したカラムの場合に記事本文を取得して文字数をカウント、表示します。

manage_posts_custom_columnは1ページに表示される記事の数だけループさせます。

functions.php

//文字数を取得して表示
add_action('manage_posts_custom_column',function($column_name, $post_id){
  if($column_name == 'count'){
    echo mb_strlen(str_replace(array("\r\n", "\r", "\n"), '', strip_tags(get_post($post_id)->post_content)),"UTF-8");
  }
});

カウント部分を1行にまとめてしまっているので、そうでない版です。

functions.php

//文字数を取得して表示
add_action('manage_posts_custom_column',function($column_name, $post_id){
  if($column_name == 'count'){
    $post_data = get_post($post_id);//投稿データ取得
    $content = $post_data->post_content;//本文取得
    $content = strip_tags($content);//HTMLタグ除去
    $content = str_replace(array("\r\n", "\r", "\n"), '', $content);//改行除去
    $content = mb_strlen($content, "UTF-8");//文字数カウント
    echo $content;
  }
});

※今回の目的は管理画面上の処理ですので毎回文字数をカウントしていますが、もしサイト上に文字数を表示したい場合は、記事の投稿・更新時にカスタムフィールドを用意しておいて文字数を保管しておいて呼び出した方が軽量だと思います。

投稿ページで確認できる文字数と比較

次の記事で書きましたが、このコードで表示される文字数はGutenbergの投稿ページで確認できる文字数と同じになりました。

2019-08-24WordPressWordPressカスタマイズ

Posted by Yousuke.U