西门的后花园

一个热爱网络的年轻人的博客

WordPress博客添加首页、文章页、页面、分类页、标签页的关键字和描述高级版

上周发了一篇《WordPress博客添加首页、文章页、页面、分类页、标签页的关键字和描述进阶版》,很多朋友留言说自己加太麻烦了,直接系统自己截取。好吧,我实在佩服大家怎么能这么懒呢?如果你确实很懒,下面我会发关键字自动用标签,描述自动截取文章开头100字的方法。如果你是搞SEO的,我还是推荐你手动加关键字和描述。

好了,大家打开上面那篇文章,第一、二步照做,第三步不同,看下面:

三、用编辑器打开header.php,在<head></head>之间任意地方(一般加到</title>下面比较美观)加上如下代码:

<?php
//如果是首页
if (is_home()){
	$keywords = "你网站首页的关键字,自己修改吧";
	$description = "你网站首页的描述,自己修改吧";
}
//如果是文章页
elseif (is_single()){
	//默认使用文章页添加关键字
	$keywords = get_post_meta($post->ID, "keywords", true);
	//如果为空,使用标签作为关键字
	if($keywords == ""){
		$tags = wp_get_post_tags($post->ID);
		foreach ($tags as $tag){
			$keywords = $keywords.$tag->name.",";
		}
		//去掉最后一个,
		$keywords = rtrim($keywords, ', ');
	}
	//默认使用文章页添加描述
	$description = get_post_meta($post->ID, "description", true);
	//如果为空,使用文章前100个字作为描述
	if($description == ""){
		if($post->post_excerpt){
			$description = $post->post_excerpt;
		}else{
			$description = mb_strimwidth(strip_tags(apply_filters('the_content',$post->post_content)),0,200);
		}
	}
}
//如果是页面,使用页面添加的关键字和描述
elseif (is_page()){
	$keywords = get_post_meta($post->ID, "keywords", true);
	$description = get_post_meta($post->ID, "description", true);
}
//如果是分类页,使用分类名作为关键字,分类描述作为描述
elseif (is_category()){
	$keywords = single_cat_title('', false);
	$description = category_description();
}
//如果是标签页,使用标签名作为关键字,标签描述作为描述
elseif (is_tag()){
	$keywords = single_tag_title('', false);
	$description = tag_description();
}
//去掉两段空格
$keywords = trim(strip_tags($keywords));
$description = trim(strip_tags($description));
?>
<meta name="keywords" content="<?php echo $keywords; ?>" />
<meta name="description" content="<?php echo $description; ?>" />

这次我把主要的注释都加上了,我想大家应该看得懂吧?

主要是文章页那里多了几个判断。默认使用文章页添加关键字,如果为空,使用标签作为关键字。默认使用文章页添加描述,如果为空,使用摘要内容,如果摘要为空,使用文章前100个字作为描述。

如果你看到了这里,那么我相信一定会有人觉得又要下载PHP文件,又要改functions.php好麻烦啊!而且也不愿意手动加这些信息,都用自动的。好吧,下面公布最懒的办法。

这个办法只需要修改一次代码,用编辑器打开header.php,在<head></head>之间任意地方(一般加到<title>下面比较美观)加上如下代码:

<?php
if (is_home()){
	$keywords = "你网站首页的关键字,自己修改吧";
	$description = "你网站首页的描述,自己修改吧";
}
elseif (is_single()){
	$tags = wp_get_post_tags($post->ID);
	foreach ($tags as $tag){
		$keywords = $keywords.$tag->name.",";
	}
	$keywords = rtrim($keywords, ', ');
	if($post->post_excerpt){
		$description = $post->post_excerpt;
	}else{
		$description = mb_strimwidth(strip_tags(apply_filters('the_content',$post->post_content)),0,200);
	}
}
elseif (is_page()){
	$keywords = get_post_meta($post->ID, "keywords", true);
	$description = get_post_meta($post->ID, "description", true);
}
elseif (is_category()){
	$keywords = single_cat_title('', false);
	$description = category_description();
}
elseif (is_tag()){
	$keywords = single_tag_title('', false);
	$description = tag_description();
}
$keywords = trim(strip_tags($keywords));
$description = trim(strip_tags($description));
?>
<meta name="keywords" content="<?php echo $keywords; ?>" />
<meta name="description" content="<?php echo $description; ?>" />

