以前我没有花太多时间做搜索引擎优化, 搜索引擎收录效果不是很好. 去年二月我终于为博客搞了一下 SEO, 写下这个文章. 一年半以来陆续进行了更多 SEO 优化, 博客文章写得不多了, 流量却有增无减, 网站也重回 PageRank 7, 效果相当不错的. 这次我根据自己的 WordPress SEO 方案更新了本文的内容.
优化博客副标题
副标题 (slogan), WordPress 中称为 tagline. 它与博客标题不一样, 可能会承载一些描述博客的文字, 优化一下可以利用起来. 如我的副标题是 "mg12's Blog - Just Another WordPress Blog", 其中的 WordPress Blog 被我设置为 h1. 因为我想告诉爬虫, 这是一个关于 WordPress 的博客.
区分显示页面标题
页面的标题不要包含博客名称. WordPress 标题一般会用到 bloginfo('name') 和 wp_title() 两部分, 前者是博客名称, 后者是文章标题 (如果标题不存在则不显示). 经典主题和默认主题输出标题用的代码如下.
<title><?php wp_title('«', true, 'right'); ?> <?php bloginfo('name'); ?></title>
输出的标题结构是 "文章标题 » 博客名称".
除非你的标题和文章内容相关度比较高, 否则这样的标题对 SEO 显然是不好的. 标题是爬虫认为重要的内容之一, 如果标题中包含了与文章内容无关的信息, 多少会对该页面有所影响.
那应该怎么弄呢? 我们可以对不同类型的页面进行区分, 我的实现代码如下.
<title><?php // 如果是首页和文章列表页面, 显示博客标题 if(is_front_page() || is_home()) { bloginfo('name'); // 如果是文章详细页面和独立页面, 显示文章标题 } else if(is_single() || is_page()) { wp_title(''); // 如果是类目页面, 显示类目表述 } else if(is_category()) { printf('%1$s 类目的文章存档', single_cat_title('', false)); // 如果是搜索页面, 显示搜索表述 } else if(is_search()) { printf('%1$s 的搜索结果', wp_specialchars($s, 1)); // 如果是标签页面, 显示标签表述 } else if(is_tag()) { printf('%1$s 标签的文章存档', single_tag_title('', false)); // 如果是日期页面, 显示日期范围描述 } else if(is_date()) { $title = ''; if(is_day()) { $title = get_the_time('Y年n月j日'); } else if(is_year()) { $title = get_the_time('Y年'); } else { $title = get_the_time('Y年n月'); } printf('%1$s的文章存档', $title); // 其他页面显示博客标题 } else { bloginfo('name'); } ?></title>
Keywords 和 Description
Keywords 为搜索引擎提供网页包含的核心内容, Description 则为搜索引擎提供网页的描述信息. 我发布的主题曾经包括了对 keywords 和 description 的处理, 但因为一些 SEO 插件发生冲突, 在较新的版本中已经去除. 笔者认为 WordPress 的很多所谓 SEO 插件做得并不到位, 对中文博客支持都很差, 自己修改一下效果可能更好.
以下是我对 keywords, description 和页面标题的处理规则, 实现方法可以参考上一段关于页面标题的说明.
文章详细页面的描述一般取文章的前 220 个字符即可, 特别重要的页面和文章可以自定义摘要, 使其信息准确度更高. 如果存在摘要信息则使用摘要, 没有则使用前 220 个字符, 实现代码如下.
<?php if($post->post_excerpt) { $description = $post->post_excerpt; } else { // utf8_trim 方法是为了在截取字符之前对字符串进行转义, 避免出现截取半个汉字的情况 // 参考文档: http://php-utf8.61924.nl/documentation/functions/utf8_trim.html $description = utf8_trim(substr(strip_tags($post->post_content), 0, 220)); } ?>
友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群