Categorized | WordPress

SEO WordPress的Description、Keywords和Title(完整版)

Posted on 07 十一月 2009 by 柳城 ,阅读 1,040 简洁版

且看之前的两篇文章,关于SEO WP博客的DescriptionKeywordsTitle。(有什么不明白的话也可看这两篇文章,有详细的分析。)

最近又挺多童鞋过来问要关于Page页面和分类页面的Description和Keywords。研究了一下,终于通了。完整版诞生。功能可与All in One SEO 插件相媲美。这下你们是可以彻底丢掉All in One SEO 插件了。

推荐的修改方法:

在header.php,原始的title是这样的:

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

修改为:

<?php include_once("desc.php"); ?>

你只要把下面的代码保存在desc.php就OK了。(如果有中文的话,记得另存为文件的编码是UTF-8。切记)。把desc.php上传到你的主题的目录下。

SEO WordPress的Description、Keywords和Title(通用版)

Title是覆盖所有的页面的了。通用版的Description和Keywords就只有首页和文章页面的。

把下面的代码另存为desc.php就行了。细节问题自行改动。

<!--Title Begin, By Lc.-->
<?php if ( is_home() ) { ?><title><?php bloginfo('name'); ?> | <?php bloginfo('description'); ?></title><?php } ?>
<?php if ( is_search() ) { ?><title>搜索结果 | <?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_single() ) { ?><title><?php echo trim(wp_title('',0)); ?> | <?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_page() ) { ?><title><?php echo trim(wp_title('',0)); ?> | <?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_category() ) { ?><title><?php single_cat_title(); ?> | <?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_month() ) { ?><title><?php the_time('F'); ?> | <?php bloginfo('name'); ?></title><?php } ?>
<?php if (function_exists('is_tag')) { if ( is_tag() ) { ?><title><?php  single_tag_title("", true); ?> | <?php bloginfo('name'); ?></title><?php } ?> <?php } ?>
<?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 = "我们身处急速上涨的数据海洋中…我们如何避免信息的没顶之灾呢?柳城博客(Lc.)∷关注生物信息学,分享学习Linux、PHP+Mysql、Perl/BioPerl等的心得,努力在数据的海洋里畅游。";
    $keywords = "生物信息学,Perl,Bioperl,PHP,Mysql,Linux,NCBI,摄影";
}
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 & Keywords End, By Lc.-->

SEO WordPress的Description、Keywords和Title(完整版)

加入Page页面和分类页的的Description和Keywords。强大!!!!首先当然要知道各个分类页面和Page页面的ID了。

 <!--###Title Begin, By Lc.###-->
<?php if ( is_home() ) { ?><title><?php bloginfo('name'); ?> | <?php bloginfo('description'); ?></title><?php } ?>
<?php if ( is_search() ) { ?><title>搜索结果 | <?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_single() ) { ?><title><?php echo trim(wp_title('',0)); ?> | <?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_page() ) { ?><title><?php echo trim(wp_title('',0)); ?> | <?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_category() ) { ?><title><?php single_cat_title(); ?> | <?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_month() ) { ?><title><?php the_time('F'); ?> | <?php bloginfo('name'); ?></title><?php } ?>
<?php if (function_exists('is_tag')) { if ( is_tag() ) { ?><title><?php  single_tag_title("", true); ?> | <?php bloginfo('name'); ?></title><?php } ?> <?php } ?>
<?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 = "我们身处急速上涨的数据海洋中…我们如何避免信息的没顶之灾呢?柳城博客(Lc.)∷关注生物信息学,分享学习Linux、PHP+Mysql、Perl/BioPerl等的心得,努力在数据的海洋里畅游。";
    $keywords = "生物信息学,Perl,Bioperl,PHP,Mysql,Linux,NCBI,摄影";
}
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 . ",";
    }
}
###这里是分类页面。自行改变is_category的ID。###
elseif ( is_category(34) ){
    $description = "生物信息学(Bioinformatics)是一门利用计算机技术研究生物系统之规律的学科。通过实例分析,介绍生物信息学的入学知识,包含生物信息学的数据库等。重点是NCBI的中文教程。";
    $keywords = "生物信息学,Bioinformatics,NCBI,影响因子";
}
###这里是Page页。同上。多个页面的话自行添加就是###
elseif ( is_page(2) ){
    $description = "关于柳城博客(Lc.)的介绍,联系方式,以及网站历程。柳城博客(LIUCHENG.NAME)∷努力在数据的海洋里畅游。";
    $keywords = "生物信息学,Perl,Bioperl,PHP,Mysql,Linux,NCBI,摄影";
}
elseif ( is_page(135) ){
    $description = "柳城博客(Lc.)的留言板。有什么问题或建议请在这里留言! 我会尽快回复~ 感谢您的支持!!";
    $keywords = "柳城博客,Lc.,留言板,留言本";
}
?>
<?php echo "\n"; ?>
<meta name="description" content="<?php echo trim($description); ?>" />
<meta name="keywords" content="<?php echo rtrim($keywords,','); ?>" />
<!--###Description & Keywords End, By Lc.###-->

