给wp首页,目录,page页及文章设置不同关键词和描述. WordPress程序默认的网站描述和关键词有时候并不能满足我们做优化的需求,而且像栏目和page页面时是没有keywords和description的,就算是文章页也是自动截取前220个字的摘要作为网站描述,关键词则是采用文章页的tag作为keyword。这中情况并不友好,不同文章相同的tag那么关键词也是相同的了。
所以,网上有人问怎么给WordPress栏目页设置关键词和描述,也有人问怎么给WordPress的page页面设置关键词,还有人问在怎么给WordPress网站系统的tag页添加关键词和描述等,所以这里就通过《给wp首页,目录,page页及文章设置不同关键词和描述》一文把这些问题集合在一起,统一做个介绍。
1、先了解怎么样添加自定义栏目
在编辑文字或者是page独立页面时可以再博客后套右上角点击显示选项—>自定义栏目;然后,在文字底部分别输入新栏目名称为seo_keywords、seo_description和值为 关键词、描述
2、非插件自定义页面关键词和描述
打开你的博客header.php,在<head > </head>之间添加如下代码来实现非插件为wp首页、目录、page页及每篇文章设置不同关键词和描述,其中//后面为代码注释,在复制到header.php时可以将其删掉。
[cc lang="php"]
ID, "seo_description", true);
$seo_description2 = str_replace("\n","",mb_strimwidth(strip_tags($post->post_content), 0, 140, "...", 'utf-8')); //如果是文章页则首先将文章的自定义栏目名称为seo_description的值作为描述(后台写文章时自己添加自定义,后文会做介绍);若文章没有自定义栏目则自动调用文章前140字作为描述.
$seo_description = $seo_description1 ? $seo_description1 : $seo_description2;
$seo_keywords = get_post_meta($post->ID, "seo_keywords", true);
// 显示自定义字段keywords的值作为页面关键词
if($seo_keywords == '') {
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$seo_keywords = $seo_keywords . $tag->name . ", ";
}
$seo_keywords = rtrim($seo_keywords, ', ');
}
}
// 如果页面没有自定义字段,则调用文章tag作为文章关键词
elseif (is_category()) {
// 判断是否为文章分类目录,是则执行如下操作
$seo_description = category_description();
$seo_keywords = single_cat_title('', false);
}
// 分别以分类描述和分类标题作为description和keywords,这个可以自己的后台—文章>—>分类目录 里面设置.
elseif (is_tag()){
// 判断是否为标签页,若是则执行如下操作
$seo_description = tag_description();
$seo_keywords = single_tag_title('', false);
}
// 分别以tag的描述作为description和tag本身作为自己的keyword,这个页可以自己的后台—文章>—>标签 里面设置.
elseif (is_page()) {
$seo_description1 = get_post_meta($post->ID, "seo_description", true);
$seo_description2 = str_replace("\n","",mb_strimwidth(strip_tags($post->post_content), 0, 140, "...", 'utf-8'));
// 判断是否为page独立页面,若是则调用自定义字段seo_description的值为描述,否则直接调用page页的前140个字作为描述
$seo_description = $seo_description1 ? $seo_description1 : $seo_description2;
$seo_keywords = get_post_meta($post->ID, "seo_keywords", true);
if($seo_keywords == '') {
$title = get_the_title($post->ID);
$seo_keywords = $seo_keywords . $title;
//查询seo_keywords值,若为空,即没有添加自定义字段内容时,给seo_keywords字段赋值为该页面的title,以该页面的title作为该page的keyword
}
}
$seo_description = trim(strip_tags($seo_description));
$seo_keywords = trim(strip_tags($seo_keywords));
//去掉字符串左右空格的函数,直接替换对应的$seo_keywords和$seo_description即可,详细内容见php参考手册中的trim()函数用法.
?>
[/cc]
3、解决可能出现的乱码问题
WordPress板子一般都是utf-8字符集的,一个英文对utf-8字符集来说是8位,而一个中文汉字则为24位。在函数截取字符长度时只会按照多少字节去截取,所在在php用substr截取中文时经常会出现乱码,如有的地方恰好完全显示整个汉字还好,若是截取处事一个汉字的三分之一或者三分之二,那汉字就显示不全了。函数不能够智能地判断堵截一个字符或者少截一个字符来不全显示,于是,我们就等对函数做相应的处理,把下面代码添加到你的主题的functions.php中即可解决乱码问题。
[cc lang="php"]
// 解决utf8截取乱码问题
function csubstr($string, $beginIndex, $length){
if(strlen($string) < $length){ return substr($string, $beginIndex); } $char = ord($string[$beginIndex + $length - 1]); if($char >= 224 && $char <= 239){ $str = substr($string, $beginIndex, $length - 1); return $str; } $char = ord($string[$beginIndex + $length - 2]); if($char >= 224 && $char <= 239){
$str = substr($string, $beginIndex, $length - 2);
return $str;
}
return substr($string, $beginIndex, $length);
}
[/cc]
4、利用插件给WP页面自定义关键词和描述
说起插件,很多人都不陌生的就是All in One SEO,专业的seo插件,可以去后天搜索安装。还有另一款是WordPress SEO插件,这个插件功能比较全面,推荐使用,它不但可与自定义每个页面的title、keywords和description,而且还能去掉category以及为分类目录和tag 的url后添加 / ,同时能生成谷歌地图。
本文小结:
WordPress插件非常多,这给利用wp建博客的同学带来了方便,但是插件始终会影响到博客的速度,所以,安装多了本人认为不是好事。这里利用WordPress的强大自定义字段功能实现了给wp首页,目录,page页及文章设置不同关键词和描述。若您有更好的方法,也可不妨与大家分享一下。
2015 年 8 月 18 日 上午 9:08 4F
路过看一下!
2015 年 8 月 15 日 下午 5:59 3F
我的elseif (is_page()){}一直不起作用。。。。。
2014 年 10 月 14 日 上午 9:07 2F
只设置了首页和内容的关键词,其它的顺其自然了。
来自外部的引用: 1