WP3.0のマルチサイトでGoogleXMLSitemapプラグインを使う

トンボの写真

前に「WordPress 3.0のインストール」で書いたのたけど、WordPress3.0のマルチサイト環境において、現時点では「GoogleXMLSitemapプラグイン」を使用することができない。マルチサイトでの
子サイトはそれぞれ独立したサイトでありながら独自のXML Sitemapを生成しないため、ウェブマスターツールも上手く読み込んでくれないのだ。それぞれのサイトの「sitemap.xml」が同名で同じ場所に書き出されてしまうことが原因だ。対応版がリリースされるまではそんなに時間はかからないだろうけれど、それでもSitemapの自動作成ができないのは不便。なにか方法はないものかと探してみたら、「Google XML Sitemaps and WordPress Multisite」をみつけることができた。

GoogleXMLSitemap ver3.2.4

基本的には先のサイトに書かれている通りだけど、ボクの環境とは合わない部分もあったので少し手直した。サーバー環境によっては動作しないケースもあるかと思うので、あくまでも参考まで。。。

1.プラグイン管理画面の警告メッセージを非表示にするため、「wp-content/plugins/google-sitemap-generator/sitemap.php」を編集する。
ボクはインストール済みのプラグインを直接編集したけれど、もちろん、先にローカルで編集してからアップロードしても構わない。
56行目あたりの行を以下のようにコメントアウト(先頭に//をつける)する。
[php num=56 font_size="60%"]
//Check for 3.0 multisite, NOT supported yet!
//if((defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE) || (function_exists('is_multisite') && is_multisite())) {
//if(function_exists('is_super_admin') && is_super_admin()) {
// add_action('admin_notices', array('GoogleSitemapGeneratorLoader', 'AddMultisiteWarning'));
// }
//
// return;
// }
[/php]

2..htaccessにRewriteRuleを作成する。このとき、WordPressのRewriteRuleより前(上部)に記述すること。下に追記すると反映されない。
前述の英語サイトの例では、sitemapのRewrite先をルートディレクトリとして.htaccessに記述していたのだが、プラグインから自動的にsitemapを生成させるためには、ルートディレクトリのパーミッションが書き込み可能(「777」「757」「707」など)になっていなければならない。書き出しの都度パーミッションを変更するならいいのだけど、それではかなり面倒なので、プラグインから書き込み可能である blogs.dirに書き出すようにした。
また、blogs.dir下のサイトディレクトリ(blogs.dir/2/files など)に書き出すことも考えたのだが、RewriteRuleの記述が面倒になるのと、サイトのIDでしか識別できないディレクトリパスが煩わしかったので、全サイトをblogs.dir直下に書き出すようにした。もともとRewriteRuleで「sitemap-サイト名.xml 」または「sitemap-サイト名.xml.gz」とサイト固有のファイル名にしているので、同じディレクトリにあっても問題はないわけだし・・・
同様に、robotsについても、blogs.dir直下に「robots-サイト名.txt」というファイルを書き出している。robotsを使う場合は、プラグインの設定で「仮想robots」を無効にしておくことをお忘れなく。

[php num=1 font_size="60%"]
#Begin sitemap
RewriteEngine on
RewriteBase /
RewriteRule ^sitemap\.xml$ wp-content/blogs.dir/sitemap-%{SERVER_NAME}.xml [L]
RewriteRule ^sitemap\.xml\.gz$ wp-content/blogs.dir/sitemap-%{SERVER_NAME}.xml.gz [L]
RewriteRule ^robots\.txt$ wp-content/blogs.dir/robots-%{SERVER_NAME}.txt [L]
#End sitemap
[/php]

3.プラグインの管理画面で「GoogleXMLSitemapプラグイン」を有効にする。
このとき「ネットワークで有効化」ではなく、それぞれのサイトで有効化を行うこと。ネットワーク有効にするとsitemapが正しく作成されないので注意。

4.GoogleMapプラグインの管理画面では、サイトマップファイルの場所を「手動配置」にする。
先の.htaccessの内容を前提とすると、
[相対パス or 絶対パス]
/サイトルートまでのURL/wp-content/blogs.dir/sitemap-サイト名.xml
[完全なURL]
http://example.com/wp-content/blogs.dir/sitemap-サイト名.xml
と設定する。

あわせて、「サイトマップのURLを仮想robots.txtファイルに追加」のチェックは外しておく。
robotsについては、
[php num=1 font_size="60%"]
User-agent: *
Sitemap: http://examlpe.com/sitemap-サイト名.xml
Sitemap: http://examlpe.com/sitemap-サイト名.xml.gz
Disallow:
[/php]
という内容で robots-サイト名.txtを作成し、blogs.dirにアップロードする。

あとは、Googlenoウェブマスターツールに登録するだけ。これでマルチサイトでもsitemapが自動生成されるようになる。
願わくばマルチサイトに対応したプラグインを早くリリースしてほしいものだが、それまではこれで凌いでいくことができそうだ。

参考:
Google XML Sitemaps and WordPress Multisite
WP3.0ネットワークでGoogle Sitemapを作成する

ーーーーーーーーーーーーーーーー
追記:(2010年9月23日)

やはりというか、ようやくというか、WordPress3.0のネットワークに対応したGoogle XML Sitemapプラグインが登場した。
現在のリリースバージョンは ver4.0.2となっており、WP 3.0.1にも対応している。

Google XML Sitemaps with Multisite support

『Google XML Sitemaps』プラグインをベースとして、マルチサイト対応版として改善されたものだ。以前ここで紹介したような、phpファイルの書き換えや.htaccessの作成などは必要なくなり、インストールするだけで完全に動作している。
ボクもその一人なのだが、WP3.0をマルチサイトで使っているユーザーにとって待ちに待ったプラグインなのではないだろうか。。。


Comments (0)

› No comments yet.

コメントを残す