用原生代码替换ALL IN ONE SEO

ALL IN ONE SEO插件其实我没怎么用过,一是本身是我个人对博客的seo不大重视,有装没装那插件也没觉得有什么特别的效果;二来弄着一个不痛不痒的插件在那时不时要跟着升级,又怕插件冲突,所以没用多久干脆就被我给删除了,可是如果按wordpress默认的效果,meta又会有残缺,不符合html标准。后来在header文件里用了一段代码来替换,这是后话。

刚才,就刚刚,在wpg论坛看到了一帖子,原来all in one插件还有这么多的用途,另外介绍了一种比我的复杂又简单的代码来替换这个插件。说它复杂是说它的代码比我多,功能也更全面点;说简单呢,是因为它的代码是放在function.php文件中,而不是我那个直接放在header文件中,看起来header文件就干净多了。

下面顺便说说我不知道的all in one seo插件的功能:

ALL IN ONE SEO PACK可以:
1、可以给每篇文章添加独立的关键词;
2、可以给每篇文章添加独立的meta标签;
3、可以给每篇文章添加独立的description;
4、可以给每篇文章添加独立的摘要;
5、可以给每篇文章自动生成摘要;
6、可以防止存档页和首页的内容被抓取,从而防止因重复内容被google降权;

这个是发在wpg上的替换插件的代码,注意:在复制代码前要确保您主题文件中的header.php文件,在《/head》之前要注意有如下代码:

<?php wp_head(); ?>

打开您主题文件中的 functions.php 文件,在文件尾部的 ?> 之前加上如下代码:

// get categories name
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 = ''; //在引号间写入你博客的关键字用,断开
$description = '';//在引号间写入你博客的简单描述,不要过200字
if ($keywords == '') {//如果没写博客的关键字则以分类名为值
$keywords = implode(',',array_unique((array)get_cats_name()));
} 
if ($description == '') {//如果没写博客的描述则以副标题为值
$description = get_option('blogdescription');
} 
}
//输出描述
$output .= '<meta name="description" content="' . $description . '" />' . "\n";
//输出关键字
$output .= '<meta name="keywords" content="' . $keywords . '" />' . "\n";
if (is_single() OR is_page() OR is_home()) ://如果是文章、分页、首页则允许robots
$output .='<meta name="robots" content="index,follow,noarchive" />';
else ://如果不是则不允许
$output .='<meta name="robots" content="noindex,follow,noarchive" />';
endif;
$output .= "\n";
$output .='<meta name="googlebot" content="noarchive" />';
echo "$output\n";
}
add_action('wp_head', 'meta_SEO');//添加meta_SEO函数到头部信息里

另外,同时也介绍一下我用的方法,其实和上面的差不多,只要用下面的代码替换掉你header.php文件中title和meta相关的部分内容就ok了:

        <title><?php if (is_single() || is_page() || is_archive()) { ?><?php wp_title('',true); ?> - <?php } bloginfo('name'); ?> - <?php bloginfo('description'); ?></title>
        <?php if (is_single() || is_page() || is_home() || is_category() ) : ?>
        <meta name="robots" content="index,follow" /><?php else : ?>        <meta name="robots" content="noindex,follow" /><?php endif; ?>

<?php
if (is_home()) {
$description = '';//在引号间写入你博客的简单描述,不要过200字
$keywords = '';//在引号间写入你博客的关键字用,断开
} else if (is_single()) {
$description = $post->post_title;
$keywords = "";
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$keywords = $keywords . $tag->name . ", ";
}
} else if (is_category()) {
$description = category_description();
}
?>
        <meta name="keywords" content="<?=$keywords?>" />
        <meta name="description" content="<?=$description?>" />
        <meta http-equiv="Content-Type" content="<?php bloginfo('charset'); ?>" />
        <meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />

部分内容出自:http://wpg.im/bbs/thread-675-1-1.html

作者: LMS

天行贱,君子自强自息。

标签

《用原生代码替换ALL IN ONE SEO》有11个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注