是否有任何代码可以在wordpress自定义主题中自动生成站点地图。 我有一个内置于wordpress的博客网站,并为每个页面手动创建了站点地图。
我之所以不使用插件,是因为
1。我不需要在站点地图中列出所有页面
2。其他插件会增加我的网站的加载时间
现在我需要一个简单的方法(代码)来生成我的博客的站点地图。
答案 0 :(得分:1)
这是一个简单的代码,您需要在每个博客发布后添加到主题功能文件中以生成站点地图。请参阅此blog 这也可以在任何自定义插件中使用。
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="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\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>monthly</changefreq>' .
"\n\t" . '</url>' . "\n";
}
$sitemap .= '</urlset>';
$fp = fopen( ABSPATH . "sitemap_blog.xml", 'w' );
fwrite( $fp, $sitemap );
fclose( $fp );
}