WordPress のアーカイブリンク出力を英表記にしてみる

WordPress は日本語版をインストールするとロケールが日本語に固定されて、内部にある PO ファイルなどに基づいて日本語に適した形で出力しようとする。設定項目に日時フォーマットの設定も設けられているが、これは the_date とかの出力で、ウィジェットが自動で出力するアーカイブリンクの表記は変化しない。

今まで特にそんなことする必要もなかったので、初めて弄ってみることにしたが、下調べに色々見て回った感じでは内部関数を書き換えたりしないとできないような話になってた。まぁテーマ専用のロケールファイル作っちゃえば早い話なんだけど、そんな時間もない時にやるやっつけ方式を・・・。

あーメンドクサイなぁと思いながら実際ロケールの振り分けをする「wp-includes/locale.php」を覗いてみたら、何といつの間にかこの部分がクラス化されているじゃないの。まぁいくつか見た記事の内容が古いってのもあって、すっかり騙され(笑)ていたが、クラス化されてるならオーバーライドしちゃえばシステム更新に関係なくテーマ依存にできる(まぁ、ちょっと力技も必要だけどさ)じゃないの。まぁ途中で仕様変更がなければの話だけどさ。

というわけで、テーマの functions.php 上か、別のインクルードファイルでオーバーライドして「$GLOBALS」内「wp_locale」の中身を書き換えちゃおうという話。「WP_Locale」クラスの「init」をロケール変換しない形に書き換える。

クッソ長いコメントは割愛。とりあえずロケール読み出し部分を全部クリアしてやれば、単純にそのまま出力されるってワケ。

しかし、WordPress はしぶとい。年出力にちゃっかり「年」を付け加えてくる。これは「wp_get_archives」の仕様で、こればっかりは途中で組み替えることができないっぽい。というワケで今回は「get_archives_link」にフックして「年」をカンマに書き換えて終了としといた。どうも痒い所に微妙に手が届かなくて力技になっちゃうのはいただけないな。