WordPressは標準で検索エンジン向けのサイトマップを生成する機能があります。
従って、特別な機能が必要なければ、サードパーティのサイトマップ生成プラグインを使用する必要はありません。
ただし注意点があります。
それはWordPress標準のサイトマップのURLが「/sitemap.xml」ではなく「/wp-sitemap.xml」であることです。
しかしながら、WordPressは実によく作られていて、「/sitemap.xml」へアクセスすると、自動で「/wp-sitemap.xml」へリダイレクトするようになっており、Google Search Consoleなどへサイトマップの登録を「/sitemap.xml」で行っても問題なく認識されるようになっています。
ただこれはルート(ドメイン用のディレクトリ直下)にあるWordPressの場合で、私が利用しているカラフルボックス
サーバーでは、階層化してサブディレクトリへ別にインストールしたWordPressサイトではリダイレクトされず、404エラーが出てしまうという現象が発生しました。
まあ標準のサイトマップのURLが「/wp-sitemap.xml」であることが分かっていて、かつ、Google Search Consoleのように自身でサイトマップのURLを登録できるのであれば「/wp-sitemap.xml」で登録すれば問題ないのですが、そうした機能を持たないクローラー(検索エンジンがページを登録するために循環する)がこのURLを見つけられない場合があったり、「sitemap.xml」が404になってしまうので「このサイトにはサイトマップがないんだな」と誤認識される可能性があるため、きちんとリダイレクトされるようにしておいた方がいいと思い、以下のようなコードを作成して対処しました。
同様の現象が起きている方で、対処しておきたいと考える方の参考になれば幸いです。
以下のコードはカラフルボックス
サーバーにおいて正常にリダイレクトできたコード例であり、他のサーバーでは機能しなかったり、不具合が出たりする可能性がありますので、コード追加後にはよくテストを行うようにしてください
以下のコードをサブディレクトリにインストールしているWordPressで有効化しているテーマのfunctions.phpへ追加します。
/*** xmlサイトマップ(sitemap.xml→wp-sitemap.xml)へのリダイレクト ***/
/* サブディレクトリにインストールしたWordPressのリダイレクトがかからない場合に追加 */
function pwcn_custom_sitemap_redirect() {
// リクエストされたURLのパスを取得
$request_uri = $_SERVER['REQUEST_URI'];
// ルートのsitemap.xmlへのリクエストかチェック
if ( strpos( $request_uri, '/sitemap.xml' ) !== false && strpos( $request_uri, '/wp-sitemap.xml' ) === false ) {
// リダイレクト先のURLを生成
$redirect_url = site_url( '/wp-sitemap.xml' );
// リダイレクトを実行
wp_redirect( $redirect_url, 301 ); // 301は恒久的なリダイレクト
exit; // リダイレクト後、スクリプトの実行を停止
}
}
add_action( 'template_redirect', 'pwcn_custom_sitemap_redirect' );
コードを追加したら、サブディレクトリにインストールしているサイトを開き、末尾に「/sitemap.xml」を追加してアクセスしてみてください。
リダイレクトが正しく行われていれば自動で「/wp-sitemap.xml」へ転送され、サイトマップがきちんと表示され、不具合がある場合には404エラーが出るはずです。
リダイレクトされることが確認できたら、ルート(メインディレクトリ)にあるサイトで問題がないかの確認もしてくださいね。
コメントを残す