最近在研究seo,得知有个sitemap是很必要的,所以参考张戈大神的文章《WordPress免插件生成完整站点地图(sitemap.xml)的php代码》 学习一下这个技术

Sitemap 的作用是方便网站管理员通知搜索引擎网站上可供抓取的网页;网络抓取工具通常会通过网站内部和其他网站上的链接查找网页。sitemap 会提供此数据以便允许支持 Sitemap 的抓取工具抓取 Sitemap 提供的所有网址,并了解使用相关元数据的网址。使用 Sitemap协议并不能保证网页会包含在搜索引擎中,但可向网络抓取工具提供一些提示以便它们更有效地抓取网站。
张戈博客推荐使用DX-SEO这个很好用的中文SEO插件生成的sitemap,但是我发现现在再想去找这个插件……还是比较困难的,貌似没有人更新,作者大侠的博客貌似也有问题。听张戈讲,一般生成sitemap.xml的php脚本,只能生成主页和文章页的sitemap,网上分享的都大同小异,只有首页和文章页。所以他就写了可以同时生成首页、文章、单页面、分类和标签的sitemap。
以下是其php代码:
<?php
require('./wp-blog-header.php');
header("Content-type: text/xml");
header('HTTP/1.1 200 OK');
$posts_to_show = 1000; 
echo '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">'
?>
<!-- generated-on=<?php echo get_lastpostdate('blog'); ?> Diy By 张戈博客(http://zhangge.net)-->
  <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,传到网站根目录。
张戈说:
1 确认无误之后,已开通sitemap权限的就可以前往百度站长平台提交了,将sitemap.xml使用a标签链接在网站底部即可。
2 代码使用很简单,可以根据需要增减内容,比如觉得标签不应该出现在sitemap里面的,可以将标签部分的php代码删除即可,但一定要注意不要误删除结尾的标签。

伪静态

编辑网站根目录的 .htaccess ,加入如下规则:

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

做好伪静态规则后,就可以直接访问sitemap.xml看看效果了,比如 http://miaozhewen.cn/sitemap.xml
sitemap.xml

如果只针对百度,可以用百度的结构化插件

百度结构化工具
结构化数据插件使用指南:
步骤一:下载适合版本的插件,解压文件至论坛根目录下:Discuz! 用户解压至source/plugin下;Wordpress用户解压至 wp-content/plugins下;
步骤二:以管理员账号登陆平台环境,在管理中心应用页面-安装新插件目录下,找到插件“baidusubmit”直接安装;(使用WordPress插件的站长,可跳过该步骤)
步骤三:在管理中心应用页面-插件列表目录下,启用“baidusubmit”插件;
步骤四:启用插件后,验证论坛网址,验证成功,插件安装完成。

「Unity Shaders」Surface Shaders and Texture Mapping

 本文内容参考《Unity 5.x Shaders and Effects Cookbook》 表面着色器和材质贴图 总的来说,一个表面着色器有两个关键的步骤。第一,必须确定材质的物理...

阅读全文

「Unity Shaders」Creating First Shader

创建第一个着色器 最近学习了一段时间Unity Shader相关知识,在进一步自顶向下学习计算机图形学之前,先将之前看《Unity 5.x Shaders and Effects Cookbook...

阅读全文

《Effective c++》、《Inside C++ Model》 小结(一)

最近瞻仰了一下Scott Meyers久负盛名的《effective c++》,特来总结一下,以加深一下印象与防止自己今后记忆力衰退。这本书里很多都是工程上很有意思的tips...

阅读全文

1 条评论

欢迎留言