SEO技巧之WordPress篇幅
随着搜索引擎大兴, 排列在前的网站引入大量流量. 无论是搜索页面的广告还是查出来的结果, 与搜索者的目标匹配度都比较高 (如果搜索引擎足够智能), 所以通过搜索引擎而来的访客很可能会从网站上得到他想要的东西, 并记住这个网站. 也就是说, 搜索引擎会带来很多有价值的流量, 所以花点时间针对搜索引擎优化一下 WordPress 博客也是值得的. 本文将为你分享一些 WordPress SEO 技巧.
以前我没有花太多时间做搜索引擎优化, 搜索引擎收录效果不是很好. 去年二月我终于为博客搞了一下 SEO, 写下这个文章. 一年半以来陆续进行了更多 SEO 优化, 博客文章写得不多了, 流量却有增无减, 网站也重回 PageRank 7, 效果相当不错的. 这次我根据自己的 WordPress SEO 方案更新了本文的内容.
我不是什么 SEO 高手, 但作为一个搞搜索的前端开发, 或多或少知道一点, 折腾一下算是自我陶醉, 高人请绕道前行.
目录
- 优化博客副标题
- 区分显示页面标题
- Keywords 和 Description
- 定义面包屑
- 使用 h1, h2, h3, strong 标签
- 将 Related Post 改为 More posts about XXX
- 在类目页面和标签页面的添加概要描述
- 与文章无关内容后移
- 消灭内嵌 CSS 和内嵌 JavaScript
- 为 Read more (阅读全文) 链接加上 nofollow
- 不要制作欢迎页面
- 优化文章列表页面
- 使用微格式和微数据
- 向 Google 提交 Sitemap
- 使用 WordPress 内建图库, 并增加图片展示页面
优化博客副标题
副标题 (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 和页面标题的处理规则, 实现方法可以参考上一段关于页面标题的说明.
页面类型 | Keywords | Description | Title |
---|---|---|---|
首页 (front page) | 自定义 keywords | 自定义 description | 博客标题 |
文章列表页面 (index) | 自定义 keywords | 自定义 description | 博客标题 |
文章详细页面 (single) | 标签组合 | 摘要或者文章前 220 个字符 (截取文章需要特殊处理全角字符) |
文章标题 |
独立页面 (page) | 标签组合 | 文章前 220 个字符 (截取文章需要特殊处理全角字符. 独立页面不支持摘要, 有特殊需要可以创建页面模板) |
文章标题 |
类目存档页面 | 类目名称 | 类目描述 | XXX 类目的文章存档 |
搜索页面 | 搜索关键字 | XXX 的搜索结果 | XXX 的搜索结果 |
标签存档页面 | 标签名称 | 标签描述 | XXX 标签的文章存档 |
日期存档页面 | 日期 | XXX 的文章存档 | XXX 的文章存档 |
其他页面 | 留空 | 页面标题 | 博客标题 |
文章详细页面的描述一般取文章的前 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));
}
?>
定义面包屑
面包屑在网站中起到导航的作用, 便于搜索引擎进行索引. 如果一个网站存在面包屑, 在 Google 中看到的是路径索引, 而不是文章链接, 如下图.
我介绍过两款 WordPress 面包屑插件, 分别是 Breadcrumb NavXT 和 Breadcrumbs.
使用 h1, h2, h3, strong 标签
- h1 给予文章标题或者与网站相关性高的推广性内容, 而不是博客标题. 比如: 文章详细页面的 h1 给文章标题, 因为相关度最高.
- h2 是跟文章有关的描述式信息, 如面包屑, 分类和标签.
- h3 是其他类似内容, 如相关文章, 小标题.
- strong 给文章内的关键字. 比如: 本文第一段将 strong 放在 “WordPress SEO 技巧” 这个词组上.
将 Related Post 改为 More posts about XXX
其中 XXX 是关键字及其链接, 本人建议使用分类或者标签链接代替. 从 SEO 优化的角度来说, 因为 Related 一词与几个文章的链接没有任何关系, 但标签与之相关度很高. (一般相关文章是通过相似标签来确定的.) 从用户体验的角度来说, 没有太多人留意你的 Tags 是什么, 不如将标签和相关文章结合现实. 阿里巴巴速卖通的产品详细页面也类似这样做的, 这是我 2009 年操刀搞上去的.
在类目页面和标签页面的添加概要描述
类目页面和标签页面都是用户呈现某写有相似内容的文章, 但是文章肯定有其独有的侧重点, 它们之间也存在一些差异. 在文章列表之前放一段关于某该分类的描述, 告诉爬虫这是一个归类为 XXX 的页面, XXX 指的是什么. 关键位置增加描述信息, 可以让该分类获得更好权值.
WordPress 的分类和标签都是可以添加描述信息的, 在分类页面和标签页面, 我建议在文章列表前先展示描述信息. 一些网站标签超过, 根本没有办法逐个填写, 那么可以套用固定的语句, 加上对应的标签作为其关键字.
与文章无关内容后移
很多爬虫都会爬取全页进行分析, 但还有些爬虫只会分析页面的前 N 个字节的内容. 无论是曝光次数还是分析次序, 显然前面内容的权重相对会比较高. 为了爬虫有效的收录, 应该尽量将无关内容后移. 如 JavaScript 等可以在 DOM ready 时再执行.
这个博客顶部的很多与内容无关的内容其实都是放在页脚的, 如搜索栏, 订阅按钮都是放到页脚, 在 DOM ready 时通过 CSS 或者 JavaScript 重新定位来实现的.
消灭内嵌 CSS 和内嵌 JavaScript
内嵌的 CSS 和 JavaScript 可能带有一些关键字和链接, 而且拖慢页面加载速度, 影响爬虫收录. 尽量将这些写在外部文件中.
避免出现重复内容的文章
WordPress 的评论分页可能导致多个重复内容的文章, 会将某些关键词的权重分散了, 有必要进行 SEO 优化.
关于 WordPress 评论的 SEO, 我已经在《对评论分页的 SEO》写过处理方法. 后来又在《WordPress 评论 SEO》中介绍了另一种处理方法, 该方法不需要借助插件.
为 Read more (阅读全文) 链接加上 nofollow
因为 Read more 链接的路径实际和文章标题相同, 没必要再多加一个文本与页面内容无关的链接. 再者, “Read more…” 在网站出现 N 多次, 可能会干扰爬虫. 后来我专门写了一个文章 Step-by-step 教你如何在 WordPress 进行修改, 请阅读《为 WordPress 的 Read more 加上 nofollow》.
不要制作欢迎页面
很多朋友喜欢把博客首页做成欢迎页面, 但因为大量链接链向首页, 它是最重要的页面, 应该尽量放置与博客相关的内容. 关于网站的首页, 我给两个建议.
- 直接使用文章列表页面作为首页, 如 NeoEase.com. 但对于更新频繁的博客不是太好, 页面因为没有固定的内容, 关键词的信息会波动很大, 建议上面写一段固定文字.
- 制作一个频繁更新内容的文章导航页面, 可以放置特色产品, 热门文章和最新评论等内容.
优化文章列表页面
经过我长期的试验, 切勿在文章列表页面展示所有文章内容. 如果你的文章直接相关度都很高 (比如: 全站都是写 SEO 相关的文章), 建议展现所有文章的摘要. 如果文章之间相关度不高 (比如: 像这个博客一样, 有时写 SEO, 有时写 WordPress, 有时写前端, 有时又招聘), 那么只展示前三个文章的摘要即可.
如果部分文章只显示标题, 可以动态加载文章以方便用户. 详细请参考《WordPress 动态加载文章内容》.
使用微格式和微数据
微格式和微数据都是为了语义化网页结构, 在网页上标记内容以描述特定类型的信息, 如评论, 事件, 商品等. 不用的是微格式使用 class 来语义化标签, 而微数据则是使用特定的标签. 两种方式 Google 都支持, 而微数据的适用范围更广, 使用方便, 更多内容请参考 Google 网站站长工具的文档 和 schema.org 上的例子.
示例 1: 在文章上加上评分功能, 并使用微数据 AggregateRating.
在 Google 的搜索结果中可以看到文章的评分结果. 虽说这个不会影响文章排名, 但有着这么抢眼的黄色星星和评价信息, 其实是鼓励用户点击进入.
示例 2: 使用微格式或者微数据对博客的评论进行处理.
当文章内出现新的评论时, 搜索引擎会认为页面有所更新, 微格式和微数据可以令爬虫评论内容和时间更加敏感, 避免页面被认为是死页面.
进行微数据和微格式处理的页面可以使用网页摘要测试工具来进行优化后的审查, 以确保处理无误.
向 Google 提交 Sitemap
WordPress 有很多自动生成 sitemap 的插件, Google XML Sitemaps 是我用过最好的一个, 按插件说明使用即可生成 sitemap 文件. 然后登录 Google Webmaster Tools, 并向 Google 提交网站的 sitemap XML 文件.
使用 WordPress 内建图库, 并增加图片展示页面
如果网站上的内容涉及视觉感官的内容, 比如: 地图, 产品和 Logo 设计, 建议使用 WordPress 的 Media 功能建立图库, 而不是库床. WordPress 2.5 之后的主题支持 image.php, 可以内建图片类型页面, 只要稍作优化, 可能为你的网站带来极大流量和更好的转化率.
我写了一篇关于选择 WordPress 内建图库和图床的文章, 可以参考一下.
总结
以上几点仅为个人意见, 具体效果可以参考本博客, 如发现问题或有好的建议请务必提出.
另外, 有些内容我没有提供具体的代码, 只是说了自己的想法或者做法. 如果你对其中某项有兴趣, 请在留言说明, 需求大的我会另起文章具体说明.
SEO技巧之WordPress篇幅的更多相关文章
- 网站编辑须知9个SEO技巧
1. 文章当中最好需要出现一个网站核心关键词所谓的网站核心的关键词就是指与网站内容相关性比较高并且是比较受欢迎的关键词,当然还有相当高的转化率 2. 文章标题当中需要出现关键词.关键字在标题标签< ...
- SEO技巧汇集
每个人都喜欢好用的技巧,对吗?这里有55个用于搜索引擎优化的小技巧,甚至你的老妈用起来都易如反掌.哦,不是我的老妈,但你明白我的意思.这意味着网页设计师和SEO新手中大部分人都能迅速上手,没有任何困难 ...
- SEO优化:WordPress发布文章主动推送到百度,加快收录保护原创
工作实在太忙,也没时间打理网站.最近公司额外交待了一些网站 SEO 方面的优化任务让我关注(这就是啥都要会.啥都要做的苦逼运维的真实写照了...). 于是抽空看了下百度站长平台,至少看到了2个新消息: ...
- 这两个基础seo插件,wordpress网站必装
WordPress对搜索引擎非常友好,这一点很多人都知道.不过我们在制作完成WordPress主题后,还可以在原来的良好基础上,添加两个队seo非常有利的WordPress插件. 第一个插件:Baid ...
- 前端SEO技巧
前几天在慕课网上学习了“SEO在网页制作中的应用”,觉得挺好.挺有用的,今天,特此做了一个小小的笔记,也算是对学习过后的一个总结. 一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时, ...
- 做电子商务的七个SEO技巧
随着电子商务网站的迅速增加,为了适应不断增长的网络客户多样化需求.越来越多的人注意到,从网站上购买既节省了时间和金钱,因此电子商务社区越来越激烈.网站需要具有独特的设计风格和功能,而不是网站内容的不断 ...
- 41.SEO----前端SEO技巧
一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时,然后得到结果.深究其背后的故事,搜索引擎做了很多事情. 在搜索引擎网站,比如百度,在其后台有一个非常庞大的数据库,里面存储了海量的关 ...
- 40.SEO----前端该懂的seo技巧
SEO要点:1.语义化html标签,用合适的标签嵌套合适的内容,不可过分依赖div,对浏览器更友善就能更容易被抓取.2.重要的内容html代码放在前面,放在左边.搜索引擎爬虫是从左往右,从上到下进行抓 ...
- SEO优化:WordPress站点地图(html和xml)插件Baidu Sitemap Generator
前阵子分享了<如何实现纯代码制作网站地图的html和xml版本>,不过不是每个人都喜欢用纯代码来折腾博客的.今天,boke112就给大家分享一款国人柳城制作的包含html和xml两个版本的 ...
随机推荐
- 初涉深度优先搜索--Java学习笔记(二)
版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 上周学习了数组和链表,有点基础了解以后,这 ...
- 多文档上传(upload multiple documents)功能不能使用怎么办?
问题描述: 在SharePoint 2010的文档库里选择documents标签,然后选择upload document下拉菜单,你会发现upload multiple documents那个按钮是灰 ...
- ORACLE冷备份与恢复
ORACLE备份和恢复有三种方式: (1)数据泵(expdp/impdp) (2)冷备份 (3)RMAN备份 就分类而言,(1)和(2)统有称为"冷"备份,(3)称为"热 ...
- SSDB:高性能数据库服务器
SSDB是一个开源的高性能数据库服务器, 使用Google LevelDB作为存储引擎, 支持T级别的数据, 同时支持类似Redis中的zset和hash等数据结构, 在同时需求高性能和大数据的条件下 ...
- 依赖倒置(DIP)与依赖注入(DI)
依赖倒置原则(Dependency Inversion Principle)为我们提供了降低模块间耦合度的一种思路,依赖注入(Dependency Injection)是一种具体的实施方法. 依赖倒置 ...
- Spark算子选择策略
摘要 1.使用reduceByKey/aggregateByKey替代groupByKey 2.使用mapPartitions替代普通map 3.使用foreachPartitions替代forea ...
- javaScript 基础知识
一.三个对话框 1.alert("提示信息") 弹出只带有一个确定按钮的对话框2.confirm("提示信息") 弹出有确定和取消按钮的对话框3.prompt( ...
- Android开发学习之路-Volley源码解析
从简单的StringRequest入手看看Volley的工作机制. 先简单说下Volley的用法: ① 获取一个RequestQueue mRequestQueue = Volley.newReque ...
- 携程App的网络性能优化实践
首先介绍一下携程App的网络服务架构.由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现.网络通讯属于基础&业务框架层中基础设施的一 ...
- mybatis的一些小总结
好长时间没用mybatis了,现在项目忽然用mybatis,用的过程中出现了些问题,虽然解决了,不过这花的时间有些长了.总结用的过程中出现的一些问题 1.mapper.xml 之前一直用的自动生成,现 ...