之前在文章《WordPress自定义栏目运用实例II:添加文章Meta标签(keywords /description)》中给出了手动添加关键词keywords与描述description的方法,但这个方法实在是过于麻烦——每篇文章你要手动一个个添加关键词或描述。写个文章都要这样真不爽啊,有没有方法可以像 all in one seo插件那样自动动关键词keywords与描述description?当然是有滴,本站目前就是使用这个方法。
以下代码实现的是以标签为关键词;以摘要为描述,如果没有填写摘要,那就自动截取文章前200字为描述。代码原创者未知,如果是你原创的,麻烦告知~~
代码实现WordPress自动关键词与描述
以下代码放到你的主题下funtions.php的最后一个 ?>前:
//自动关键词与描述 Devework.com
function get_cats_name() {
$allcats=get_categories();
foreach ($allcats as $category)
{
$keywords[] = $category->cat_name;
}
return $keywords;
}
// utf8 substr
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);
}
// Meta SEO
function meta_SEO() {
global $post;
$output = '';
if (is_single()){//如果是文章页
$keywords = '';
$description = '';
if ($post->post_excerpt) {//如果文章摘要存在就以文章摘要为描述
$description = $post->post_excerpt;
$description = str_replace("\r\n","",$description);
$description = str_replace("\n","",$description);
$description = str_replace("\"","'",$description);
$description .= '...';
} else {//如果文章摘要不存在就截断文章前200字为描述
$description = utf8Substr(strip_tags($post->post_content),0,200);
$description = str_replace("\r\n","",$description);
$description = str_replace("\n","",$description);
$description = str_replace("\"","'",$description);
$description .= '...';
}
$tags = wp_get_post_tags($post->ID);//取文章标签
foreach ($tags as $tag ) {
$keywordarray[] = $tag->name;
}
//以文章标签为关键字
$keywords = implode(',',array_unique((array)$keywordarray));
} else {//如果不是文章页
$keywords = '电脑知识,wordpress,系统操作,网络应用,软件硬件,IT资讯,windows8,windows7'; //在引号间写入你博客的关键字用,断开
$description = '探讨电脑知识,分享网络资源';//在引号间写入你博客的简单描述,不要过200字
}
//输出关键字
$output .= '' . "\n";
$output .= '' . "\n";
//输出描述
echo "$output\n";
}
add_action('wp_head', 'meta_SEO');//添加meta_SEO函数到头部信息里
第43行与第44行的内容需要根据你的网站进行修改。
目前本站devework.com正在使用的代码:
在这个上面代码的基础上,我的代码是这样的:
//自动关键词与描述 Devework.com
function meta_SEO() {
global $post;
$output = '';
if (is_single()){//如果是文章页
$keywords = '';
$description = '';
if ($post->post_excerpt) {//如果文章摘要存在就以文章摘要为描述
$description = $post->post_excerpt;
$description = str_replace("\r\n","",$description);
$description = str_replace("\n","",$description);
$description = str_replace("\"","'",$description);
$description .= '...';
} else {//如果文章摘要不存在就截断文章前200字为描述
$description = utf8Substr(strip_tags($post->post_content),0,200);
$description = str_replace("\r\n","",$description);
$description = str_replace("\n","",$description);
$description = str_replace("\"","'",$description);
$description .= '...';
}
$tags = wp_get_post_tags($post->ID);//取文章标签
foreach ($tags as $tag ) {
$keywordarray[] = $tag->name;
}
//以文章标签为关键字
$keywords = implode(',',array_unique((array)$keywordarray));
} else if (is_category()){
$description = strip_tags(trim(category_description()));
$keywords = single_cat_title('', false);
}else {//如果不是文章页、分类页
$keywords = 'WordPress,wordpress主题,wordpress插件,WordPress开发,代码,前端,建站'; //在引号间写入你博客的关键字用,断开
$description = '一个有关WordPress技巧与前端开发知识的个人博客,以分享、研究探讨WordPress技巧为主要内容,博主乃WordPress极客一枚';//在引号间写入你博客的简单描述,不要过200字
}
//输出关键字
$output .= '' . "\n";
$output .= '' . "\n";
//输出描述
echo "$output";
}
代码还是放到你的主题下funtions.php的最后一个 ?>前。我的话为分类目录添加以“目录名”为关键词,“分类描述”为描述,因为为每一个分类都写了一个描述(在后台文章-分类目录那里可以写)。而且在删除了最后一句add_action('wp_head', 'meta_SEO');//添加meta_SEO函数到头部信息里而直接在header.php文件的下面直接加上下面一句引用:
如果使用这个加上《代码重写WordPress网页标题为“原网页标题|网站名”的形式》的方法的话,基本上你可以不用 All in one seo插件啦~