聊聊我是怎么处理SEO关键字和描述的
我的语幕一共就那么几个板块,首页、搜索结果页、分类列表、标签列表、文章详情和页面详情,看我博客的人也应该清楚我是个喜欢简洁和不爱折腾的人,你叫我安装插件来处理那是不太可能的并且我好不容易给自己做了个自认为简洁的主题,我也不会让它脱离简洁这个目标,所以我只能通过自己来处理SEO关键字和描述。
思路
我把SEO关键字和描述分了四块分别是默认、详情、列表和搜索结果来进行处理。
默认:没有特定关键字或描述的一律归为默认。
详情:文章和页面是有详情页面的,所以这一块归类到详情里面来处理。
列表:分类列表、标签列表。
搜索结果:无需多说,就是字面意思。
SEO关键字
- 文章详情页调用文章的标签。
- 页面详情(要个毛的特定关键字)直接采用默认关键字。
- 分类列表调用分类的专属SEO关键字。
- 标签列表?标签自己不就是关键字吗?
- 搜索结果直接使用搜索的关键字作为SEO关键字好了。
- 首页当然也是默认。
SEO描述
- 文章详情页emmmmmmm,直接取文章前面200个字符好了。
- 页面详情,一样啦,取前面200个字符。
- 分类列表。。。。我记得添加分类的时候WordPress是自带描述这么一个输入框的吧?
- 标签列表那就默认描述吧。
- 搜索结果也默认描述。
- 首页当然也一样默认描述咯。
处理过程
1、分类WordPress自带了描述输入框,但没有关键字输入框,我们先给它加上关键字输入框,在你主题的functions.php添加如下代码。
//分类TDK
$category_meta = array(
array("name" => "categorykws","std" => "","title" => __('SEO关键词', 'haoui').':'));
function yumu_add_category_field(){
global $category_meta;
foreach($category_meta as $meta_box) {
echo '<div class="form-field"><label for="'.$meta_box['name'].'">'.$meta_box['title'].'</label><input name="'.$meta_box['name'].'" id="'.$meta_box['name'].'" type="text" value="" size="40">'.'</div>';
}
}
function yumu_edit_category_field($tag){
global $category_meta;
foreach($category_meta as $meta_box) {
echo '<tr class="form-field"><th scope="row"><label for="'.$meta_box['name'].'">'.$meta_box['title'].'</label></th><td><input name="'.$meta_box['name'].'" id="'.$meta_box['name'].'" type="text" value="';
echo get_option(''.$meta_box['name'].'-'.$tag->term_id).'" size="40"/>'.'</td></tr>';
}
}
function yumu_category_save($term_id){
global $category_meta;
foreach($category_meta as $meta_box) {
$data = $_POST[$meta_box['name']];
if(isset($data)){
if(!current_user_can('manage_categories')){
return $term_id;
}
$key = $meta_box['name'].'-'.$term_id;
update_option( $key, $data );
}
}
}
add_action('category_add_form_fields','yumu_add_category_field',10,2);
add_action('category_edit_form_fields','yumu_edit_category_field',10,2);
add_action('created_category','yumu_category_save',10,1);
add_action('edited_category','yumu_category_save',10,1);
加好后去后台分类设置页刷新看看,是不是和下面图片一样?

记住,为保障效果关键字与关键字之间用英文输入法的逗号隔开。
2、然后我们来调用关键字,同样在你主题的functions.php添加如下代码。
//SEO关键字
function yumu_keywords_seo(){
$keywords = '';
if(is_singular()){
global $post, $posts;
$gettags = get_the_tags($post->ID);
if ($gettags) {
foreach ($gettags as $tag) {
$posttag[] = $tag->name;
}
$keywords = implode( ',', $posttag );
}
}elseif(is_category()){
$keywords = get_option('categorykws-'.get_query_var('cat'));
}elseif(is_tag()){
$keywords = single_tag_title('',false);
}elseif(is_home()){
$keywords = '这里填写默认关键字,首页里面的关键字就来自此处,记住多个关键字用英文输入法的逗号隔开';
}
if(empty($keywords)){
$keywords = '这也是默认关键字,可以和首页设置的不一样,随便你啦,你要一样就一样吧';
}
return $keywords;
}
然后添加描述,又。。又。。。又在你主题的functions.php添加代码。
//SEO描述
function yumu_description_seo(){
$category_id = '';
$description = '';
if(is_singular()){
$description = get_the_excerpt ($post=null );
}elseif(is_category()){
$description = str_replace(array("<p>","","</p>", "\r", "\n"),"",category_description( $category_id ));
}else{
$description = '默认描述啊';
}
if(empty($description)){
$description = '默认描述啊';
}
return $description;
}
还没完,还要去主题放置SEO关键字和描述的地方调用下,现在是header.php文件,不要搞错了地方。
<meta name='keywords' content='<?php if(is_search()){$keywords = $s;}else{$keywords = yumu_keywords_seo();}echo $keywords;?>'/>
<meta name='description' content='<?php if(is_search()){$description = $s;}else{$description = yumu_description_seo();}echo $description;?>'/>
把上面的代码放置在header.php文件的<head>和</head>中间,通常放置在标题下面,看起来会更美观,当然不要太死板,也许你的主题不一定是header.php文件,我只是拿自己在使用的主题举例,只要保证是在<head>和</head>中间即可。
什么?什么?标题?标题应该所有的主题都有集成处理吧。