【WordPress】記事の文字数や読み時間を自動表示する方法(投稿画面・フロント両対応)

【WordPress】記事の文字数や読み時間を自動表示する方法(投稿画面・フロント両対応) WordPress

WordPressで記事ごとの文字数や、読むのにかかる推定時間を自動で表示したいというニーズは多くあります。読者にとって「この記事は何文字か」「読むのに何分かかるのか」が事前に分かることは、離脱率の低下やUXの向上にもつながります。この記事では、文字数と読み時間の計算処理をフロントと管理画面の両方に対応させる方法を紹介します。

文字数と読み時間を計算する関数の作成

まずは、記事本文の文字数を取得し、それをもとに読み時間を計算する関数を `functions.php` に追加します。

function get_post_read_stats($post_id = null) {
  $post_id = $post_id ? $post_id : get_the_ID();
  $post = get_post($post_id);
  $content = strip_tags($post->post_content);
  $char_count = mb_strlen($content);
  $words_per_minute = 400; // 読書スピード(1分あたりの文字数)
  $minutes = ceil($char_count / $words_per_minute);

  return array(
    'chars' => $char_count,
    'minutes' => $minutes,
  );
}

この関数は、投稿の本文からHTMLタグを除去して文字数を数え、400文字/分のスピードを基準に読み時間を算出しています。

フロントエンドで表示する方法

上記の関数を使って、テーマ内で文字数や読み時間を表示するには、以下のように `single.php` や `content.php` などに追加します。

<?php
$stats = get_post_read_stats();
echo '<p>文字数:' . esc_html($stats['chars']) . '文字 / 読了目安:約' . esc_html($stats['minutes']) . '分</p>';
?>

このようにすることで、すべての投稿に自動的に「文字数」と「読み時間」を表示できます。

管理画面(投稿一覧)にも表示させる方法

投稿一覧に「文字数」や「読み時間」のカラムを追加するには、以下のコードを `functions.php` に追加します。

// カラムを追加
add_filter('manage_post_posts_columns', function ($columns) {
  $columns['read_time'] = '読了時間';
  return $columns;
});

// カラムの内容を出力
add_action('manage_post_posts_custom_column', function ($column_name, $post_id) {
  if ($column_name === 'read_time') {
    $stats = get_post_read_stats($post_id);
    echo esc_html($stats['minutes']) . '分 / ' . esc_html($stats['chars']) . '文字';
  }
}, 10, 2);

これにより、管理画面の「投稿」一覧に、各投稿の読了目安時間と文字数が表示されます。

まとめ

WordPressでは、関数を少し追加するだけで、記事ごとの文字数や読了目安時間をフロントと管理画面の両方に表示することができます。読者にとっても運営者にとっても有益な情報になるため、ぜひ導入してみてください。表示スタイルはCSSなどで調整することで、デザインに合わせた出力も可能です。