如何用代码完美替代 WordPress 中的 All in One SEO Pack 插件



昨天写了些自己所用的 WordPress 插件,稍微提及了一下为什么自己没有使用 All in One SEO Pack 这个插件。那不用插件还怎么 SEO 呢?我们今天就来解决这个问题。用代码来完美替代 All in One SEO 插件。


1、Title 的优化
在主题的 Header.php 中修改 Title 标签为

1
<title><?php if (is_home() ) {?>FORECE博客|关注互联网创业和IT技术<?php } else {?><?php wp_title();?> |FORECE博客<?php } ?></title>

2、关键字与描述

Keywords 与 Description 在SEO中是很重要的元素,所以也不能漏掉。这里有两种修改方法。

用 Tag 与 摘要自动填写 Keywords 与 Description

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
    <?php
##定义一个函数.解决截取中文乱码的问题
if (!function_exists('utf8Substr')) {
 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);
 }
}
if ( is_home() ){
    $description = "FORECE的博客是一个关注互联网和IT技术的博客,主要提供本人的国外生活日志,互联网资讯,IT技术和网络赚钱等信息";
    $keywords = "FORECE BLOG,日志,博客,Windowx,IT,技术,系统,加拿大,蒙特利尔,生活,网赚";
}
elseif ( is_single() ){
    if ($post->post_excerpt) {
        $description  = $post->post_excerpt;
    } else {
   if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$result)){
    $post_content = $result['1'];
   } else {
    $post_content_r = explode("\n",trim(strip_tags($post->post_content)));
    $post_content = $post_content_r['0'];
   }
         $description = utf8Substr($post_content,0,220);
  }
 
    $keywords = "";    
    $tags = wp_get_post_tags($post->ID);
    foreach ($tags as $tag ) {
        $keywords = $keywords . $tag->name . ",";
    }
}
?>
<?php echo "\n"; ?>
<meta name="description" content="<?php echo trim($description); ?>" />
<meta name="keywords" content="<?php echo rtrim($keywords,','); ?>" />

这个方法相对简单,如果给日志添加了摘要就把摘要做为 Description,如果没有设置摘要,则把文章标题作为Description,而标签直接作为 Keywords。

再放上另外一种方法:(不过这种方法对于特殊符号会自动转义变成乱码,比如 -,#之类的符号)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?if (is_home()){
$description = "FORECE的博客是一个关注互联网和IT技术的博客,主要提供本人的国外生活日志,互联网资讯,IT技术和网络赚钱等信息";
$keywords = "FORECE 博客,日志,国外生活,加拿大,蒙特利尔,Windows,IT,技术,互联网,网赚,WordPress";
} elseif (is_single()){
    if ($post->post_excerpt) {
        $description     = $post->post_excerpt;
    } else {
        $description = mb_strimwidth(strip_tags(apply_filters('the_content',$post->post_content)),0,220);
    }
 
    $keywords = "";      
    $tags = wp_get_post_tags($post->ID);
    foreach ($tags as $tag ) {
        $keywords = $keywords . $tag->name . ", ";
    }
}
?>
<meta name="keywords" content="<?=$keywords?>" />
<meta name="description" content="<?=$description?>" />

网上有些文章提到的用如下代码截断文章办法其实不行,对于中文来说会产生乱码,甚至导致整个页面乱码:

1
$description = strip_tags($post->post_excerpt);

如果换成

1
$description = mb_strimwidth(strip_tags($post->post_content),0,220);

就没有问题了

