分享SEO WordPress的Description 与 Keywords

Posted on 30 八月 2009 by 柳城 ,阅读 1,260

大家不知有没有看过 我爱水煮鱼 我是如何 SEO WordPress 的 2:Description 和 Keywords。挺不错的,建议大家放弃All in one SEO之类的插件,改用这段代码就行了。

通过下面的代码设置博客的DescriptionKeywords,用日志的摘要作为Description,或是文章的前220个字,用标签(tags)作为关键词Keywords

只需要把这段代码放在header.php就行了。

我爱水煮鱼 里的原代码:

<?if (is_home()){    
 $description = "首页的描述";    
 $keywords = "首页的关键词";
} 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?>" />

修改版1:

上面的代码已经可以直接拿来用。不过也有一些细节问题,你可以用下面的修改版。主要是去掉了关键词之间的空格和最后的逗号,顺便也去掉了描述(description)的换行符(\n)。

<?php
 if (is_home()){   
 $description = "首页的描述";    
 $keywords = "首页的关键词";
} 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="description" content="<?php echo trim($description); ?>" />
<meta name="keywords" content="<?php echo rtrim($keywords,','); ?>" />

修改版2:

下面还有一段代码,主要是应Blinux的要求,呵。他需要把日志的第一段作为Description,就是不要再从第二行取字符了。Blinux是一个完美主义者,所以在他的要求下,也经过测试,下面的代码近乎完美地解决了这个问题。


<?php
 if (is_home()){
    $description = "首页的描述";
    $keywords = "首页的关键词";
} 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 = substr($post_content,0,220);   
  }
 
    $keywords = "";      
    $tags = wp_get_post_tags($post->ID);
    foreach ($tags as $tag ) {
        $keywords = $keywords . $tag->name . ",";
    }

}

?>
<meta name="description" content="<?php echo trim($description); ?>" />
<meta name="keywords" content="<?php echo rtrim($keywords,','); ?>" />

主要解释一下中间这段:


###第一种情况,以<p>开始,</p>结束来取第一段
if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$result)){ 
    $post_content = $result['1'];
} else {
###第二种情况,以换行符(\n)来取第一段   
   $post_content_r = explode("\n",trim(strip_tags($post->post_content))); 
    $post_content = $post_content_r['0'];
} 

分两种情况的原因是:第一种情况对Windows Live Writer发布的文章有效。第二种情况适合直接用WP的后台发布的文章。

代码放在header.php

你可以考虑放在title标签的之前或之后,不过我习惯的作法是把上面的代码单独另存为一个文件,如命名为desc.php,上传到你目前所用主题的目录下,然后调用就行了。


<title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title>
<?php include_once("desc.php"); ?>   

补充:对于页面(Page)的Description 与 Keywords

关于Page页面与分类页的的描述和关键词, 请关注最新文章~~(2009-11-07更新)

最终:解决乱码问题

这是因为substr在截取中文字符时所造成的。所以要自定义一个函数

<?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 = "首页的描述";
    $keywords = "首页的关键词";
} 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 . ",";
    }

}

?>
<meta name="description" content="<?php echo trim($description); ?>" />
<meta name="keywords" content="<?php echo rtrim($keywords,','); ?>" />

转载请注明 : 来源于 分享SEO WordPress的Description 与 Keywords | 柳城

赞助商