~完。

转载请注明 : 来源于 SEO WordPress的Description、Keywords和Title(完整版) | 柳城

赞助商

99条评论 于 “SEO WordPress的Description、Keywords和Title(完整版)”

  1. 卢松松 Says:

    这到是给了我博客zblog一个思路。。

    [回复]

    万戈 回复:

    我真的很想把松松拉到我们WP的大家族来
    松松,你就从了吧 /呲牙

    [回复]

    mimzyx 回复:

    又一个师太被求婚 /可爱 /可爱

    [回复]

    园子 回复:

    我也想拉你进来 wp 大军中来
    从了吧。。。

    [回复]

  2. 盒子 Says:

    沙发没了。。。

    [回复]

    Lc. 回复:

    试用了没~一切正常不?

    [回复]

    盒子 回复:

    刚吃完饭,一会试试 /呲牙

    [回复]

  3. Never summer Says:

    為什么我用了之后 博客上方出現一大塊空白……奇怪……

    [回复]

  4. Never summer Says:

    話說應該是這個的問題
    我全部復制到header。php 完全沒有問題
    但是放到desc.php再關聯到header.php就有一大塊空白

    [回复]

    Lc. 回复:

    给我看个链接。 /ok

    [回复]

    Never summer 回复:

    我剛才研究半天
    全部復制到HEADER和替代DESC到HEADER的代碼沒有半點區別
    為什么會有一大片空白?

    [回复]

    Lc. 回复:

    是源代码里有空白还是??

    [回复]

    Never summer 回复:

    不是 是網頁上方。就是banner上面有一大片空白 而代碼卻完全一樣

    [回复]

    Lc. 回复:

    这个嘛。不大清楚。要看个链接,具体看看。
    可能是跟插件或是主题有冲突的原因~

    [回复]

    Never summer 回复:

    額 不想改了 可能是主題的沖突 我放在我另外一個站 非常正常…………

    [回复]

    Lc. 回复:

    恩。那应该是主题的冲突~~ 要看过你的主题才知道~~

  5. 掌柜的马甲 Says:

    这几个选项其实在搜索引擎中占得比重已经没有以前那么大了...

    [回复]

    Lc. 回复:

    呵呵。可能~~

    [回复]

  6. 开心凡人 Says:

    看看我能用否

    [回复]

    Lc. 回复:

    不能用就来报错~ /ok

    [回复]

  7. Louis Han Says:

    从来没有关注过这些东西呢

    [回复]

    Lc. 回复:

    强人。不需用关注~ /呲牙

    [回复]

  8. 鱼鳞病 Says:

    牛人啊,我在学seo呢

    [回复]

    Lc. 回复:

    一看就知道是学来赚钱~~我可比不上你的。 /偷笑

    [回复]

  9. A.shun Says:

    我一直都是交给插件的,没研究seo
    不过要是能减少个插件都是好事情

    [回复]

    Lc. 回复:

    Description还是挺重要的其实。因为搜索时如果Description有这个关键词的话才能搜到。当然,首先是title。

    [回复]

  10. 无疆 Says:

    呵呵,第一次到你的博客就感到熟悉,就是这个插件知道的你,没知道之前觉得你很神秘,现在庐山终于露出真面目了 /偷笑

    [回复]

    Lc. 回复:

    呵呵。这说明真面目本来就不咋的。 /可怜

    [回复]

  11. 盒子 Says:

    测试完毕,完美解决了

    [回复]

  12. 老饕 Says:

    先忍着不改~~大动作慢慢折腾~

    [回复]

    Lc. 回复:

    /可爱 。蛮大的动作了,有时改了描述和关键词,title 结构等的话,搜索引擎要过几天才能反应过来的。 :)

    [回复]

  13. 天晴轩 Says:

    嘿嘿 代码完整了

    [回复]

    Lc. 回复:

    终于完整了~~ [可爱]

    [回复]

  14. 翔子 Says:

    学习下了 ~ /呲牙

    [回复]

  15. 张楠 Says:

    学习了,偶用Z-BLOG

    [回复]

  16. 先看看 Says:

    这个介绍的很详细,先收着了

    [回复]

  17. 单点日志 Says:

    我用 all seo 插件,怎么关键字 描述都塞不进页面,郁闷呢,不知道怎么解决

    [回复]

    Lc. 回复:

    你是指用了插件没效果?? 可能你的主题不支持吧。

    [回复]

    单点日志 回复:

    可能吧,首页就是没有效果。内页有的,琢磨不出来

    [回复]

  18. 168兼职网 Says:

    我来捧个场

    [回复]

  19. 笑望书 Says:

    太强大了,可惜太复杂了,有点显得累赘,title就首页不同、其它输出文章标题+博客名就可以,另keyword可以不用写了,keyword已经没什么用,至于自动截取开关部分文字作description只对懒人有用,最好还是自定义一个key作description。

    不过博主这篇文章还是很有参考意义,值得赞一个。

    [回复]

    Lc. 回复:

    不复杂才怪~~ 这是考虑到了所有的方方面面的.. 一网打尽了~~
    要简化就自己动手删掉一些就行了. [呲牙]

    [回复]

  20. Blinux Says:

    严重收藏下 [呲牙]

    [回复]

  21. 最新电影推荐 Says:

    太感激了,终于找到了多年来没有找到的东西;了却了一大心愿啊!

    ====wordpress 不用插件,头部优化=====本地测试通过!

    不知道该怎么感谢你啊!

    先把这篇文章收藏起来,再转到我的博客上去! [呲牙]

    [回复]

  22. 疾风 Says:

    [囧]

    [回复]

  23. 疾风 Says:

    怎么样在文章页调用description时显示文章的前220个文字,而不是第一个里的内容啊?

    [回复]

    疾风 回复:

    而不是第一个 P 标签里的内容

    [回复]

    Lc. 回复:

    看原来的文章有分析。。适当改变几句就行了。 :)

    [回复]

  24. 大胡子 Says:

    我按你的步骤完成了,但在后台哪个地方添加目录的标题,关键字和描述呢?

    [回复]

  25. 超超 Says:

    哦,好热闹啊!文章页很有用!谢谢博主! [强]

    [回复]

  26. 我爱记歌词 Says:

    不知道这个对最新版的2.91 是否管用呢?

    [回复]

    柳城 回复:

    都管用的..

    [回复]

  27. lifishake Says:

    http://liucheng.name/

    http://liucheng.name/page/3/
    的description是相同的.
    有办法让它们不同吗?

    [回复]

    柳城 回复:

    一时想不到.. 如果要这么办的话, 那得要多少个description啊. 不是好的办法, 一般都是屏蔽http://liucheng.name/page/3 page页的收录. 这才是正道.

    [回复]

  28. 泽弈 Says:

    我在本地测试后,看网页源代码,只有主页标题,没有关键词和描述部分内容,请教怎么回事呢?
    我用的是最新版中文wp。
    谢谢!

    [回复]

  29. php免费空间 Says:

    Description、Keywords和Title(完整版)进行修改后,主页、分类、tag页、搜索、page页都达到要求,但是single页的Description的截子有问题,只能截取文章第一行!!请问如何解决?

    [回复]

    柳城 回复:

    有空再出详细的。 [抱拳]

    [回复]

    php免费空间 回复:

    还有个问题,要在Description出现当前id文章的tag,那么应该如何加?

    [回复]

    柳城 回复:

    上面的代码中也有提到tag的啊。你把得出来的结果加到desc里就是了。

    下面是个参考,参考哦 :)


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

    [回复]

  30. emsky Says:

    博主,你的这个方法很实用啊。谢谢了。
    但还有一个小问题,就是分类页面上没有加入关键词和描述。看能否继续改进下。
    再次感谢你的付出。

    [回复]

  31. 无聊 Says:

    没有加上Keywords 和 Description , 自己blog随意点

    [回复]

    柳城 回复:

    正确。我现在也不喜欢改了。

    [回复]

  32. 老耿 Says:

    [抱拳] 要是加一个keywords的自定义域用于加一些关键词,要怎么改呢?

    [回复]

    柳城 回复:

    自定义域 ~ 这个我也不知呢。

    [回复]

    老耿 回复:

    我刚才把这关键词改成自定义域了,要是用标签的话那标签又多又乱,就失去标签应该有的作用了。

    [回复]

    柳城 回复:

    怎么会,不要太计较就是了。 不过最近越来越发现关键词在搜索引擎中起不了什么作用。 [大兵]

    [回复]

    老耿 回复:

    如果要是一直用标签做关键词的话,标签会越来越多,那样就看起来很乱了,我觉得标签应该是给访客看的,还是简洁一点好,呵呵 。

    [回复]

  33. php免费空间 Says:

    ###这里是Page页。同上。多个页面的话自行添加就是###
    elseif ( is_page(2,14) ){

    我要给多个页面设置同样的keywords和description,我写成(2,14)这种形式,结果只有id=2的页面正常,而id=14的不正常,请问应该如何同时写几个分类

    [回复]

    柳城 回复:


    is_page(2) || is_page(14)

    [回复]

  34. 哈尔滨seo Says:

    这篇文章太棒了,我就是按照这个方法把我的哈尔滨seo进行优化,效果很好,感谢楼主

    [回复]

  35. muxiaku Says:

    我只能说很难.SEO....

    [回复]

  36. blankcn Says:

    其他都正常,为什么就是搜索的显示乱码
    页面源文件:������� | Blankcn's Blog
    搜索结果这几个字显示不出?

    [回复]

    柳城 回复:

    注意字体编码。另存为utf-8.
    这问题已说了N遍

    [回复]

  37. 围鱼啦_紫雨老师 Says:

    all in one seo 非死不可吗?

    我怎么用这好像没事,为什么非杀了他不可?

    [回复]

    柳城 回复:

    其实我也不赞同杀了他的。该用就用。

    [回复]

  38. raceman Says:

    加上了,很不错 只是统计失去作用了 能解决吗
    看你 用的也是1.5的统计 怎么就可以啊
    谢谢 相助 [握手]

    [回复]

    柳城 回复:

    这跟统计有啥关系?~ [疑问]

    [回复]

  39. 反馈 Says:

    上面很多人反映使用后页面上方出现空白的原因:
    文章页大描述标签调用的是文章的摘要,而摘要中有html代码,作者应该过滤掉这些代码,只保留文本,描述标签中式不能有html代码的

    [回复]

    柳城 回复:

    空白只是编码问题 。应该是有过滤的吧

    [回复]

  40. skyoy Says:

    description截取的第一段文字,由于中文段落的首行一般都会空2格,那样的话description描述后面也有2格空白哦。请问这个怎么解决呢?

    [回复]

    柳城 回复:

    这东西好久没理了。加个trim函数吧

    [回复]

    skyoy 回复:

    不太会这些函数,请问具体怎么加呢?谢谢 上面的语句中php echo trim($description) 好像就是加了trim函数的吧。 [流泪]

    [回复]

    柳城 回复:

    那加上就没办法了。一两个空格。这么在意干嘛。

    [回复]

  41. maxsay Says:

    你好,看了你的文章受益匪浅,有一个问题想问一下,假如我不停的更新文章,那么在完整版中就要不停地增加关键词和描述,这样的话desc.php文件就会变得很大,这样的情况该去怎样解决?

    [回复]

  42. maxsay Says:

    你好,看了你的文章受益匪浅,有一个问题想问一下,假如我不停的更新文章,那么在完整版中就要不停地增加关键词和描述,这样的话desc.php文件就会变得很大,这样的情况该去怎样解决?

    补充一下,我说的是不同的关键词和描述。

    [回复]

    柳城 回复:

    那是你没搞明白上面的代码吧~~
    发再多的文章上面的代码也是不变的了。

    [回复]

  43. maxsay Says:

    您好,使用了一段时间了感觉非常不错,但是有一个问题想请教您:
    $keywords = "";
    $tags = wp_get_post_tags($post->ID);
    foreach ($tags as $tag ) {
    $keywords = $keywords . $tag->name . ",";
    这一段的意思应该是将tag标签设置为keywords,但是假如我不希望使用tag作为关键词,想使用自定义域的方式该怎样实现?
    在载入之前,我使用
    <meta name=”keywords” content=”ID, $key, true); ?>” />是可以自定义域的,但是现在好像没有作用了,请问您一下,像这样的情况如何去解决?诚盼您的答复!

    [回复]

  44. maxsay Says:

    您好,使用了一段时间了感觉非常不错,但是有一个问题想请教您:
    $keywords = "";
    $tags = wp_get_post_tags($post->ID);
    foreach ($tags as $tag ) {
    $keywords = $keywords . $tag->name . ",";
    这一段的意思应该是将tag标签设置为keywords,但是假如我不希望使用tag作为关键词,想使用自定义域的方式该怎样实现?
    在载入之前,我使用
    ” />是可以自定义域的,但是现在好像没有作用了,请问您一下,像这样的情况如何去解决?诚盼您的答复!

    [回复]

  45. 三九腋露官方网站 Says:

    非常感谢,已经成功嘎嘎

    [回复]

  46. 肥肥鸭 Says:

    哇,貌似楼猪很强大呢,捏一下 [亲亲]

    [回复]

  47. 飞飞 Says:

    博主,能不能教教我,如何去掉自动添加tags为keywords。因为用自定义字段解决keywords更加适合我。但是这个描述还是很适合我的,所以只是去掉keywords这一段,谢谢啦!!!!

    [回复]

    柳城 回复:

    后台关闭啊

    [回复]

  48. Xshagua Says:

    按此法优化了,这样就把一些插件省掉了! [强]

    [回复]

5 Trackbacks For This Post

  1. Wordpress中自动生成Title、Keywords和Description « 财务自由之路 Says:

    [...] http://liucheng.name/1127/ [...]

  2. Wordpress中自动生成Title、Keywords和Description | maishenmo网购之家: 网上购物, 买什么, 小i帮忙 Says:

    [...] http://liucheng.name/1127/ [...]

  3. 修改了创业博客的description及keyword | 创业博客_右键seo Says:

    [...] http://liucheng.name/1127/ [...]

  4. WordPress不用All in One SEO插件也可实现同样的功能 Says:

    [...] 本文详细出处参考:http://liucheng.name/1127/ « 公布两个链接骗子 [...]

  5. WordPress终极seo优化,分类页添加keywords和description | 暮色森林 Says:

    [...] WordPress文章页的keywords和description的优化不必多说了,all in one seo一个插件就能解决,貌似也能解决今天说的。但是WordPress的乐趣就在不停的折腾,其实就是在折腾自己,今天就说下免插件实现分类页添加keywords和description的方法,借鉴的是柳城大神的思路,不过让我把改的面目全非了。 [...]

Leave a Reply

广告招租

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