用原生代码替换ALL IN ONE SEO PACK

2009年11月6日 | 标签: , , , , ,

SEO,一个被无数博客作者浏览的高关键词,呵,它何以这么抢手?当然是由于它是搜索引擎最佳化的缩写,写博客非要针对搜索引擎来写吗?干嘛不能写给自己?你当然可以写给自己或自己的一个小圈子,再或者奉献给大众,但每一个公开的博客都或多或少的去优化一下自己对搜索引擎的友好度,以便提升自己网站在搜索引擎面前的知名度,最终提升自己的流量。呵,于是乎你SEO,我SEO,他也SEO,各种SEO的工具也油然而生,而在WordPress这个博客平台里,ALL IN ONE SEO PACK这个SEO优化插件无疑是最热门的,它都能做什么呢?简单说一下,因为大家都用得太多了。

ALL IN ONE SEO PACK可以:
1、可以给每篇文章添加独立的关键词;
2、可以给每篇文章添加独立的meta标签;
3、可以给每篇文章添加独立的description;
4、可以给每篇文章添加独立的摘要;
5、可以给每篇文章自动生成摘要;
6、可以防止存档页和首页的内容被抓取,从而防止因重复内容被google降权;

看,够优秀的吧,可无论一个插件如何的优秀,总还是有种种理由让我们不想使用它,比如ALL IN ONE SEO PACK与Simple Tagging在某一方面有冲突,再比如某些热爱纯净的朋友或折腾代码的朋友从心底的抵制,那么非要它不可吗?当然不是,ALL IN ONE SEO PACK也不过是个插件,也不过是由代码来写的,既然这样,我们就在自己的主题里添加一下吧,让我们也自己原生一下。

写之前要注意几点:
1、我所提供的代码不是我的原创,有很多是网上传抄的,我只是尽可能的合理安排结构和功能,让它看起来更直观简捷,又不失主体功能。
2、无论您用哪一种编辑器去写这些代码,我一再要提醒您,保存时要选对格式:UTF-8无BOM格式保存。
3、您所添加的所有代码都会在主题文件中操作,一旦您更换了主题,并且还需要这些代码,请务必要复制回来。
4、这些代码不是最好的,或许您有更多更好的方法,欢迎您来一起讨论。
好了,就这些,有问题可以在我的小博上留言,我会尽快回复的,下面我们来开始代码。

代码段一:
这段不算是个代码段,只能算是个注意吧,打开您主题文件中的 header.php 文件,在</head> 之前要注意有如下代码:

1
<?php wp_head(); ?>

代码段二:
打开您主题文件中的 functions.php 文件,在文件尾部的 ?> 之前加上如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// get categories name
function get_cats_name() {
  $allcats=get_categories();
  foreach ($allcats as $category) 
  {
    $keywords[] = $category->cat_name;
  }
  return $keywords;
}
// utf8 substr
function utf8Substr($str, $from, $len) {
  return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
                      '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
                      '$1',$str);
}
// Meta SEO
function meta_SEO() {
  global $post;
  $output = '';
  if (is_single()){//如果是文章页
    $keywords = ''; 
    $description = '';
    if ($post->post_excerpt) {//如果文章摘要存在就以文章摘要为描述
      $description = $post->post_excerpt;
      $description = str_replace("\r\n","",$description);
      $description = str_replace("\n","",$description);
      $description = str_replace("\"","'",$description);
      $description .= '...';
    } else {//如果文章摘要不存在就截断文章前200字为描述
      $description = utf8Substr(strip_tags($post->post_content),0,200);
      $description = str_replace("\r\n","",$description);
      $description = str_replace("\n","",$description);
      $description = str_replace("\"","'",$description);
      $description .= '...';
    }     
    $tags = wp_get_post_tags($post->ID);//取文章标签
    foreach ($tags as $tag ) {
      $keywordarray[] = $tag->name;
    }
    //以文章标签为关键字
    $keywords = implode(',',array_unique((array)$keywordarray));
  } else {//如果不是文章页
    $keywords = ''; //在引号间写入你博客的关键字用,断开
    $description = '';//在引号间写入你博客的简单描述,不要过200字
    if ($keywords == '') {//如果没写博客的关键字则以分类名为值
      $keywords = implode(',',array_unique((array)get_cats_name()));
    } 
    if ($description == '') {//如果没写博客的描述则以副标题为值
      $description = get_option('blogdescription');
    } 
  }
  //输出描述
  $output .= '<meta name="description" content="' . $description . '" />' . "\n";
  //输出关键字
  $output .= '<meta name="keywords" content="' . $keywords . '" />' . "\n";
  if (is_single() OR is_page() OR is_home()) ://如果是文章、分页、首页则允许robots
    $output .='<meta name="robots" content="index,follow,noarchive" />';
  else ://如果不是则不允许
    $output .='<meta name="robots" content="noindex,follow,noarchive" />';
  endif;
  $output .= "\n";
  $output .='<meta name="googlebot" content="noarchive" />';
  echo "$output\n";
}
add_action('wp_head', 'meta_SEO');//添加meta_SEO函数到头部信息里

好了,正确保存后就OK了,我想需要注意或需要解释的我都写了注释了,呵,如果还是不很明白,可以问我。就这样,一个原生的,简单的SEO就写好了,如果你的主题很标准,那么事实上你只需在 functions.php 这个文件里稍加操作就可以了,很简单吧,呵,如果你写自己的一个主题,那么也完全可以用进去,当然,你要是想发布主题的话,我想你已经是个高手了,应当知道如何更加优化和提供更改的设置。好啦,跟着某些人来说一句:我们的目标!纯净原生!:grin:

  1. 2009年11月6日22:28

    好复杂,算了我还是用插件吧

  2. whitewords
    2009年11月7日09:13

    @浩子
    嗯,这就是代码与插件不同之处,插件通过简单的安装设置就完成工作,但考虑的过于周全导致代码多,而原生代码本身也需要考虑周全,只是相对的减少一些功能或代码,呵,各有所好,关键在于对自己适用。 :o

  3. 2009年11月7日09:28

    问一下博主测试过了么?如果我按照你的方法安装上之后,如何测试功能已经实现了?
    很期待!

  4. whitewords
    2009年11月7日14:34

    @CCD
    呵,这个在我自己写的主题上一直在用,如果想看看所谓的功能呢,从效果上看不到的,但可以在页面点右键,查看源代码,会看到在头部信息前有如下代码(下面的例子是我本页的):
    <meta name=”description” content=”SEO,一个被无数博客作者浏览的高关键词,呵,它何以这么抢手?当然是由于它是搜索引擎最佳化的缩写,写博客非要针对搜索引擎来写吗?干嘛不能写给自己?你当然可以写给自己或自己的一个小圈子,再或者奉献给大众,但每一个公开的博客都或多或少的去优化一下自己对搜索引擎的友好度,以便提升自己网站在搜索引擎面前的知名度,最终提升自己的流量。呵,于是乎你SEO,我SEO,他也SEO,各种SEO的工具也油然而生,而在…” />

    <meta name=”keywords” content=”ALL IN ONE SEO PACK,SEO,WordPress,代码,原生代码,插件” />
    <meta name=”robots” content=”index,follow,noarchive” />
    <meta name=”googlebot” content=”noarchive” />

  5. 2009年11月7日20:46

    好的!辛苦了!
    明天我来复制下代码,谢谢了!

  6. 2009年11月9日23:13

    不错!我已经使用了!谢谢啦!