「記事を読む時間」の文言などを変更する方法

Cocoonカスタマイズ集
記事内に広告が含まれています。
読了目安:約4分

はじめに

以下を実現します。

Cocoon設定→本文→記事を読む時間「記事を読む時間の目安を表示する」をオンにすると、記事を読むのに必要な所要時間を表示することができます。

しかし、標準機能のままでは、出力されるHTMLの構造や「この記事は約〇分で読めます。」といった文言を自由に変更することができません。

そこで、既存の計算ロジックを活かしつつ、HTMLや文言を自分好みに変更します。

この記事では、この方法について説明します。

完成イメージ

本ページに完成イメージを反映させます。

実装手順

以下のコードをfunctions.phpに追加します。

// 独自の「記事を読む時間」を追加
add_action('singular_entry_content_before', function () {
  $original_visible = $GLOBALS['my_original_read_time_visible'] ?? false;

  if (!$original_visible) {
    return;
  }

  $expanded_content = get_post_field('post_content', get_the_ID());
  $minutes = get_time_to_content_read($expanded_content);
  ?>
  <div class="read-time">
    読了目安:<span class="read-time__value">約<?= esc_html($minutes); ?>分</span>
  </div>
  <?php
});


// Cocoon設定(本文)の記事を読む時間を取得
add_filter('theme_mod_content_read_time_visible', function ($current_mod) {
  if (is_admin()) {
    return $current_mod;
  }

  // Cocoon設定値を退避
  if (!isset($GLOBALS['my_original_read_time_visible'])) {
    $GLOBALS['my_original_read_time_visible'] = $current_mod;
  }

  // 標準の表示をオフ
  return false;
});

参考:Cocoon以外のテーマで「読了時間」ブロックを自動挿入する方法

Cocoon以外のテーマの場合、WordPress 6.9でサポートされた、標準の「読了時間」ブロックを用いることで同様のことが可能です。

実装手順

以下のコードをfunctions.phpに追加します。

// 本文を変更
add_filter('the_content', function ($content) {
  if (!is_singular()) {
    return $content;
  }

  // 「所要時間」ブロックを展開
  $block_markup = '<!-- wp:post-time-to-read /-->';
  $block_html   = do_blocks($block_markup);

  $read_time_html = '<div class="read-time">読了目安:<span class="read-time__value">' . $block_html . '</span></div>';

  return $read_time_html . $content;
}, 9);


// フロント用JS・CSSを追加
add_action('wp_enqueue_scripts', function () {
  ob_start();
  ?>
  .read-time {
    border-bottom: 4px double #eee;
    border-top: 4px double #eee;
    text-align: center;
  }
  .wp-block-post-time-to-read {
    display: inline;
  }
  <?php

  $handle = 'post-read-time';

  wp_register_style($handle, false);
  wp_enqueue_style($handle);
  wp_add_inline_style($handle, ob_get_clean());
});

さいごに

今回紹介した方法を使えば、Cocoon既存の計算ロジックを最大限に活かしながら、テーマの標準機能だけでは変更できなかったHTML構造や文言を自分好みに自由に変更することができます。

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