wordpressでsitemap.xmlを自作する

少し前に作ったAmazonのマーケティングサイト『AMAPRO』ですが、記事数が大規模になる為、従来のXML Sitemapプラグインが使えません。
特段SEOを意識していなかったので そのまま放置していたのですが、いっこうにインデックスが進まないようなので仕方無くsitemapを自作するスクリプトを書く事にしました。

広告

大規模サイトのsitemap.xmlの自作

現時点(2018/3/7)で約285,000記事が存在しているアマプロ。

sitemap制作でメジャーなGoogle XML Sitemapsではどうやら対応出来ないようです。
他にもJETPACKのsitemapも試してみましたが、ナカナカsitemapが生成されない・・・。

wp-cronが動くようなので、待っていれば作られたのかも知れないけど、一度目のcron処理で1時間待っても完成しないので自作する事にしたわけ。

他のいくつか試したけど、やっぱり駄目でした。

大規模サイトの場合は分割する

50000件以上の場合は分割する必要があるので、sitemapindex とかいうのの付いたxmlを作って、50000件ずつに分割して制作です。

    $postct = $wpdb->get_var("
    SELECT COUNT(*)
    FROM $wpdb->posts WHERE $wpdb->posts.post_type = 'post' AND $wpdb->posts.post_status = 'publish'
    ");

    $maxpost = 50000;
    $pagecunt = ceil($postct / $maxpost);

まずはpost_type = ‘post’の数を抽出。
それを50000で割ってページ数を割り出す。

あとは、whileとかで回して、XMLを出力すればOK。

サイトマップ

サイトマップはテーマディレクトリに生成した。
50000件もあるとファイルが結構デカいのでデータベースを圧迫するより良いかな? と思ったんだけど、どうなんだろ?

あとはインデックスを待つのみ。

かなり雑なメモだけど、そんな感じ。

ではでは。


おすすめのコンテンツ

広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

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