WordPress でタイトルタグの重複を回避する
Web & Internet, WordPress 2009/6/13 12:58昨日、Google ウェブマスターツールでタイトルタグの重複が大量にあった件の対処をした。
重複の原因は大きく分けると2つのパターン。
- 「?view=com」「?view=wrt」など URL のあとにパラメータがつく
- 月別アーカイブやカテゴリ、タグページなどで、記事数が多く複数のページにわたっているとき、同じ <title> タグがついてしまっている
- カテゴリとタグで同じ文字列があるとき、<title> タグが重複
これは、携帯表示プラグイン MobileEye+ のコメントページ、コメント書き込みページのURL。実験的に入れているツールがモバイルページもパソコンのページと認識させているため起こっているみたい。「link rel=”canonical”」を入れてとりあえずの対策をしたけれど、根本的な対策が必要っぽい。要相談。
今回は 2) と 3) に対して対策を行った。
まずは、<title> 要素をカスタマイズできるプラグインがないか調査。All in One SEO Pack というプラグインが、<title> タグを気軽に変更できるもので利用したみました。しかし、問題発生。<title> タグを強制的に書き換えるため、携帯サイトの <title> タグも書き換わり、文字コードの不一致(本体はUTF8、携帯サイトはShift-JIS)から文字化けが起こってしまった。なので、テンプレート単位での対応に切り替える。
下記サイトを参考にテンプレートの <title> タグ内の出力を改変。
→東京税理士ブログ:WordPressで全てのページを違うタイトルにする
具体的には以下の変更を行った。
- タグページはタグ語句の後に [tag] と追加(カテゴリとの差別化)
- 複数にわたるページには「Part ○」と追加
- ついでに検索結果のページも「[検索文字列]の検索結果」に変更
- 月別ページも「2008 5月」から「2008年5月」と「年」が入るよう変更(これは好み)
複数ページにわたるときは、「$paged」という関数が2ページ目以降のページ番号を出力しているらしい。
また、各ページで条件分岐をして対処。
→WordPress.日本語:条件分岐タグ
書いたコードは以下の通り。ちなみにアーカイブページには「/ぼやき」と入るようになっているので、参考にされる場合は注意してください。
<title><?php
if(is_home()) {bloginfo('name'); if($paged){echo ' Part '.$paged; }}
if(is_month()){echo get_the_time('Y年n月');} else{wp_title('');}
if(is_search()){echo '['.$s.'] の検索結果'; if($paged){echo ' Part '.$paged;} echo ':'; bloginfo('name');}
if(wp_title('', false)){if(is_tag()){echo ' [tag]';} if($paged){ echo ' Part '.$paged;} echo ':'; bloginfo('name'); echo '/ぼやき';}
?></title>
一応めでたく対処できたとおもうけど、おかしなところがあったら教えてください。

最近のコメント
2012/2/6 22:53
2012/2/6 17:14
2012/2/5 6:07
2012/2/3 22:03
2012/2/3 2:11
2012/1/27 14:11
2012/1/26 3:30
2012/1/16 22:40
2012/1/26 3:10
2012/1/15 17:20