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 测试页面是否正常显示,也就是你的域名 xiariboke.net/sitemap.php,如果能正常显示,再进行下一步的操作,添加伪静态规则,如果我们使用的是 Apache 服务器,直接修改 .htaccess 文件即可,添加如下的规则:
- RewriteRule ^(sitemap)\.xml$ $1.php
我想大多的服务器都是 Apache 服务器了,如果使用的是虚拟主机,可以找到根目录下的 .htaccess 文件进行修改即可,至此,sitemap.xml 站点地图已经做好了,我们可以进行这样测试,打开 xiariboke.net/sitemap.xml,如果不能正常显示,首先检查一下自己的站点是否启用了缓存之类的插件,清除缓存后再进行刷新测试。