相关评论

  1. […] 本文由“教师论坛 | wordpress”整理自这里 […]

  2. 阳朔在线说道:

    博主..这个优化方法好啊.

    谢谢分享

  3. 电商圈说道:

    博主是不是没有用这句代码?

  4. 海皇说道:

    你好,怎么加函数呢

  5. lose weight说道:

    谢谢啦 学习了 之前用all in one seo 害我中文博客的description 没被抓取出来 现在替换了终于好用了

  6. 北极说道:

    你的这些代码全部半角转全角了,复制过来后没法用,能否用txt发份给我?[email protected] 谢谢!

  7. 海天无影说道:

    文章的关键字自定要,难道还要修改发表页面,自己加上输入框?
    allseo呢?文章的关键字 怎么输入啊

    • FORECE说道:

      不用修改页面,WP发布系统允许有自定义域,也就是说可以自己加载变量。而$keywords, $description 就是两个变量。在写文章的时候加入这两个定义域名,在域中输入变量值就可以了。装个WP试一下就知道了。

  8. liuzm说道:

    呵呵,学习技术哦,嘿嘿

  9. 减肥食谱说道:

    WP插件就是牛,还多,不过我也就使用了 super cache,wp-easyarchives还有个常用的回复插件~~~

  10. 免费小说说道:

    WP太多插件,浩如煙海~可惜,我懂的不多.象你学习

  11. 阿士说道:

    囧~转WP了,欢迎啊~

  12. 蓝色光标说道:

    说实话,真没看懂,慢慢学吧。这时代,更新太快,步子赶不上。

  13. 中国球迷网说道:

    好专业!好复杂啊~

  14. 小辉网说道:

    我的不知道怎么了不能用,放进去后Keywords 与 Description都能显示为中文,但是其他的都是乱码了。真郁闷。

  15. 易搜购说道:

    还是all seo插件吧,代码改改麻烦,自定义也是比较啰嗦的。

    all seo插件不好么?

    • FORECE说道:

      all seo 很好,但是如果有适合中文站的就更好了,WP有个截断符的问题。所以中文不推荐使用 ALL SEO 插件。

  16. 阿东说道:

    来学习了。。我比较懒。。也不会。 就用BO-BLOG的插件。。不会搞。

  17. 卢松松说道:

    貌似也开始走技术路线了?

  18. 土狼妹妹说道:

    目前只能用一些现成的插件,像上面的修改代码,还不行

  19. JUST BB说道:

    好方法呀。

  20. 猫哥说道:

    WP用得少,呵呵。

  21. fengya说道:

    换皮的时候比较麻烦

  22. 中国亚龙说道:

    很好,,呵呵。不过我用不到。。。

    • FORECE说道:

      呵呵,不过像描述,关键词,标题这类的东西还是了解一下的好,不管哪个网站,这些都很重要的。

  23. 宁波SEO说道:

    技术问题,插件比较方便,呵呵。

  24. ben说道:

    用 Tag 与 摘要自动填写 Keywords 与 Description
    这里面那一大段代码写在哪里?

  25. 老饕说道:

    柳城童鞋写过一篇很详细的~~为此,我差点就停掉这个插件了~哈哈

  26. ZNZBLOG说道:

    插件能解决的问题为何还要用复杂的方法解决呢

  27. 秋天一棵树说道:

    AOS插件我启用又停用了,因为现在用的主题本身在这方面已经做的很强了;与主题整合实现功能是最好的方式,这一点万戈你们做的非常好。

    • FORECE说道:

      全都整代码太繁琐了,如果有插件我还是蛮喜欢插件的,傻瓜式的很简单。主要是 All in One 不适合中文博客,所以才改代码的。

  28. Ben说道:

    年前看到你BLOG用的HOSTGATOR主机,打开速度很快哈。 不过最近几天好像有点时快时慢的厄 我在上海

  29. 古墓候梅说道:

    换成WordPress 的了啊,我进来的时候还以为自己搞错了。
    哈哈….还不错。

  30. 万戈说道:

    我也是用的这个方法,拒绝用插件,哈哈

  31. 韩寒说道:

    我是wp和zblog都用,前者英文博客,后者中午博客

  32. 我现在的WP也就不到10个插件,SEO完全靠代码实现

  33. 阿修说道:

    相对于SEO,我觉得内容还是比较重要。

  34. mice说道:

    一个月不来 你也转wp了..

  35. 真好网说道:

    我就是用的这个插件,为什么呢,因为,因为我是懒人!嘿嘿

  36. 笔头说道:

    还没用过,不知道怎么用~
    纯支持下~

  37. 俺的是zblog的用不到!

  38. 左岸读书说道:

    插件能省就省!

  39. 菠萝说道:

    这篇文章质量好高啊!
    不错!
    看来Forece对WP代码内核研究得挺深了。

相关评论:

您的电子邮箱地址不会被公开。 必填项已用*标注