プラグインを使用せずに、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 PackやGoogle XML Sitemapsなどのプラグインを使えば、サイトマップは簡単に作成できますが、これだけのためにプラグインを入れるのはちょっと・・・という時はぜひ参考にしてください。