少し前に作った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件もあるとファイルが結構デカいのでデータベースを圧迫するより良いかな? と思ったんだけど、どうなんだろ?
あとはインデックスを待つのみ。
かなり雑なメモだけど、そんな感じ。
ではでは。
おすすめのコンテンツ
広告