プラグインなしでWordPressサイトにサイトマップ(sitemap.xml)を作成する方法

プラグインなしでWordPressサイトにサイトマップ(sitemap.xml)を作成する方法

プラグインなしでWordPressサイトにサイトマップ(sitemap.xml)を作成する方法

プラグインを使用せずに、WordPressサイトにサイトマップ(sitemap.xml)を作成する方法をご紹介いたします。

プラグインなしでWordPressサイトにサイトマップ(sitemap.xml)を作成する方法

適用しているテーマのfunctions.phpに以下を追加します。


add_action('publish_post', 'create_sitemap');
add_action('publish_page', 'create_sitemap');

function create_sitemap() {
 $sitemap_posts = get_posts(array(
 'numberposts' => -1,
 'orderby' => 'modified',
 'post_type' => array('post','page'), // Add custom post types here
 'order' => 'DESC'
 ));

 $sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
 $sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

 foreach($sitemap_posts as $post) {
 setup_postdata($post);

 $postdate = explode(" ", $post->post_modified);

 $sitemap .= '<url>'.
 '<loc>'. get_permalink($post->ID) .'</loc>'.
 '<lastmod>'. $postdate[0] .'</lastmod>'.
 '<changefreq>monthly</changefreq>'.
 '</url>';
 }
 $sitemap .= '</urlset>';

 $fp = fopen(ABSPATH . "sitemap.xml", 'w');
 fwrite($fp, $sitemap);
 fclose($fp);
}

カスタム投稿タイプがある場合は、「post_type」の配列にカスタム投稿タイプ名を追加してください。例えば、custompostというカスタム投稿を追加する場合は、以下のようにします。

'post_type' => array('post','page','custompost'),

サイトマップ内にカスタム投稿タイプは含めなくても良いとか、固定ページは含めなくて良いという場合も、post_typeの値で調整します。

上記コードを追加した後は、記事が公開されるタイミングでサイトマップも更新されます。そのため、次に記事の公開処理が行われるまでは、サイトマップは作成されません。

何でもいいので記事を公開して、以下のアドレスにアクセスしてみましょう。サイトマップが表示されます。

http://yourdomain.com/sitemap.xml

「yourdomain.com」の部分は自サイトのドメインに置き換えてください。

あとがき

上記コードは、You Might Not Need That WordPress Pluginを参考にしました。

All in One SEO PackGoogle XML Sitemapsなどのプラグインを使えば、サイトマップは簡単に作成できますが、これだけのためにプラグインを入れるのはちょっと・・・という時はぜひ参考にしてください。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

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