A-A+
	wordpress使用网站页面实现站点地图sitemap
在 wordpress 中实现站点地图 sitemap.xml 的功能是很简单的,有专门的针对百度 sitemap.xml 的地图插件,其实 wordpress 的归档功能基本上已经实现了站点地图的功能,如果有归档的功能,就可以完全不用使用 sitemap.xml,比如小虎博客的归档页面,sitemap.xml 的作用也就是让搜索引擎的蜘蛛在站点爬起来不费劲而已。
下面小虎博客就来教大家如何使用页面模板来实现 sitemap.xml 的功能,首先新建 sitemap.php 文件,然后将如下的代码拷贝进去。
- <?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/">'
 - ?>
 - <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
 - /* 文章页面 */
 - header("Content-type: text/xml");
 - $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 测试页面是否正常显示,也就是你的域名 xiaohuboke.com/sitemap.php,如果能正常显示,再进行下一步的操作,添加伪静态规则,如果我们使用的是 Apache 服务器,直接修改 .htaccess 文件即可,添加如下的规则:
- RewriteRule ^(sitemap)\.xml$ $1.php
 
我想大多的服务器都是 Apache 服务器了,如果使用的是虚拟主机,可以找到根目录下的 .htaccess 文件进行修改即可,至此,sitemap.xml 站点地图已经做好了,我们可以进行这样测试,打开 xiaohuboke.com/sitemap.xml,如果不能正常显示,首先检查一下自己的站点是否启用了缓存之类的插件,清除缓存后再进行刷新测试。