2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPressで記事の読了時間を計算表示するショートコードを作ってみた!

Last updated at Posted at 2025-05-08

reading-time.jpg

はじめに

ブログ記事に「読了時間の目安」を表示すると、読者の安心感がアップし、直帰率の低下や滞在時間の延長につながります。
今回は「1分あたり600文字」を基準に、記事本文の文字数から読了時間を算出し、[reading-time] ショートコードで表示する方法を紹介します。

※サンプルコードはテーマの functions.php(子テーマ推奨)に追記する、もしくは管理プラグインで新規スニペットとして作成してください。

事前準備

  • WordPress
  • PHP
  • 子テーマがあればそちらを利用(アップデートで削除されないように)
  • functions.phpもしくは管理プラグイン(私は『Code Snippets』を利用しています)を触れる程度の能力

実装手順

functions.phpに追記するか、管理プラグインで新規スニペットとして登録してください。

ショートコードの作成

ここでは、calculate_reading_time()という関数を定義します。
記事の文字数をカウントして、読了時間を計算。
HTMLとして出力するようにしています。
そして、add_shortcode()でショートコードを登録します。

function calculate_reading_time() {
    $content = get_post_field('post_content', get_the_ID());
    $text = wp_strip_all_tags($content);
    $char_count = mb_strlen($text);
    $chars_per_min = 600;
    $minutes = ceil($char_count / $chars_per_min);
    return return '<div class="reading-time">読了時間:約<span class="minute">'.$minutes.'</span>分</div>';
}
add_shortcode('reading-time', 'calculate_reading_time');

あとは読了時間を表示したいところで、以下のように表記すればOKです。

[reading-time]

私の場合は、ウィジェットの『記事はじめ』の部分に追加しています。

CSSのカスタマイズ

読了時間の見た目を整えます。
この例では、点線のボーダーで、読了時間の分の部分が赤い太字になります。

.reading-time {
    padding: 5px;
    border: 1px dashed #999999;
    text-align: right;
}
.reading-time .minute {
    color: #cc0000;
    font-size: 1.25em;
    font-weight: bold;
}

実装が完了すると、以下のような表示になるはずです。

スクリーンショット 2025-05-08 16.09.56.png

まとめ

読了時間表示機能の実装自体は、意外と簡単にできます。
ちょっとした時間で実装できますので、もし良かったらあなたも導入してみてはいかがでしょうか?

この記事は、ブログで公開した内容の再構成版です。
詳細を確認したい方は、ぜひブログもチェックしてみてくださいね。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?