記事が増えてくると、投稿ごとの文字数を一覧でパッと確認したくなるものです。
以前の記事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
にコードを追加するだけで導入できる
一覧画面で投稿のボリュームを素早く把握したい方は、ぜひ保存型も取り入れてみてください!