A-A+

wordpress使用网站页面实现站点地图sitemap

2015年08月19日 PHP开源系统 暂无评论 阅读 11 views 次

在 wordpress 中实现站点地图 sitemap.xml 的功能是很简单的,有专门的针对百度 sitemap.xml 的地图插件,其实 wordpress 的归档功能基本上已经实现了站点地图的功能,如果有归档的功能,就可以完全不用使用 sitemap.xml,比如夏日博客的归档页面,sitemap.xml 的作用也就是让搜索引擎的蜘蛛在站点爬起来不费劲而已。

下面夏日博客就来教大家如何使用页面模板来实现 sitemap.xml 的功能,首先新建 sitemap.php 文件,然后将如下的代码拷贝进去。

  1. <?php  
  2. require('./wp-blog-header.php');  
  3. header("Content-type: text/xml");  
  4. header('HTTP/1.1 200 OK');  
  5. $posts_to_show = 1000;   
  6. echo '<?xml version="1.0" encoding="UTF-8"?>';  
  7. echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">'  
  8. ?>  
  9.   <url>  
  10.       <loc><?php echo get_home_url(); ?></loc>  
  11.       <lastmod><?php $ltime = get_lastpostmodified(GMT);$ltime = gmdate('Y-m-d\TH:i:s+00:00', strtotime($ltime)); echo $ltime; ?></lastmod>  
  12.       <changefreq>daily</changefreq>  
  13.       <priority>1.0</priority>  
  14.   </url>  
  15. <?php  
  16. /* 文章页面 */   
  17. header("Content-type: text/xml");  
  18. $myposts = get_posts( "numberposts=" . $posts_to_show );  
  19. foreach$myposts as $post ) { ?>  
  20.   <url>  
  21.       <loc><?php the_permalink(); ?></loc>  
  22.       <lastmod><?php the_time('c') ?></lastmod>  
  23.       <changefreq>monthly</changefreq>  
  24.       <priority>0.6</priority>  
  25.   </url>  
  26. <?php } /* 文章循环结束 */ ?>    
  27. <?php  
  28. /* 单页面 */   
  29. $mypages = get_pages();  
  30. if(count($mypages) > 0) {  
  31.     foreach($mypages as $page) { ?>  
  32.     <url>  
  33.       <loc><?php echo get_page_link($page->ID); ?></loc>  
  34.       <lastmod><?php echo str_replace(" ","T",get_page($page->ID)->post_modified); ?>+00:00</lastmod>  
  35.       <changefreq>weekly</changefreq>  
  36.       <priority>0.6</priority>  
  37.   </url>  
  38. <?php }} /* 单页面循环结束 */ ?>   
  39. <?php  
  40. /* 博客分类 */   
  41. $terms = get_terms('category', 'orderby=name&hide_empty=0' );  
  42. $count = count($terms);  
  43. if($count > 0){  
  44. foreach ($terms as $term) { ?>  
  45.     <url>  
  46.       <loc><?php echo get_term_link($term$term->slug); ?></loc>  
  47.       <changefreq>weekly</changefreq>  
  48.       <priority>0.8</priority>  
  49.   </url>  
  50. <?php }} /* 分类循环结束 */?>   
  51. <?php  
  52.  /* 标签(可选) */  
  53. $tags = get_terms("post_tag");  
  54. foreach ( $tags as $key => $tag ) {  
  55.     $link = get_term_link( intval($tag->term_id), "post_tag" );  
  56.          if ( is_wp_error( $link ) )  
  57.           return false;  
  58.           $tags$key ]->link = $link;  
  59. ?>  
  60.  <url>  
  61.       <loc><?php echo $link ?></loc>  
  62.       <changefreq>monthly</changefreq>  
  63.       <priority>0.4</priority>  
  64.   </url>  
  65. <?php  } /* 标签循环结束 */ ?>   
  66. </urlset>  

通过浏览器 sitemap.php 测试页面是否正常显示,也就是你的域名 xiariboke.net/sitemap.php,如果能正常显示,再进行下一步的操作,添加伪静态规则,如果我们使用的是 Apache 服务器,直接修改 .htaccess 文件即可,添加如下的规则:

  1. RewriteRule ^(sitemap)\.xml$ $1.php  

我想大多的服务器都是 Apache 服务器了,如果使用的是虚拟主机,可以找到根目录下的 .htaccess 文件进行修改即可,至此,sitemap.xml 站点地图已经做好了,我们可以进行这样测试,打开 xiariboke.net/sitemap.xml,如果不能正常显示,首先检查一下自己的站点是否启用了缓存之类的插件,清除缓存后再进行刷新测试。

标签:

给我留言