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 相应的位置,同样我也只优化了首页和日志页面。


传说中的日经
支持 反对
BS 下楼上的。
支持 反对
支持日经……
支持 反对
支持 反对
好! 我的主题已经集成这个了.
<- 我是个好学之人.
但为什么是 220 呢?
支持 反对
因为 Google 推荐 220 个。
支持 反对
恩,虽然代码很简单,但是还是很实用的。虽然keywords被削弱了,但是优化一下总比不优化好。评论完毕。
支持 反对
评论很经典!
支持 反对
好文!有用!
支持 反对
不错,用上了
支持 反对
支持 反对
请问,放在header中的什么位置呀。。。
支持 反对
复制放到 title 标签下。
支持 反对
偶用插件。。
支持 反对
我的header.php里面只找到这句,连keywords都没……咋添加呢?
支持 反对
汗,复制的代码不见了……
支持 反对
我也在找这些。。
支持 反对
我也去加上了
支持 反对
谢谢分享,早就想截取文章作为Description了,但一直苦于找不到方法。。
支持 反对
还有个问题问一下啊
keywords中的tag分开时候逗号是’,'还是’,’
用哪个?
支持1 反对
英文的 ,
支持 反对
发现keywords最后一个标签后面还有 ,
不知道怎么回事
支持 反对
可以通过下面的语句去掉最后的 ,
$keywords = substr($keywords,0,-2);
支持 反对
我想问一下$post是事先在哪定义的
支持 反对
全局变量!
支持 反对
啊是在哪里初始化的啊
支持 反对
自己查看 WordPress 源代码!
支持 反对
用上了!
支持 反对
按照你说的,优化了一下!
支持 反对
为什么我添上后,当它自己截取字时会在末尾出现了一个乱码!!
支持 反对
这个可能需要加上一个叫做 utf8-trim 的函数。google 下!
支持 反对
我找了半天看到了这个函数,可是不知如何添加进去,能帮我看看吗?我的网站目前正在使用这段代码,方便的话给我发个E-mail吧,多谢!
支持 反对
$description = substr($description,0,-1); 我用這個去掉了最後一個亂碼,哈
支持 反对
呃,突然發現不行了?難道之前是緩存?
支持 反对
google了下不會用。。可否指教下~謝謝
支持 反对
添加如下函数:
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));
支持 反对
感謝,我用mb_strimwidth函數替換了substr函數發現也可以用哈~
支持 反对
请问:
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);
}
应该加在什么位置?我不是程序员,请指教。
支持 反对
请问$keywords = substr($keywords,0,-2);加在哪里
支持 反对
放在 $keywords = $keywords . $tag->name . “, “; 和后面
支持 反对
你的博客不能复制东西很不适合,自己打吧还打不出来,郁闷啊。很喜欢这篇文章
支持 反对
Firefox 下可以复制。
支持 反对
很感谢 雪山飞猪 教了我那么多
不过我还是有几点疑问
1.关键词的逗号后面会有个空格,刚开始我以为是 $keywords = $keywords . $tag->name . “, “; 逗号后面有个空格的关系,就改了一下,结果前面的正确,可最后一个字变成乱码。
2.在标签和分类页面时,要怎么做?
支持 反对
出本书吧, 每天上网一点一点看很辛苦的……
支持 反对
感谢雪山飞猪提供此方法,不过经测试还有几个地方不是那么完善
第一处:如果文章前220字符有换行那么description中也会换行。加上以下代码就OK了
$description = str_replace(array(“\r\n”, “\r”, “\n”, ” “), ” “, $description);
$description = str_replace(array(“\”"), “”, $description);
第二处是上面20楼提到的问题,如果关键词是中文的话按照你提供的方法处理的话会把所有的逗号都去掉了,造成所有关键词连在一起了,英文关键词貌似没有问题。
还没找到解决办法
供参考….
支持 反对
$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=”" />
——————————-
试了好多次,总是出错,可能插错了位置。
另外,主页选择静态页面的某个页面时,好像无法看到主页的描述与关键词,有无解决办法?
先谢!
支持 反对
昏,搞定了
$keywords = substr($keywords,0,-1);应该加在foreach ($tags as $tag ) { } 外面
我自己真弱智,汗一个
支持 反对