昨天写了些自己所用的 WordPress 插件,稍微提及了一下为什么自己没有使用 All in One SEO Pack 这个插件。那不用插件还怎么 SEO 呢?我们今天就来解决这个问题。用代码来完美替代 All in One SEO 插件。
1、Title 的优化
在主题的 Header.php 中修改 Title 标签为
1 | <title><?php if (is_home() ) {?>FORECE博客|关注互联网创业和IT技术<?php } else {?><?php wp_title(”);?> |FORECE博客<?php } ?></title> |
2、关键字与描述
Keywords 与 Description 在SEO中是很重要的元素,所以也不能漏掉。这里有两种修改方法。
用 Tag 与 摘要自动填写 Keywords 与 Description
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?php ##定义一个函数.解决截取中文乱码的问题 if (!function_exists('utf8Substr')) { 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); } } if ( is_home() ){ $description = "FORECE的博客是一个关注互联网和IT技术的博客,主要提供本人的国外生活日志,互联网资讯,IT技术和网络赚钱等信息"; $keywords = "FORECE BLOG,日志,博客,Windowx,IT,技术,系统,加拿大,蒙特利尔,生活,网赚"; } elseif ( is_single() ){ if ($post->post_excerpt) { $description = $post->post_excerpt; } else { if(preg_match('/<p>(.*)<\/p>/iU',trim(strip_tags($post->post_content,"<p>")),$result)){ $post_content = $result['1']; } else { $post_content_r = explode("\n",trim(strip_tags($post->post_content))); $post_content = $post_content_r['0']; } $description = utf8Substr($post_content,0,220); } $keywords = ""; $tags = wp_get_post_tags($post->ID); foreach ($tags as $tag ) { $keywords = $keywords . $tag->name . ","; } } ?> <?php echo "\n"; ?> <meta name="description" content="<?php echo trim($description); ?>" /> <meta name="keywords" content="<?php echo rtrim($keywords,','); ?>" /> |
这个方法相对简单,如果给日志添加了摘要就把摘要做为 Description,如果没有设置摘要,则把文章标题作为Description,而标签直接作为 Keywords。
再放上另外一种方法:(不过这种方法对于特殊符号会自动转义变成乱码,比如 -,#之类的符号)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?if (is_home()){ $description = "FORECE的博客是一个关注互联网和IT技术的博客,主要提供本人的国外生活日志,互联网资讯,IT技术和网络赚钱等信息"; $keywords = "FORECE 博客,日志,国外生活,加拿大,蒙特利尔,Windows,IT,技术,互联网,网赚,WordPress"; } elseif (is_single()){ if ($post->post_excerpt) { $description = $post->post_excerpt; } else { $description = mb_strimwidth(strip_tags(apply_filters('the_content',$post->post_content)),0,220); } $keywords = ""; $tags = wp_get_post_tags($post->ID); foreach ($tags as $tag ) { $keywords = $keywords . $tag->name . ", "; } } ?> <meta name="keywords" content="<?=$keywords?>" /> <meta name="description" content="<?=$description?>" /> |
网上有些文章提到的用如下代码截断文章办法其实不行,对于中文来说会产生乱码,甚至导致整个页面乱码:
1 |
如果换成
1 |
就没有问题了