wp_get_archives()で出力するHTMLの引用符をダブルクォーテーションにする方法

このブログではWordPressのウィジェットを使っていない。
ウィジェットを使うとHTMLのソースが汚くなるから、というだけの理由だ。

サイドバー部分の月別表示はWordPress関数のwp_get_archives()を使って表示している。
サイドバーの月別表示

具体的には以下のようなソースになっている。

<ul>
<?php wp_get_archives('type=monthly'); ?>
</ul>

しかしこのまま出力すると以下のようにHTMLの引用符シングルクォーテーションになってしまうようだ。

<li><a href='ここにURL' title='2013年9月'>2013年9月</a></li>
<li><a href='ここにURL' title='2013年8月'>2013年8月</a></li>
<li><a href='ここにURL' title='2013年7月'>2013年7月</a></li>
<li><a href='ここにURL' title='2013年6月'>2013年6月</a></li>
<li><a href='ここにURL' title='2013年5月'>2013年5月</a></li>
<li><a href='ここにURL' title='2013年4月'>2013年4月</a></li>

シングルクォーテーションになる仕様なのか?
別にシングルクォーテーションでも文法的には問題ないのだが、HTMLはダブルクォーテーションにするのが私の個人的な主義だ。
たぶん一般的にもHTMLの引用符はダブルクォーテーションが主流だろう。
今回はこれを解決する方法を解説しよう。

コードの解説

まずfunctions.phpを開く。
そして以下のように記述する。

//wp_get_archivesのシングルクォーテーションをダブルクォーテーションに変換
function my_archives_link($html){
  $html = str_replace('\'','"',$html);
  return $html;
}
add_filter('get_archives_link', 'my_archives_link');

別に難しい処理でもなんでもなく、HTMLを出力する前にただシングルクォーテーションをダブルクォーテーションに置き換えてフックさせているだけである。
my_archives_linkというユーザー定義関数の中で別の処理を設定しておけばもっと変わった出力の仕方も可能でしょうね。