WordPress管理画面に投稿文字数を高速表示する方法【保存型・カスタムフィールド対応】

WordPress管理画面に投稿文字数を高速表示する方法のアイキャッチ画像
  • URLをコピーしました!

記事が増えてくると、投稿ごとの文字数を一覧でパッと確認したくなるものです。

以前の記事functions.phpだけで文字数をリアルタイム表示する方法では、管理画面に投稿本文の文字数をその場で計算して表示する方法を紹介しました。

ただし、リアルタイム計算方式には「投稿数が増えると管理画面が重くなる」という弱点があります。

そこで今回は、投稿保存時に文字数を一度だけ計算してカスタムフィールドに保存し、それを投稿一覧で表示する方法(保存型)をご紹介します。

大規模サイトでも快適に使える方法なので、記事数が多くなってきた方はぜひ試してみてください。

カゲノ

簡易的に設置する場合や、小規模な個人サイトならリアルタイム計算でも十分です!

目次

保存型とは?なぜおすすめなのか

保存型とは、投稿を保存・更新するタイミングで文字数を計算し、_word_countなどのカスタムフィールドに保存しておく方法です。

メリット

  • 投稿一覧を表示するたびに文字数を計算しなくてよいので、高速に表示できる
  • 大量の投稿があってもサーバー負荷が増えにくい
  • リアルタイム表示と違い、安定して動作する

デメリット

  • 記事を編集しても保存し直さない限り、文字数が更新されない

とはいえ、運用上そこまで問題になることは少ないため、長期的に安定して使いたい場合は保存型がおすすめです。

投稿保存時に文字数を保存するコード

以下のコードを、子テーマのfunctions.phpに追加してください。

// 投稿保存時に文字数をカスタムフィールドに保存する
function save_post_word_count($post_id) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
    if (wp_is_post_revision($post_id)) return;
    if (get_post_type($post_id) !== 'post') return;

    $content = get_post_field('post_content', $post_id);
    $plain_text = strip_tags($content);
    $word_count = mb_strlen($plain_text);
    update_post_meta($post_id, '_word_count', $word_count);
}
add_action('save_post', 'save_post_word_count');

※ 補足:このコードでは_word_countというカスタムフィールド名を使っていますが、これは自由に変更可能です。ただし、他のプラグインやテーマと重複すると予期せぬ動作になることがあるため、mytheme_word_countなど、自分のサイト専用の接頭語(プレフィックス)をつけておくと安全です。

補足

このコードでは_word_countというカスタムフィールド名を使っていますが、これは自由に変更可能です。ただし、他のプラグインやテーマと重複すると予期せぬ動作になることがあるため、mytheme_word_countなど、自分のサイト専用の接頭語(プレフィックス)をつけておくと安全です。

投稿一覧に文字数カラムを表示するコード

次に、保存された文字数を管理画面の投稿一覧に表示するコードを追加します。

// カラムを追加
function add_post_columns_word_count_saved($columns) {
    $columns['word_count'] = '文字数';
    return $columns;
}
add_filter('manage_posts_columns', 'add_post_columns_word_count_saved');

// カラムに保存済み文字数を表示
function show_post_columns_word_count_saved($column_name, $post_id) {
    if ($column_name === 'word_count') {
        $word_count = get_post_meta($post_id, '_word_count', true);
        echo esc_html($word_count);
    }
}
add_action('manage_posts_custom_column', 'show_post_columns_word_count_saved', 10, 2);

より便利にするポイント(オプション)

  • 固定ページやカスタム投稿タイプにも対応させたい場合は、get_post_type()の条件を調整
  • カスタムフィールドのキー名(例:_word_count)は他と被らないように工夫
  • 文字数で並び替えしたい場合は manage_edit-post_sortable_columns のカスタマイズも可能

まとめ

  • 投稿数が多い場合、リアルタイムで文字数を表示する方式は表示が重くなることがある
  • 保存型なら、投稿保存時に1度だけ文字数を記録するため、高速で安定した表示が可能
  • functions.phpにコードを追加するだけで導入できる

一覧画面で投稿のボリュームを素早く把握したい方は、ぜひ保存型も取り入れてみてください!

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

この記事を書いた人

当ブログの運営者であり全ての記事を書いた陰の者。
なんでも好きなものだけ書きます。
X(旧Twitter)でも更新情報とたまにくだらないことを発信中。
コメント解放しておりませんので、Xの方で感想いただけると嬉しくて更新が早くなる傾向にあります。調子乗りです。

目次