「カレンダー」ウィジェットに投稿タイトル(title属性)を表示する方法

Cocoonカスタマイズ集
この記事は約2分で読めます。
記事内に広告が含まれています。

はじめに

WordPressの標準機能である「カレンダー」ウィジェットは、日付をクリックするまでその日に何の投稿があるのか分かりません。
過去の記事を振り返りたいユーザーにとって、いちいちクリックしてページ遷移するのは手間になります。

そこで、カレンダーの日付リンクに title属性を追加することで、マウスオーバー時に投稿タイトルをツールチップとして表示します。
なお、該当日に複数の投稿がある場合は、その日に公開された最新の投稿のタイトルを表示します。

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

title属性は、ブラウザ標準の「ツールチップ表示」機能を利用しています。
そのため、マウスオーバーという概念がないタッチデバイスでは表示されません。
本機能は主にPC環境のユーザーに向けた利便性向上のためのものである点をご了承ください。

完成イメージ

2023-09
月 火 水 木 金 土 日
 123
45678910
11121314151617
18192021222324
252627282930  

実装手順

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

add_filter('get_calendar', function ($calendar) {

  // 日付リンクから年月日を取得
  return preg_replace_callback(
    '#<a (href="[^"]*/(\d{4})/(\d{1,2})/(\d{1,2})/")#',
    function ($m) {

      // 該当日の最新の公開済み投稿を取得
      $posts = get_posts([
        'post_type'      => 'post',
        'post_status'    => 'publish',
        'posts_per_page' => 1,
        'date_query'     => [[
          'year'  => (int) $m[2],
          'month' => (int) $m[3],
          'day'   => (int) $m[4],
        ]],
      ]);

      // 投稿タイトルをtitle属性として設定
      return '<a title="' . esc_attr(get_the_title($posts[0])) . '" ' . $m[1];
    },
    $calendar
  );
});

さいごに

今回紹介した方法を使えば、標準の「カレンダー」ウィジェットをより親切で高機能なものに進化させることができます。
訪問者が迷うことなく目的の過去記事にたどり着けるよう、ぜひ導入を検討してみてください。

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