WordPress 月別アーカイブの年月表示をカスタマイズする方法

Last update 
/ Posted by Takumi Hirashima

WordPress 月別アーカイブの年月表示をカスタマイズする方法

WordPress の月別アーカイブの年表記を、通常の「2015年1月」から「2015.1」や「2015.01」にカスタマイズする方法を紹介します。
例えば、アーカイブページで月別アーカイブリストを表示したい時に便利です。

  1. 月の表記を「2015.1」と表示する場合
  2. 月の表記を「2015.01」と二桁にして表示する場合
  3. アーカイブページでタイトルを「2015.01」にする

月の表記を「2015.1」と表示する場合

通常 wp_get_archives でアーカイブリストを出力する場合、年月の表示は「2015年1月」と表示されます。これを「2015.1」にする場合には、フックフィルターを使うことで編集する事ができます。次のコードを functions.php に追加します。

/* 【出力カスタマイズ】 wp_get_archives の年表記を置き換える */
function my_archives_link($html){
  $html = str_replace('年','.',$html);
  $html = str_replace('月','',$html);
  return $html;
}
add_filter('get_archives_link', 'my_archives_link');

このコードの場合、年に当たる部分を「.(ドット)」月に当たる部分を「(空白)」にすることで「2015.1」と表示させます。

月の表記を「2015.01」と二桁にして表示する場合

月の表記を二桁にして “2015.01” とする場合は、次の書き方で対応します。
次のコードを functions.php に追加します。

/* 【出力カスタマイズ】wp_get_archives の年表記を置き換える */
add_filter('gettext', 'my_gettext', 20, 3);
function my_gettext($translated_text, $original_text, $domain) {
  if ($original_text == '%1$s %2$d') {
    $translated_text = '%2$s.%1$02d';
  }
  return $translated_text;
}

年に当たる部分を「.(ドット)」月に当たる部分を「 (空白)」月の表示を sprintf 関数を使い二桁に変更して「2015.01」と表示させます。

アーカイブページでタイトルを「2015.01」にする

アーカイブでタイトルを「2015.01」にする場合は sprintf 関数を使って「月」の値を二桁にします。
次のコードを archive.php に追加します。

<?php 
  $tit_monthnum = get_query_var('monthnum'); // 月の値を取り出す
  echo get_query_var('year').'.'. sprintf("%02d",$tit_monthnum); // 値を二桁に変更
 ?>

一度 get_query_var(‘monthnum’) で月の値を取り出して、値を二桁にすることで、表示は「2015.01」となります。

sprintf について

$num = 1; //数字が "1" の場合
echo sprintf("%02d",$num); //数字は「01」と表示されます

sprintf 関数を使うことで、フォーマット文字列(format)に基づき生成された、文字列を返すことができます。

まとめ

WordPress の月別アーカイブの年表記を、通常の「2015年1月」から「2015.1」や「2015.01」にカスタマイズ方法を紹介しました。
この方法は、サイト内で日時の表記を統一したいときなどに役立つと思います。

私が続けて読みたい関連記事

スポンサーリンク