WordPressで記事の文字数と読了時間をタイトル下に表示する方法

WordPress
3,279 文字 約 9 分で読めます

ブログ記事を読む前に「どのくらいの文字数なのか」「読むのに何分かかるのか」が分かると、読者にとってとても親切です。
今回は、プラグインを使わずに functions.php にコードを追加するだけで、記事タイトルの下に「文字数」と「読了時間」を表示する方法を紹介します。

ここで紹介するコードは、投稿タイトルのすぐ下に文字数と読了時間を自動で表示するタイプです。本文の直前に出す方法も後半で触れます。

注意(事前確認)

変更はテーマの functions.php に追記します。親テーマを直接編集するとアップデートで消えてしまうため、可能であれば子テーマの functions.php に追加してください。

functions.php にコードを追加する

以下のコードを functions.php に追加してください。子テーマを使用している場合は、子テーマに追記するのがおすすめです。

// 記事の文字数と読了時間を表示する関数
function shisyamo_read_time_and_count() {
    global $post;
    $content = strip_tags( $post->post_content );
    $word_count = mb_strlen( $content );
    $read_time = ceil( $word_count / 400 ); // 約400文字=1分で計算
    echo '<div class="read-meta">';
    echo '<span class="read-item"><span class="dashicons dashicons-edit" aria-hidden="true"></span>' . number_format( $word_count ) . ' 文字</span>';
    echo '<span class="read-item"><span class="dashicons dashicons-clock" aria-hidden="true"></span> 約 ' . $read_time . ' 分で読めます</span>';
    echo '</div>';
}

// 本文の直前(タイトル下)に表示する
function shisyamo_add_read_meta_after_title( $content ) {
    if ( is_single() && in_the_loop() && is_main_query() ) {
        ob_start();
        shisyamo_read_time_and_count();
        $meta = ob_get_clean();
        return $meta . $content;
    }
    return $content;
}
add_filter( 'the_content', 'shisyamo_add_read_meta_after_title', 5 );

// フロント側でもDashiconsを有効化
function shisyamo_load_dashicons_front_end() {
    wp_enqueue_style( 'dashicons' );
}
add_action( 'wp_enqueue_scripts', 'shisyamo_load_dashicons_front_end' );

このコードを保存すると、投稿ページを開いたときにタイトル下へ「文字数」と「読了時間」が表示されるようになります。

CSSでデザインを整える

そのままでも動作しますが、少し見やすくするならCSSで以下のように整えます。

.read-meta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: #f9f9f9;
  border: 1px solid #ddd;
  border-left: 4px solid #0073aa;
  border-radius: 6px;
  padding: 8px 12px;
  font-size: 14px;
  color: #333;
  margin-bottom: 16px;
}

.read-item {
  display: flex;
  align-items: center;
  gap: 4px;
  line-height: 1.4;
}

.read-item .dashicons {
  line-height: 1;
  vertical-align: middle;
  position: relative;
  top: 0;
  color: #0073aa;
}

これで、タイトル下に小さな情報カードのような見た目で表示されます。

本文の直前に表示する場合(応用編)

タイトル下ではなく、本文の直前に表示したい場合は、先ほどのコードの後半部分を変更します。

// 本文の直前に挿入する(本文上に出す)
function shisyamo_prepend_read_meta_to_content( $content ) {
    if ( is_single() && in_the_loop() && is_main_query() ) {
        ob_start();
        shisyamo_read_time_and_count();
        $meta = ob_get_clean();
        return $meta . $content;
    }
    return $content;
}
add_filter( 'the_content', 'shisyamo_prepend_read_meta_to_content', 5 );

これに切り替えると、タイトル下ではなく本文のすぐ上に文字数と読了時間を表示できます。記事のデザインや目的に合わせて、どちらかを選んでください。

カスタマイズのポイント

表示方法を変えたい場合でも、PHPのコードをいじる必要はほとんどありません。CSSを調整するだけで、背景色を変えたり、枠をなくしてシンプルにしたり、アイコンをSVGに置き換えてデザインを統一したりすることができます。PHPはあくまで計算と出力だけにしておくと、テーマを変更しても対応が簡単です。

まとめ

今回は、WordPressの記事タイトル下に「文字数」と「読了時間」を自動で表示する方法を紹介しました。テーマに依存せず、記事ごとに自動計算して表示してくれるので、読者にとっても便利です。シンプルな表示でも十分ですが、CSSでデザインを整えることでブログの雰囲気に合わせた見せ方が可能です。ぜひ、自分のブログに合わせてカスタマイズしてみてください。

タイトルとURLをコピーしました