これまでいくつかのブログにてブログを運営してきました。
- FC2ブログ
- 忍者ブログ
- Blogger
など…。
今現在のメインはBloggerですが、
Bloggerには初めサイトマップ自体を作成する機能がなかったのでatomフィードと500記事ごと送信設定をする必要がありました。
現在はBloggerブログでも、
自動でxml形式のサイトマップが作成できるようになっています。
WordPressでもサイトマップを作成して、
旧ウェブマスターツール(現SearchConsole)に送信した方が、
SEO的には間違いなくいいです。
スポンサーリンク
しかし、
私は、変に多くのプラグインなどは入れたくない派なので、
なんとかならないかと行脚していました。
そしたら、
やっぱりありました。
function.php内に記載するのですが、
以下コードを記載すれば自分のWordPressブログ・サイトのxml形式のサイトマップが作成されます。
add_action("publish_post", "eg_create_sitemap");
add_action( "save_post", "eg_create_sitemap" );
function eg_create_sitemap() {
$postsForSitemap = get_posts( array(
'numberposts' => -1,
'orderby' => 'modified',
'post_type' => array( 'post' ),
'order' => 'DESC'
) );
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
$sitemap .= "\n" . '<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
$sitemap .= "\t" . '<url>' . "\n" .
"\t\t" . '<loc>' . esc_url( home_url( '/' ) ) . '</loc>' .
"\n\t\t" . '<lastmod>' . date( "Y-m-d", current_time( 'timestamp', 0 ) ) . $tempo . '</lastmod>' .
"\n\t\t" . '<changefreq>daily</changefreq>' .
"\n\t" . '</url>' . "\n";
foreach( $postsForSitemap as $post ) {
setup_postdata( $post );
$postdate = explode( " ", $post->post_modified );
$sitemap .= "\t" . '<url>' . "\n" .
"\t\t" . '<loc>' . get_permalink( $post->ID ) . '</loc>' .
"\n\t\t" . '<lastmod>' . $postdate[0] . '</lastmod>' .
"\n\t\t" . '<changefreq>daily</changefreq>' .
"\n\t" . '</url>' . "\n";
}
$sitemap .= '</urlset>';
$fp = fopen( ABSPATH . "sitemap.xml", 'w' );
fwrite( $fp, $sitemap );
fclose( $fp );
}
//robots.txtにサイトマップ指定
add_filter("robots_txt", "add_robots_txt");
function add_robots_txt($output) {
$url = site_url();
$output .= "Sitemap: $url/sitemap.xml";
return $output;
}
これで、
プラグインは何も使わずにGoogleさんにサイトマップの送信ができるようになります。
アドレスは、
自分のサイトURLの後に/sitemap.xmlです。
一度、
SearchConsoleにてサイトマップの送信テストしてみるとわかると思います。
見事に成功と出るはずです。
そしたら、
そのまま追加してしまいましょう。
今回は、
サイトマップをプラグインを使わずに作成する方法でした。
最近まで「All in One SEO Pack」を使っていたのですが、xmlサイトマップが「パースエラー」とか表示されて使い物にならなくなったので、ここに書かれた方法を試して
http://自分のドメイン/sitemap.xml
と直にURL入力しても
「http://自分のドメイン/sitemap.xml/」と言うHTMLファイルに飛ばされて、xmlサイトマップとして機能しません。
(ちなみに他のサイトマップ系プラグインを使っても同じような現象が起こって使い物になりません。)
ちなみにテーマは「Simplicity2バージョン: 2.5.1」を使っています。
他テーマに変える、プラグインの再インストール、怪しいプラグインの停止、どれも失敗しています。
何か原因に心当たりはありませんでしょうか?