AIOSEO – All in One SEOのアーカイブタイトル日本語調整#2

むか〜し、AIOSEO – All in One SEOプラグインのソースコードを直接編集して対応していた日本語調整(ここ参照)ですが、ソース修正なく対応できたので、そのメモです。

まず、問題のおさらい。

AIOSEOプラグインを導入すると色々調整してくれるが、年月のアーカイブ表示のタイトルがきれいにローカライズされない問題があります。

調整しないと以下のようになる。英語だとこの並びで普通なんですが、AIOSEOのローカライズが中途半端なのかな日本語だとだめですよね。(&#8211は気にしない)

NGな状態 <title>9月, 2021 | 歩くような速さで・・・</title>
良い状態 <title>2021年9月 &#8211; 歩くような速さで・・・</title>

ソースコードを確認したところ、AIOSEOで調整しなければ、WordPress本体の結果をそのまま採用することがわかったので、AIOSEOの設定を削除して、WordPress自体に表示させることで解決しました。
設定は「検索の外観」→「アーカイブ」→「Date Archives」の「Dateタイトル」のところで、ここを空にします。(画像は「アーカイブの日付」が使われる元の設定)

Date Archives 設定画面
Date Archives 設定画面

私はこのアーカイブページはインデックスされたくないので、設定を保存した後「検索結果に表示」を「いいえ」にしています。「いいえ」にすると設定項目自体は消えますが、先のタイトル表記は保存されています。

これで、AIOSEOのバージョンアップを気にすることなく実施できます。

All in One SEO Pack のアーカイブタイトルの日本語調整

WordPressプラグインのAll in One SEO Packのアーカイブページのタイトルの日付表記がちょっと気に入らなかったので調整した。

どう対応すべきか迷ったあげく aioseop.class.php を直接修正。
年月日を直書きしているのがなんだか、自分用なのでそのままにしている。

*** 769,774 ****
--- 773,784 ----
  			}
  		} else if (is_archive()) {
  			$date = $this->internationalize(wp_title('', false));
+ 			// <add>
+ 			if (is_day()) { $date = get_the_time(get_option('date_format')); }
+ 			else if (is_month()) { $date = get_the_time('Y年n月'); }
+ 			else if (is_year()) { $date = get_the_time('Y年'); }
+ 			// </add>
+
              $title_format = $aioseop_options['aiosp_archive_title_format'];
              $new_title = str_replace('%blog_title%', $this->internationalize(get_bloginfo('name')), $title_format);
              $new_title = str_replace('%blog_description%', $this->internationalize(get_bloginfo('description')), $new_title);

これで↓みたいに出力されるようになります。

<title>2009年6月 | [ブログタイトル] - Part 2</title>

ついでに、タグ用ページのタイトルのアルファベット先頭を勝手に大文字に変換してしまうのに抵抗があったのでCapitalizeを抑止するために2箇所ほどある以下のコードをコメントアウトした。

//$tag = $this->capitalize($tag);

これで納得の記述になった。
あとはサーチエンジンに登録されてしまっているページが早く更新されるのを待つだけ。

日本語化を積極的に行いたい方は「WordPressのSEO定番プラグインAll in One SEO Pack(オール・イン・ワンSEOパック)の日本語版」(広告大臣」さん)を参考にしてみてください。
記事が古いので今日時点の最新(1.6.10.2)のに対応しているのかまでは確認していません。

【2010/3/8 追記】

結局はAll in One SEOの設定でアーカイブをGoogleとかにインデックスされないように指定して、Googleへはウェブマスターツールから削除指示出して検索結果からも削除しました。それでもタイトルがちゃんと表示されるのは気持ちの良いってことでOK。

【2021/9/23 追記】

執筆時点でソース編集なく対応できたのでそのメモを投稿しています。
AIOSEO – All in One SEOのアーカイブタイトル日本語調整#2