WordPressでRewrite APIを使った時の新規ページのsitemap.xmlが追加されない時のメモ

ワードプレスを使って、自前でアプリケーションを開発するときに利用するRewrite APIですが、初心者にはかなり複雑で難しいです。Rewrite APIを使った独自アプリケーションの開発で、ニッチですが非常に重要なSEOについてのメモです。

Rewrite APIを使ってGoogleにインデックスさせたい

表題の通りですが、やったことを下記に流れを書きます。
Rewrite APIを使った時の新規ページのsitemap.xmlが追加されないので、一部ページでインデックスされない問題が起きています。

1 Rewrite APIを使って新規ページを作りました。

2 add_rewrite_rule、add_rewrite_endpointの追加

下記のような形でURLを作って、add_rewrite_rule、add_rewrite_endpointを利用して表示も確認して、ステータスコードも200になっていることを確認してあります。

add_rewrite_endpoint( 'book', EP_ALL );
としてあるので、一応ページとしては認識されてると思っているのですが、されていないかも?

// インデックスされているページ
/book/variety
/book/variety/drama
/book/mystery

// 一部ページだとインデックスされない
/book/mystery/drama

3 sitemap.xmlを作って送るように

全て同じテンプレートを利用しているが、一部ページがインデックスされないので、sitemap.xmlを作って送るようにしたい

4 プラグインのGoogle xml sitemapでサイトマップを作る

Google xml sitemapでサイトマップを作ろうと思ったが、サイトマップには表示されてない。

ページ、投稿、カテゴリー、アーカイブなどを自由にカスタマイズしてサイトマップを作成できるGoogle xml sitemapですが、こちらにプログラムで生成したページを追記されるようにしたいということです。

Googleにインデックスされない、xmlが送れない問題の整理

1 Google xml sitemapのsitemap.xmlに記載がない

sitemap.xmlに記載がないのは、おそらく、投稿、固定ページとも認識されていないのが問題

2 投稿、固定ページとして認識される

投稿、固定ページとして認識されればxmlを送れ、インデックスされる(可能性が高い)
希望としては、投稿ページとして認識させたい。

3 Google xml sitemapを利用しない

Google xml sitemapを利用しないで、サイトマップを自分で作成する

リライトルールの設定とエンドポイントは設定されているので、表示とステータスコードはうまくなっているのは確認できています。

つまり、投稿ページ、固定ページと認識されていないのでxmlが送りようがない状態になっているのが原因だと判断しています。

問題解決の方法1

問題はかなりシンプルな内容でした。ワードプレスを利用していて、add_rewrite_endpointを利用するとページや投稿にカノニカル設定がされてしまうというのが原因でした。

スクリーンショット 2017-09-21 21.51.04

このページでは、さらに詳細ページがあったのですが、カノニカルに寄せられてしまっていました。

ワードプレスであれば、カノニカルのタグを削除する処理が用意されています。

こちらで削除をしてしまうと他のページでも全部でカノニカルの設定が削除されてしまいますので、
ページごとに追加したい場合は自分で再度add_actionをする必要があります。

remove_action( 'wp_head', 'rel_canonical' );