【XML Sitemaps】サイトマップの追加でエラーが出たときの対処法

WordPressを使って運用しているブログにおいて、XML形式のサイトマップを生成するためのプラグインを導入されている方は多いと思います。

WordPressのダッシュボードで「xml sitemap」などの文言でプラグインを検索するといくつかヒットしますが、私は「XML Sitemaps」というプラグインを使っています。

以前は「Google XML Sitemaps」というプラグイン名だった気がしますが、今は「XML Sitemaps」になっています。
ただ、インストール後にプラグイン一覧を見ると「Google XML Sitemaps」になっていてちょっと混乱しそうです。

このプラグインで生成されるサイトマップをGoogle Search Consoleで追加するとエラーが出ることがあります。

ツインターボ

私の場合は「無効なタグが含まれている」みたいなメッセージが出てきました。
全部が全部ダメなわけではなく、正常に受け付けてくれるものもありました。

このエラーが出てしまう原因とその対処法を解説します。
この記事を読めばエラーにならずに追加することができるようになります。

ブロガーさん

詳しい話はあと!
まずはエラーを消したいです!

ツインターボ

新たにカテゴリーを追加しているかと思いますが、いずれかのカテゴリーに一つでいいので記事を紐付けてください。
もしくは、追加したカテゴリーを全部削除してください。

エラーが消えたら続きを見ていただけるとありがたいです。

目次

エラーが出るパターン

下記のパターンに全て該当する場合にエラーとなるようです。

  1. 1つ以上のカテゴリーを追加している
  2. 追加したカテゴリーの全てに記事が一つもない

「事前にカテゴリーだけ作っておいて、記事は後から紐付けよう」というパターンですね。

エラーが出る原因

生成されるサイトマップに無効なタグが含まれているためです。

このような感じのタグです。

<br />
<b>Warning</b>:  Undefined array key 0 in <b>〜/wp-content/plugins/google-sitemap-generator/class-googlesitemapgeneratorstandardbuilder.php</b> on line <b>696</b><br />
<br />
<b>Warning</b>:  Attempt to read property "taxonomy" on null in <b>〜/wp-content/plugins/google-sitemap-generator/class-googlesitemapgeneratorstandardbuilder.php</b> on line <b>696</b><br />
<br />

(一部、伏せ字にさせていただきました)

対処法は2つ

プラグインのアップデートで解消する内容だとは思いますが、それを待たずにユーザーとしてできる対処法は2つあります。

  1. 追加したカテゴリのいずれかで記事を作る
  2. プラグインを直す

1番については簡単な話なので割愛し、2番について説明します。

前述の無効なタグの部分を見ていただくと分かるとおり、配列のキーとして存在しないものを参照しようとしていることが元凶です。
「wp-content/plugins/google-sitemap-generator/class-googlesitemapgeneratorstandardbuilder.php」に手を加えることでとりあえずは対処することが可能です。

2行目と3行目に「$taxs[$tax_count]」という記述があります。
$tax_countの初期値は0なのですが、$taxs[0]は存在しないようでこれがエラーになっています。

for ( $tax_count = 0; $tax_count < $size_of_taxs; $tax_count++ ) {
    if ( 0 === ( $tax_count % $links_per_page ) && '' !== $taxs[ $tax_count ]->taxonomy ) {
        $gsg->add_sitemap( 'tax-' . $taxs[ $tax_count ]->taxonomy, $step, $blog_update );
        $step = ++$step;
    }
}

$taxsの中身がどうなっているのかはとりあえずおいといて……。
雑ではありますが、要素が存在しなかったら次に進めることでエラーは回避できます。

for ( $tax_count = 0; $tax_count < $size_of_taxs; $tax_count++ ) {
    if (!isset($taxs[$tax_count])) {
        continue;
    }
    if ( 0 === ( $tax_count % $links_per_page ) && '' !== $taxs[ $tax_count ]->taxonomy ) {
        $gsg->add_sitemap( 'tax-' . $taxs[ $tax_count ]->taxonomy, $step, $blog_update );
        $step = ++$step;
    }
}

修正するのは「class-googlesitemapgeneratorstandardbuilder.php」の696行目あたりになります。

プラグインのバージョンによって行数は異なる可能性があるので登録しようとしているサイトマップの中を見ていただくのが確実だと思います。


まとめ

発生するパターンが限定的なので何の問題もなく使えている方が大半だと思いますが、エラーとなったときの参考になれば幸いです。



この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次