63条评论 于 “分享SEO WordPress的Description 与 Keywords”

  1. blinux blinux Says:

    终于发布了~
    我可以发行第二版吗 :lol:

    [回复]

    Lc.
    Lc. 回复:

    支持的。呵呵。

    [回复]

    blinux
    blinux 回复:

    除了首页、文章页,另外最好支持“单页面”. :lol:

    [回复]

    Lc.
    Lc. 回复:

    “单页面”,这个是指什么意思??

    [回复]

    blinux
    blinux 回复:

    就是“关于”、“留言板”类的页面 :lol:

    [回复]

    Lc.
    Lc. 回复:

    这种页面不好统一~~首先关键词就没办法.另外像"留言板",如果没内容的话,描述从哪来?也没办法...不过,具体到单个博客订作的话那是可以的....

    [回复]

    blinux
    blinux 回复:

    原来是这样啊~ :lol:

    [回复]

    Lc.
    Lc. 回复:

    根据你的需要,我补充了最后一段。你可以看着修改~~ :lol:

  2. blinux blinux Says:

    :qiang:

    [回复]

  3. 海梦缘 海梦缘 Says:

    你好,请问出现乱码的情况怎么修改到UTF-8。。。谢谢啊

    [回复]

    Lc.
    Lc. 回复:

    对于中文是有可能会乱码~~我再更新一下~~~

    [回复]

  4. 海梦缘 海梦缘 Says:

    谢谢啊

    [回复]

    Lc.
    Lc. 回复:

    已经更新了,看最终版~~~还没测试。应该不会有问题的 :lol:

    [回复]

  5. 海梦缘 海梦缘 Says:

    谢谢了,没问题了 呵呵

    [回复]

  6. ③秋之流☆ ③秋之流☆ Says:

    :qiang:
    使用最终版的代码?

    [回复]

  7. mzfeng mzfeng Says:

    你好,我用了最后那个最终解决方案都还是不行,只要这里面:
    if (is_home()){
    $description = "首页的描述";
    $keywords = "首页的关键词";
    } elseif (is_single()){
    有中文,在查看源文件里面的中文全部是乱码,但只要“description” 和 “keywords"是英文查看源文件里面的中文就不会出现乱码了。
    能不能帮我看一下,谢了。

    [回复]

    Lc.
    Lc. 回复:

    这个是字体编码问题而已,你把文件另存为UTF8的就行了

    [回复]

    mzfeng
    mzfeng 回复:

    我把主题里面的文件用Dreamweaver页面设置里转为UTF-8都还是一样,这个问题困扰我很久了,都还没搞掂~~

    [回复]

    mzfeng
    mzfeng 回复:

    就这个自定义的会乱码,内容不得页面又不会。
    if (is_home()){
    $description = “首页的描述”;
    $keywords = “首页的关键词”;
    } elseif (is_single()){

    [回复]

    Lc.
    Lc. 回复:

    你是不是把这段代码存在另一个文件,另一个文件也是要存为utf8的啊。统统都utf8就没错的了。

    [回复]

    Lc.
    Lc. 回复:

    是mzfeng.com这个么?没有乱码啊?? 你给个有乱码的链接我看看

    [回复]

    mzfeng
    mzfeng 回复:

    呵呵,刚刚弄好了,确实是utf-8编码的问题。
    问题主要出在我一直用WinSCP软件的编辑器来改写原代码的。可能这个软件对UTF-8编码不好,用Dreamweaver修改就没问题了,感谢Lc.博主!

    [回复]

  8. WEI WEI Says:

    你好,我用了您的这个代码,但分类目录下面没有关键字和描述了呢?请问应该如何设置成我想要的关键字和描述呢,谢谢

    [回复]

    Lc.
    Lc. 回复:

    分类目录的确是没有。这个我也不知道呢~~ 找不到有好的办法。

    [回复]

  9. WEI WEI Says:

    你好,我用 (最终:解决乱码问题)这一个的,网站打不开了,显示以下错误:

    Parse error: syntax error, unexpected '<' in /data/home/zs8985/htdocs/wp-content/themes/hw/header.php on line 39

    我用第一个修改版1 网站就可以打开,但有的文章出现乱码。

    [回复]

    Lc.
    Lc. 回复:

    要看line 39是什么的啊. 应该是你复制过去之后有点小地方错误了. 你看着改改就是了~
    其它人复制直接用都是没问题的.

    [回复]

  10. 天晴轩 天晴轩 Says:

    elseif (is_page()) {
    if($page_id == '2'){ ##根据需要修改这里的数字
    $description = "关于网站";
    $keywords = "关于网站";
    }
    这段代码添加失败 添加后提示 错误

    [回复]

    Lc.
    Lc. 回复:

    这段嘛.. 的确是.. 最好不用用这段~~
    如果是开了固定链接的话就没办法用这段了~
    我当时没考虑到这个~~
    是给只是用原始链接的博客用的. 失策了~~ :)

    [回复]

  11. 盒子 盒子 Says:

    能否为分类页也添加说明与关键字?

    [回复]

    Lc.
    Lc. 回复:

    没认真研究过~~

    [回复]

    盒子
    盒子 回复:

    我是认真研究过了,就是研究不出来 /疑问

    只好求助来了

    [回复]

    Lc.
    Lc. 回复:

    有空儿研究一下~~ /可爱

    [回复]

    盒子
    盒子 回复:

    那我就经常来关注了 /ok

    [回复]

    Lc.
    Lc. 回复:

    哈哈..已经研究出来.. 有空儿发布 /可爱

    [回复]

    盒子
    盒子 回复:

    别有空了,邮箱发给我先尝尝鲜吧 /呲牙

    [回复]

    Lc.
    Lc. 回复:

    其实我现在也有空... 不过要先去吃个饭..吃完回来发布. /呲牙

  12. 盒子 盒子 Says:

    我正好出门,晚上回家正好看到 /呲牙

    你如果晚上发,我就能强占沙发

    [回复]

    Lc.
    Lc. 回复:

    其实我这里没啥人气的~~ 你啥时来都可以抢到沙发的了~`
    不过现在有点事~~ 迟些再发~~ /呲牙

    [回复]

  13. zxdker zxdker Says:

    感谢博主,这个问题困扰我了几天,今天才想到源码乱码可能是自动截取description导致的,一搜果然找到了解决方法 [强]

    [回复]

  14. 墨白 墨白 Says:

    http://www.mobai.org/2010/02/23/btalk/
    求助,还是乱码!~
    chenglu#yeah.net

    [回复]

    柳城
    柳城 回复:

    看了,没看到乱码~

    [回复]

    墨白
    墨白 回复:

    谢谢您的回复,我换了个主题,就好了~
    汗,谢谢~
    自从用了那个主题之后谷歌都不收录我的网站了,我给换回来了,嘿嘿
    :) [呲牙]

    [回复]

    闲人
    闲人 回复:

    经过反复测试,发现这种方法有一个弊病,那就是“用日志的摘要作为Description,或是文章的前220个字,”这个里边不能有超链接或者其他类似的字符,否则就会出错,希望能解决下。谢谢了

    [回复]

  15. yospan yospan Says:

    柳兄 [偷笑] [偷笑] .我从你这里偷学很多东西哦.谢谢分享.!~
    请教一下,原来ALL IN ONE的NOINDEX,百度是不是对这个很敏感啊.它老是转首页,内页就不进去了.是否去掉这个插件,然后添加上面的代码文件,会好些呢.!~

    [回复]

  16. zwl zwl Says:

    [ok] 实验成功,终于可以摆脱all in seo这个插件了 [抱拳]

    [回复]

  17. 闲人 闲人 Says:

    我使用了第二种,不过貌似没有能完美解决乱码的问题和出错的问题。
    譬如,xianren.org/fnetjishu/xpwojieweb.html就出现了出错的问题,
    xianren.org/fzantan/frontoftheclass.html就出现了乱码的问题,大多数正常,我测试了下,有20%左右会出现问题。麻烦解决下?

    [回复]

    闲人
    闲人 回复:

    经过反复测试,发现这种方法有一个弊病,那就是“用日志的摘要作为Description,或是文章的前220个字,”这个里边不能有超链接或者其他类似的字符,否则就会出错,希望能解决下。

    [回复]

    柳城
    柳城 回复:

    这不是最新版本了。这是旧的了。~~ 其实应该出一个更新的了。 :)
    都旧了

    [回复]

  18. jerseys jerseys Says:

    多放一点血蛤

    [回复]

  19. color color Says:

    这个不行啊,当文章摘要有图片的时候,直接图片就显示出来了,整个页面都奔溃了,还有就是文章没摘要的时候,也是很无语

    [回复]

    柳城
    柳城 回复:

    摘要居然有图片。的确无语。

    [回复]

  20. 边看边走 边看边走 Says:

    柳老大,请教一下,这个我用了,没问题,就是有个疑问,能不能写段代码,让他截取文章中间部分的内容,或者只截取中文,如果在页面顶部放了广告代码,他会截取广告代码加一些文章内容,这样很不好啊,不知道这个能不能实现。一般广告都是首尾有,中间比较少,所以这个应该考虑一下啊

    [回复]

    柳城
    柳城 回复:

    有空更新一下

    [回复]

  21. tech 技术在线 tech 技术在线 Says:

    不错,受益匪浅 [强]

    [回复]

  22. frank frank Says:

    我网站description标签的乱码问题很长时间,我把下面的代码加入了header.php

    post_excerpt) {
    $description = $post->post_excerpt;
    } else {
    if(preg_match('/(.*)/iU',trim(strip_tags($post->post_content,"")),$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 . ",";
    }

    }

    ?>
    <meta name="description" content="" />
    <meta name="keywords" content="" />

    加完后,查看页面源代码,发现出现了两个description和keywords,于是我删除了header.php中原有的下列代码,

    <?php if((is_home() && ($paged < 2 )) || is_single() || is_page()) { echo ''; } else { echo ''; } ?>

    <meta name="description" content="" />

    <meta name="description" content="" />

    <meta name="keywords" content="" />

    目前看,博客工作正常。是否稳定或有其他问题等待进一步观察。

    [回复]

  23. Rik Rik Says:

    你好博主,如果我不想使用摘要作为description标签,而只取用截断文章前220字的方式;那么我要去掉那些代码?

    [回复]

  24. xiang xiang Says:

    这个很强大,用了,谢谢分享! [强]

    [回复]

  25. {潮汛.} {潮汛.} Says:

    为什么要去掉关键字的符号和空格,这个不解?

    [回复]

  26. 行车记录仪 行车记录仪 Says:

    好文章,有个问题,火狐不乱码,ie乱码有影响吗

    [回复]

4 Trackbacks For This Post

  1. SEO WordPress的Description、Keywords和Title | 森羅萬象 Says:

    [...] 分享SEO WordPress的Description 与 Keywords( http://liucheng.name/930/ ) [...]

  2. WordPress的Description、Keywords和TitleSEO优化(完整版)|︶ㄣ晓风残月博客 Says:

    [...] WordPress的Description 与 Keywords( http://liucheng.name/930/ ) 分享SEO WordPress的标题Title ( http://liucheng.name/932/ [...]

  3. SEO WordPress的Description、Keywords和Title(完整版,转自柳城) ∷『独孤小于』 Says:

    [...] WordPress的Description 与 Keywords( http://liucheng.name/930/ ) ◦分享SEO WordPress的标题Title ( http://liucheng.name/932/ ) [...]

  4. 最爱CCI » SEO WordPress的Description、Keywords和Title seo优化 Says:

    [...] 分享SEO WordPress的Description 与 Keywords( http://liucheng.name/930/ ) [...]

Leave a Reply

广告招租

[强] [握手] [可爱] [ok] [呲牙] :) [偷笑] [流泪] [疑问] [亲亲] [擦汗] [得意] [衰] [可怜] [抱拳] [坏笑] more »

无觅相关文章插件,快速提升流量

adobe free

adobe free

winrar 3 download

winrar 3 download freedownload

windows 7 free

windows 7 crack

key office 2010

office 2010 key

download photo shop free

photo shop serial

corel dvd moviefactory 6

corel dvd moviefactory 6 downloads

free corel photoshop download

free corel photoshop download keygen

photoshop key

photoshop key

free corel downloads

free corel downloads cracked

free winrar download for xp

download winrar for xp for free

serial corel draw 11

serial corel draw 11 serials

windows 7 key

windows 7 key

photo shop key

photo shop key

winrar password cracker serial

wirar password cracker

serial winzip 11

serial winzip 11 key

cs5 serialz

cs5 serialz free

office 2010 professional key

office 2010 key

office 2010 free

office 2010 key

windows key

windows key