主机格调

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

>>原创文章,欢迎转载。转载请注明:转载自西门的后花园,谢谢!
>>原文链接地址:http://ons.me/395.html