为WordPress主题添加XML地图生成功能可以通过以下步骤进行操作:
// 添加XML地图支持
function add_sitemap_to_robots($output) {
if (strpos($output, 'sitemap.xml') === false) {
$output .= 'Sitemap: ' . esc_url(home_url('/sitemap.xml')) . "n";
}
return $output;
}
add_filter('robots_txt', 'add_sitemap_to_robots');
// 创建XML地图
function generate_sitemap() {
$postsForSitemap = get_posts(array(
'numberposts' => -1,
'orderby' => 'modified',
'post_type' => array('post', 'page'),
'order' => 'DESC'
));
$sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
$sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
foreach ($postsForSitemap as $post) {
setup_postdata($post);
$postdate = explode(" ", $post->post_modified);
$sitemap .= '<url>'.
'<loc>'. get_permalink($post->ID) .'</loc>'.
'<lastmod>'. $postdate[0] .'</lastmod>'.
'<changefreq>weekly</changefreq>'.
'</url>';
}
$sitemap .= '</urlset>';
$fp = fopen(ABSPATH . "sitemap.xml", 'w');
fwrite($fp, $sitemap);
fclose($fp);
}
add_action("publish_post", "generate_sitemap");
以上代码中的第一个函数add_sitemap_to_robots是为了在robots.txt文件中自动添加Sitemap的链接。在输出的robots.txt文件中追加Sitemap链接。注意:如果主题文件夹中没有robots.txt文件,则需要手动创建这个文件。
第二个函数generate_sitemap是用于创建XML地图的。它获取所有文章和页面的链接,并以XML格式生成sitemap.xml文件。该函数在每次发布新的文章时都会触发调用。
以上示例代码可以在functions.php文件中直接使用。保存并上传到服务器。
当你发布新的文章或页面时,XML地图将会自动生成保存在主题文件夹中的sitemap.xml文件中。
请注意:这只是一个简单的示例代码,你可以根据自己的需求和网站结构进行相应的修改。