记录一些常用的函数和瞎折腾的过程……

wordpress免插件生成XML地图

提醒:本文最后更新于 2605 天前,文中所描述的信息可能已发生改变,请谨慎使用。

wordpres如何不用插件,生成全站XML的地图?

我来告诉你吧!首先建一个名为“sitemap.php”的文件,将下述代码复制到php文件中,放到网站的根目录下,访问这个php文件能看到全站的XML地图了。

<?php  
require('./wp-blog-header.php');  
header("Content-type: text/xml");  
header('HTTP/1.1 200 OK');  
$posts_to_show = 1000;  
echo '<?xml version="1.0" encoding="UTF-8"?>';  
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">'  
?>  
<!-- generated-on=<?php echo get_lastpostdate('blog'); ?> Diy By Program Say(https://www.psay.cn)-->  
<url>  
<loc><?php echo get_home_url(); ?></loc>  
<lastmod><?php $ltime = get_lastpostmodified(GMT);$ltime = gmdate('Y-m-d\TH:i:s+00:00', strtotime($ltime)); echo $ltime; ?></lastmod>  
<changefreq>daily</changefreq>  
<priority>1.0</priority>  
</url>  
<?php  
/* 文章页面 */  
$myposts = get_posts( "numberposts=" . $posts_to_show );  
foreach( $myposts as $post ) { ?>  
<url>  
<loc><?php the_permalink(); ?></loc>  
<lastmod><?php the_time('c') ?></lastmod>  
<changefreq>monthly</changefreq>  
<priority>0.6</priority>  
</url>  
<?php } /* 文章循环结束 */ ?>  
<?php  
/* 单页面 */  
$mypages = get_pages();  
if(count($mypages) > 0) {  
foreach($mypages as $page) { ?>  
<url>  
<loc><?php echo get_page_link($page->ID); ?></loc>  
<lastmod><?php echo str_replace(" ","T",get_page($page->ID)->post_modified); ?>+00:00</lastmod>  
<changefreq>weekly</changefreq>  
<priority>0.6</priority>  
</url>  
<?php }} /* 单页面循环结束 */ ?>  
<?php  
/* 博客分类 */  
$terms = get_terms('category', 'orderby=name&hide_empty=0' );  
$count = count($terms);  
if($count > 0){  
foreach ($terms as $term) { ?>  
<url>  
<loc><?php echo get_term_link($term, $term->slug); ?></loc>  
<changefreq>weekly</changefreq>  
<priority>0.8</priority>  
</url>  
<?php }} /* 分类循环结束 */?>  
<?php  
/* 标签(可选) */  
$tags = get_terms("post_tag");  
foreach ( $tags as $key => $tag ) {  
$link = get_term_link( intval($tag->term_id), "post_tag" );  
if ( is_wp_error( $link ) )  
return false;  
$tags[ $key ]->link = $link;  
?>  
<url>  
<loc><?php echo $link ?></loc>  
<changefreq>monthly</changefreq>  
<priority>0.4</priority>  
</url>  
<?php  } /* 标签循环结束 */ ?>  
</urlset>  
?>  

你可能会发现,访问的网址是“你的网址/sitemap.php”,并不能使用“你的网址/sitemap.xml”来访问文件啊,没事,进行了一Rewrite就可以了。增加如下重写规则并重新加载Nginx,就可以了:

rewrite ^/sitemap.xml$ /sitemap.php last;

此时你就可以访问网站根目录下sitemap.xml了