我是如何 SEO WordPress 的 2:Description 和 Keywords
November 16th, 2008 Denis
Description 和 Keywords 的重要性已经不像以前那么重要了,但是设置正确的 Description 和 Keywords 还是对你的排名有利。
WordPress 在撰写日志的时候,可以给日志添加摘要(excerpt)和标签(tag),我的做法就是,就如给日志添加了摘要就把摘要做为 Description,如果没有设置摘要的话,则截取文章的前 220 个字作为 Description,而标签直接作为 Keywords。代码如下:
<?if (is_home()){ $description = "我爱水煮鱼是一个关注 WordPress 开源博客平台应用和互联网的 IT 博客。"; $keywords = "WordPress, 博客, 互联网, 主题, 插件"; } elseif (is_single()){ if ($post->post_excerpt) { $description = $post->post_excerpt; } else { $description = substr(strip_tags($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?>" />
上面代码请放到 header.php 相应的位置,同样我也只优化了首页和日志页面。





1. Crazy Loong | November 16, 2008 at 11:27 pm | #
传说中的日经
2. Denis | November 16, 2008 at 11:29 pm | #
BS 下楼上的。
3. feicun | November 16, 2008 at 11:30 pm | #
支持日经……
4. Kenny | November 16, 2008 at 11:32 pm | #
5. mg12 | November 16, 2008 at 11:41 pm | #
好! 我的主题已经集成这个了.
<- 我是个好学之人.
但为什么是 220 呢?
6. Denis | November 16, 2008 at 11:42 pm | #
因为 Google 推荐 220 个。
7. 火星人 | November 17, 2008 at 12:08 am | #
恩,虽然代码很简单,但是还是很实用的。虽然keywords被削弱了,但是优化一下总比不优化好。评论完毕。
8. Denis | November 17, 2008 at 12:20 am | #
评论很经典!
9. 老所 | November 17, 2008 at 12:23 am | #
好文!有用!
10. 雀巢 | November 17, 2008 at 12:24 am | #
不错,用上了
11. fengfree | November 17, 2008 at 8:51 am | #
12. Rey | November 17, 2008 at 9:51 am | #
请问,放在header中的什么位置呀。。。
13. Denis | November 17, 2008 at 11:49 am | #
复制放到 title 标签下。
14. 老孔 | November 17, 2008 at 10:14 am | #
偶用插件。。
15. 流星 | November 17, 2008 at 11:48 am | #
我的header.php里面只找到这句,连keywords都没……咋添加呢?
16. 流星 | November 17, 2008 at 2:07 pm | #
汗,复制的代码不见了……
17. Zoll | November 17, 2008 at 12:33 pm | #
我也在找这些。。
18. Dianso | November 17, 2008 at 12:56 pm | #
我也去加上了
19. stephen | November 17, 2008 at 12:58 pm | #
谢谢分享,早就想截取文章作为Description了,但一直苦于找不到方法。。
20. Dianso | November 17, 2008 at 1:05 pm | #
还有个问题问一下啊
keywords中的tag分开时候逗号是’,'还是’,’
用哪个?
21. Denis | November 17, 2008 at 4:20 pm | #
英文的 ,
22. Dianso | November 17, 2008 at 1:13 pm | #
发现keywords最后一个标签后面还有 ,
不知道怎么回事
23. Denis | November 17, 2008 at 4:26 pm | #
可以通过下面的语句去掉最后的 ,
$keywords = substr($keywords,0,-2);
24. charleslee | November 17, 2008 at 5:34 pm | #
我想问一下$post是事先在哪定义的
25. Denis | November 17, 2008 at 5:43 pm | #
全局变量!
26. charleslee | November 17, 2008 at 5:47 pm | #
啊是在哪里初始化的啊
27. Denis | November 17, 2008 at 5:49 pm | #
自己查看 WordPress 源代码!
28. xaoma | November 17, 2008 at 6:40 pm | #
用上了!
29. sarahice | November 20, 2008 at 11:05 am | #
按照你说的,优化了一下!
30. xiaorsz | November 21, 2008 at 4:26 pm | #
为什么我添上后,当它自己截取字时会在末尾出现了一个乱码!!
31. Denis | November 27, 2008 at 7:41 pm | #
这个可能需要加上一个叫做 utf8-trim 的函数。google 下!
32. 万亮 | January 2, 2009 at 6:01 pm | #
我找了半天看到了这个函数,可是不知如何添加进去,能帮我看看吗?我的网站目前正在使用这段代码,方便的话给我发个E-mail吧,多谢!
33. Leeiio | January 22, 2009 at 5:23 pm | #
$description = substr($description,0,-1); 我用這個去掉了最後一個亂碼,哈
34. Leeiio | January 22, 2009 at 5:33 pm | #
呃,突然發現不行了?難道之前是緩存?
35. Leeiio | January 22, 2009 at 5:11 pm | #
google了下不會用。。可否指教下~謝謝
36. Denis | January 22, 2009 at 6:00 pm | #
添加如下函数:
function utf8_trim($str) {
$len = strlen($str);
$hex = ”;
for ($i=strlen($str)-1; $i>=0; $i-=1){
$hex .= ‘ ‘.ord($str[$i]);
$ch = ord($str[$i]);
if (($ch & 128)==0) return(substr($str,0,$i));
if (($ch & 192)==192) return(substr($str,0,$i));
}
return($str.$hex);
}
然后吧
$description = substr(strip_tags($post->post_content),0,220);
改成:
$description = utf8_trim(substr(strip_tags($post->post_content),0,220));
37. Leeiio | January 22, 2009 at 6:14 pm | #
感謝,我用mb_strimwidth函數替換了substr函數發現也可以用哈~
38. Paul | April 28, 2009 at 5:32 pm | #
请问:
function utf8_trim($str) {
$len = strlen($str);
$hex = ”;
for ($i=strlen($str)-1; $i>=0; $i-=1){
$hex .= ‘ ‘.ord($str[$i]);
$ch = ord($str[$i]);
if (($ch & 128)==0) return(substr($str,0,$i));
if (($ch & 192)==192) return(substr($str,0,$i));
}
return($str.$hex);
}
应该加在什么位置?我不是程序员,请指教。
39. lixiaolong | November 25, 2008 at 6:44 pm | #
请问$keywords = substr($keywords,0,-2);加在哪里
40. Denis | November 27, 2008 at 7:43 pm | #
放在 $keywords = $keywords . $tag->name . “, “; 和后面
41. 周公解梦 | November 28, 2008 at 4:19 pm | #
你的博客不能复制东西很不适合,自己打吧还打不出来,郁闷啊。很喜欢这篇文章
42. Denis | November 28, 2008 at 4:27 pm | #
Firefox 下可以复制。
43. lixiaolong | November 28, 2008 at 10:31 pm | #
很感谢 雪山飞猪 教了我那么多
不过我还是有几点疑问
1.关键词的逗号后面会有个空格,刚开始我以为是 $keywords = $keywords . $tag->name . “, “; 逗号后面有个空格的关系,就改了一下,结果前面的正确,可最后一个字变成乱码。
2.在标签和分类页面时,要怎么做?
44. cuikai | December 11, 2008 at 10:57 am | #
出本书吧, 每天上网一点一点看很辛苦的……
45. 笑林广记 | December 19, 2008 at 11:52 am | #
感谢雪山飞猪提供此方法,不过经测试还有几个地方不是那么完善
第一处:如果文章前220字符有换行那么description中也会换行。加上以下代码就OK了
$description = str_replace(array(”\r\n”, “\r”, “\n”, ” “), ” “, $description);
$description = str_replace(array(”\”"), “”, $description);
第二处是上面20楼提到的问题,如果关键词是中文的话按照你提供的方法处理的话会把所有的逗号都去掉了,造成所有关键词连在一起了,英文关键词貌似没有问题。
还没找到解决办法
供参考….
46. wuai | April 6, 2009 at 4:58 pm | #
$description = str_replace(array(”\r\n”, “\r”, “\n”, ” “), ” “, $description);
$description = str_replace(array(”\””), “”, $description);
————————————
上段具体应摆在下方这一段的哪一行后面?
————————————————–
post_excerpt) {
$description = $post->post_excerpt;
} else {
$description = substr(strip_tags($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=”" />
<meta name=”description” content=”" />
——————————-
试了好多次,总是出错,可能插错了位置。
另外,主页选择静态页面的某个页面时,好像无法看到主页的描述与关键词,有无解决办法?
先谢!
47. 笑林广记 | December 19, 2008 at 11:58 am | #
昏,搞定了
$keywords = substr($keywords,0,-1);应该加在foreach ($tags as $tag ) { } 外面
我自己真弱智,汗一个
48. Metoit | February 8, 2009 at 1:55 am | #
使用all in one seo pack了.懒得动手了
49. zhukun | March 6, 2009 at 8:35 pm | #
很好很强大,我也可以抛弃All in One SEO Pack了!
50. lunweninfo | March 15, 2009 at 2:13 pm | #
关键词的逗号后面会有个空格,刚开始我以为是 $keywords = $keywords . $tag->name . “, “; 逗号后面有个空格的关系,就改了一下,结果导致全部出现乱码,请问怎样能解决这问题呢?
51. jazzi | May 22, 2009 at 10:30 am | #
和#46楼的同样的问题,
要解决前220字符换行的问题,#45楼笑林广记的代码应该放到哪个地方?
$description = str_replace(array(”\r\n”, “\r”, “\n”, ” “), ” “, $description);
$description = str_replace(array(”\””), “”, $description);
52. zouhu8 | June 8, 2009 at 3:19 pm | #
看到楼上的问题没人回答,我就把我自己的沾上来吧
$dn=$description = utf8_trim(substr(strip_tags($post->post_content),0,220));
$dn = str_replace(array(”\r\n”,”\r”,”\n”,”\”",” “),”",$dn);
详见:我的博客simplc.cn中:让你丢掉all in one seo pack方法
53. zouhu8 | June 8, 2009 at 3:21 pm | #
由于编辑器原因 请使用代码的时候注意把“符号的全角改为半角