OK,5个页面的关键字和描述,只要设置一次,以后全部都是自动的。刚刚准备把这个方法写成一个插件,结果看了半天插件教程,依然搞不定。希望之后能写个简单的插件,让懒人更懒一点吧。

20120701已经把后面这种懒人方法写成了一个插件,还在考虑是否集成上面的那种手动添加方法。希望大家给点意见,是全自动获取好(下面这种方法),还是可以手动添加,如果手动没有添加,就自动获取(上面那种方法)。我会参考留言意见,大概下周末发表这个插件。

评论列表

  1. 😆 我一直用的这个~~你还少去乱码的代码~~

  2. 😈 不错哦,我就是用的这种方法,当初看的柳城的文章。

  3. 更新了,呵呵!! ❗

  4. 还有最终版吗?期待最终版……

    • 没法写最终版吧,总有高人比我厉害的。
      或许最后只会弄个简单的插件给新手不想折腾代码的人吧。

  5. 呵呵 继续折腾啊

  6. 我也是这么整滴。

  7. 还会集成插件 高手 膜拜

  8. 我现在这个主题貌似就是你的这个方法,但是我不喜欢自动提取的,所以用你前面那篇文章的方法了,几百篇文章,我要慢慢修改过去了…..累人的活啊

  9. 看不懂啊 哇哦

  10. 代码好多,我有点晕了

  11. 嘿嘿,这个对SE0好。刚好可以用来做我的模板用。谢谢了。

  12. 原来是这个插件~

  13. 新手不懂看代码啊, 😥

  14. 小心折腾上瘾哦。

  15. 观海

    西门,我用的是最懒的方法,用的是wordpress 3.4.1版本,模板是默认的那个模板Twenty Eleven,我在这个Twenty Eleven的header.php文件中,加入了你这篇文章中的“修改一次代码”中的代码,但是查看网页源文件的时候,我发现我的那些中文文字描述,都是乱码。这是怎么回事?

  16. 虽不懂。。。但觉屌 😎

  17. 在 文章页面 title后面如何添加 keywords …

    例如:文章标题 – 文章标签 | 网站名称

    • 这个很简单吧,找到header.php里的title便签,里面加标签函数即可。标签的函数上面代码里也有啊!

  18. 新折腾了个主题,决定有用这个了,哈哈!

  19. 能帮我看看我的博客吗?首页添加汉字的描述就是乱码,如果用记事本另存为编码为utf-8的话,可以显示正常,但是问题出来了,其他页面都是靠左对齐的,能帮助我吗 谢谢。

  20. 看不懂的人那么多,对于我们这些小菜,直接用all in one,和wpkeylink就行了。是在不行就是在每篇文章前面加一个手动的第四款背心.哎.但是还是要膜拜代码大神么一下.

  21. 这次的代码很不错,比上次的有进步。

  22. 😛 这个很全啊,收藏了~

  23. 如此看来移植typecho,也是不容放缓之计

  24. 坑爹的代码 啊

  25. 我是被强大的域名吸引过来的!!!

  26. 看的懂,看的懂。

  27. 恩,这个挺好的

  28. 很不错的方法,看来我的博客可以抛弃 All in one seo pack 这款插件了!

  29. 建议你这里再弄一下,很多标签都是没有描述的,建议把没有描述的标签弄成自动抓取140字吧

  30. 这个我采用的是手动添加法 虽然累些 但是很有效果,对搜索引擎很友好

  31. 楼主很强大,支持 😛

  32. 还是进阶篇那个给力、、自动的难免不太准确、、

  33. 悲剧了,高兴了半天、、结果跟主题的自定义模块冲突、、还是得用自动、、

  34. 你的这段代码很有意思啊,自己写的代码,内容页一直没法搞定,借鉴了下你的代码,完善了我内容页的SEO代码!不错,谢谢了!

  35. Suman

    插件哪里下载呀

  36. 不想用tags作为关键字,请问如何更改为手动设置呢?

  37. dsajk

    我是默认的模版,怎么添加首页和内页的关键字及描述呢??我打开header.php是这样的
    跪求,
    <?php
    /**
    * The Header for our theme.
    *
    * Displays all of the <head> section and everything up till <div id="main">
    *
    * @package WordPress
    * @subpackage Twenty_Ten
    * @since Twenty Ten 1.0
    */
    ?><!DOCTYPE html>
    <html <?php language_attributes(); ?>>
    <head>
    <meta charset="<?php bloginfo( 'charset' ); ?>" />
    <title><?php
    /*
    * Print the <title> tag based on what is being viewed.
    */
    global $page, $paged;

    wp_title( '|', true, 'right' );

    // Add the blog name.
    bloginfo( 'name' );

    // Add the blog description for the home/front page.
    $site_description = get_bloginfo( 'description', 'display' );
    if ( $site_description && ( is_home() || is_front_page() ) )
    echo " | $site_description";

    // Add a page number if necessary:
    if ( $paged >= 2 || $page >= 2 )
    echo ' | ' . sprintf( __( 'Page %s', 'twentyten' ), max( $paged, $page ) );

    ?></title>

  38. 减肥

    楼主的代码就是我要找的,太谢谢了,不错,这样省下不少心了

  39. 减肥

    楼主加一个分享代码在文章里面,方便我们转载到QQ空间或者其他的博客上面,省的复制了

  40. 终于找到了一个完美的。网上流行的那个版本,加关键词之后会多一个英文的“,”,你这个加入了判断。非常OK~感谢啊

  41. 亲 if($description == ""){
    if($post->post_excerpt){
    $description = $post->post_excerpt;
    }else{
    $description = mb_strimwidth(strip_tags(apply_filters('the_content',$post->post_content)),0,200);
    }
    }
    }
    判断写的有问题哦。

  42. 任漂零

    貌似page页面的描述和关键词不行吧?

  43. 找遍了整个互联网,只有博主总结的好啊 谢谢了 已经用上了 呵呵

  44. 荣顺达

    我用了你的这个办法,但新建的页面,没有关键字和描述。该如何解决,因为我的首页设置成一个页面。

    • 到“页面”编辑页,右上角有“显示选项”,打开后,把“自定义栏目”勾选上,就可以输入关键字和描述了。

  45. 荣顺达

    把“自定义栏目”勾选上,没有可以输入关键字和描述的地方。 ❓

  46. 石华明

    我今天刚弄好的wordpress ,我看到很多人在文章里添加广告的方法,我用的3.8.1版本 在文章页面的single.php文件找不到<?php the_content(); ?>是什么原因啊?在后台看不到,用DW在文件里也找不到!

    • 大概是你主题的作者比较高级,不是直接在single.php里加的。去找找有没有loop-single.php,如果有这个文件,里面应该有<?php the_content(); ?>

  47. 我用的方法略复杂了,包括验证码,超连接限制,关键词屏蔽,拒绝无referer来源的Spam机器人垃圾评论,IP地址拉黑……

  48. liut

    楼主邮箱或者qq是多少啊,诚心请教,能不能把title也写进去,比如分类页:自带的标题格式是:网站名+分类名。我想实现标题自定义,比如好看的热门的动作电影,而不只是动作电影+分类,这样太局限了

  49. 直接粘贴到我的头部文件中吗

  50. 我的头部文件没有title我晕

  51. 有没有QQ我加你,我设置了但是有两个关键词和标签

  52. ❓ 我怎么一加文章页就空白打不开,帮忙分析下什么原因呢?

  53. home页判断“ if (is_home() ”宜增加首页选项“ is_home() || is_front_page()”,很多国外主题会使用单独的页面模板做首页的。

  54. 我复制了上面的代码了,可是内容页和文章页的描述和关键词是空
    的,该怎么添加啊

    • 默认使用文章页添加关键字,如果为空,使用标签作为关键字。默认使用文章页添加描述,如果为空,使用摘要内容,如果摘要为空,使用文章前100个字作为描述。
      请问你是否没有设置关键字或者标签是标签什么的?

  55. xiaji

    代码版的首页也不显示关键词跟描述,其他都正常~

西门进行回复 取消回复

分类目录