WordPress SEO一些技巧

我一直都不是一个喜欢搞SEO的人,也很少去做一些SEO的优化,但是去年的时候看到的同事钊钊写的一片文章《Wordpress SEO 技巧》,也就对自己的博客做了一下SEO的优化,没想到效果竟是十分的明显,下图是我的博客在百度收录的一个情况,标红的时间点是我进行SEO优化的时间。

下面我就一些我觉得不错的点给大家分享一下,当然如果你是资深SEO人士,请忽略这篇文章。

区分页面标题

页面的标题不要包含博客名称。 WordPress 标题一般会用到 bloginfo(‘name’) 和 wp_title() 两部分,前者是博客名称,后者是文章标题 (如果标题不存在则不显示)。经典主题和默认主题输出标题用的代码如下。

1
<title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title>`

输出的标题结构是“文章标题 » 博客名称”。

除非你的标题和文章内容相关度比较高,否则这样的标题对 SEO 显然是不好的。标题是爬虫认为重要的内容之一,如果标题中包含了与文章内容无关的信息,多少会对该页面有所影响。

那应该怎么弄呢?我们可以对不同类型的页面进行区分,我的实现代码如下。

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
// 如果是首页和文章列表页面, 显示博客标题
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');
}

Keywords 和 Description

Keywords 为搜索引擎提供网页包含的核心内容,Description 则为搜索引擎提供网页的描述信息。以下是我对 keywords、description 和页面标题的处理规则,实现方法可以参考上一段关于页面标题的说明。

页面类型KeywordsDescriptionTitle
首页 (front page)自定义 keywords自定义 description博客标题
文章列表页面 (index)自定义 keywords自定义 description博客标题
文章详细页面 (single)标签组合摘要或者文章前 220 个字符
(截取文章需要特殊处理全角字符)
文章标题
独立页面 (page)标签组合文章前 220 个字符
(截取文章需要特殊处理全角字符. 独立页面不支持摘要, 有特殊需要可以创建页面模板)
文章标题
类目存档页面类目名称XXX 类目的文章存档XXX 类目的文章存档
搜索页面搜索关键字XXX 的搜索结果XXX 的搜索结果
标签存档页面标签名称XXX 标签的文章存档XXX 标签的文章存档
日期存档页面日期XXX 的文章存档XXX 的文章存档
其他页面留空页面标题博客标题

文章详细页面的描述一般取文章的前 220 个字符即可,特别重要的页面和文章可以自定义摘要,使其信息准确度更高。如果存在摘要信息则使用摘要,没有则使用前 220 个字符,实现代码如下。

1
2
3
4
5
6
7
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));
}

将 Related Post 改为 More posts about XXX

其中 XXX 是关键字及其链接,本人建议使用分类或者标签链接代替。从 SEO 优化的角度来说,因为 Related 一词与几个文章的链接没有任何关系,但标签与之相关度很高。(一般相关文章是通过相似标签来确定的。)从用户体验的角度来说,没有太多人留意你的 Tags 是什么,不如将标签和相关文章结合现实。