关于WordPress到底需不需要SEO?SEO和原创文章搜索引擎更加偏爱那个?这个我不知道,但花点时间针对搜索引擎优化一下WordPress博客,还是会增加搜索引擎对你博客文章的索引,令搜索者以目标匹配度相对较高的结果访问你的网站上得到他想要的东西, 并记住这个网站. 也就是说, 搜索引擎会带来很多有价值的流量。
以下方案没有经过测试,但我会随时更新本文告诉大家结果。不过定期更新博客多写原创文章永远都是最好的SEO,这一点是不容置疑的。因为谁都不喜欢永远没有变化的网站,搜索引擎是,你的读者也是。这一次本人当经验总结写下本文:WordPress SEO 技巧,并且这些SEO优化全为纯代码完成。但我不会非常详细一一列明,因为有一些已在其实文章详细描述。
博客标题优化
我没有对标题做任何的优化,在首页显示的是“博客名称”+“副标题”,而在文章页显示的是“文章标题 | 佐仔志”,其实的一样,后面带有博客名称。所以我直接使用了官方主题的表达方式。
<title><?php wp_title( '|', true, 'right' ); ?></title>
keywords 和 description 的优化
Keywords 为搜索引擎提供网页包含的核心内容, Description 则为搜索引擎提供网页的描述信息。在网络上也有各种各样的方法,在我眼里都觉得不是很完美,都会有一些缺决。也有很多SEO插件对这两方面进行设置,我不喜欢用插件的形式来实现它。所以就有了这篇文章:关于 #WordPress# 的 keywords 和 description SEO 技巧。
以下是我对 keywords, description 和页面标题的处理规则,实现方法可以参考上一段关于页面标题的说明。原图由MG12制作,我略有修改。
页面类型 | Keywords | Description | Title |
---|---|---|---|
首页 (front page) | 自定义 keywords | 自定义 description | 博客标题 |
文章列表页面 (index) | 自定义 keywords | 自定义 description | 博客标题 |
文章详细页面 (single) | 标签组合 | 摘要或者文章前 220 个字符 (截取文章需要特殊处理全角字符) |
文章标题 |
独立页面 (page) | 标签组合 | 文章前 220 个字符 (截取文章需要特殊处理全角字符. 独立页面不支持摘要, 有特殊需要可以创建页面模板) |
文章标题 |
类目存档页面 | 类目名称 | 类目描述 | 有关XXX 的文章 |
搜索页面 | 搜索关键字 | XXX 的搜索结果 | XXX 的搜索结果 |
标签存档页面 | 标签名称 | 标签 | 有关XXX 的文章 |
日期存档页面 | 日期 | XXX 的文章存档 | XXX 的文章存档 |
其他页面 | 留空 | 页面标题 | 博客标题 |
使用 h1, h2, h3, strong 标签
以前使用较多的是strong 标签,今天也是在MG12的文章说:
h1 给予文章标题或者与网站相关性高的推广性内容, 而不是博客标题. 比如: 文章详细页面的 h1 给文章标题, 因为相关度最高.
h2 是跟文章有关的描述式信息, 如面包屑, 分类和标签.
h3 是其他类似内容, 如相关文章, 小标题.
strong 给文章内的关键字. 比如: 本文第一段将 strong 放在 “WordPress SEO 技巧” 这个词组上.
给阅读更多(Read more…)链接加上nofollow
避免搜索引擎重复抓取文章内容,是网站优化中必不可少的一步。所以我是给给阅读更多(Read more…)链接加上nofollow,而实现的方法也非常简单。在functions.php 文件加上以下代码:
//给 Read more 加上 nofollow function add_nofollow_to_link($link) { return str_replace('<a', '<a rel="nofollow"', $link); } add_filter('the_content_more_link','add_nofollow_to_link', 0); //给 Read more 加上 nofollow 结束 ?>
给文章加上“相关文章”
同样,也是在functions.php 文件加上以下代码:
//相关文章开始 $wp_rp=array( 'limit'=>8, //相关文章数量 'wp_rp_rss'=>true, //是否在feed 中显示相关文章 'wp_no_rp'=>'random', //无相关文章时的选择:text 或random(random-随机文章) 'wp_rp_date'=>true, //显示文章发布日期 'wp_rp_comments'=>true, //显示文章评论数 'wp_rp_title_tag'=>'h2', //选择相关文章标题标签(h2 ,h3 ,h4 ,p ,div) ); function wp_get_random_posts ($limitclause="") { global $wpdb, $post; $q = "SELECT ID, post_title, post_content,post_excerpt, post_date, comment_count FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND ID != $post->ID ORDER BY RAND() $limitclause"; return $wpdb->get_results($q); } function wp_get_related_posts() { global $wpdb, $post,$wp_rp; $limit =$wp_rp["limit"]; $wp_rp_title='你可能喜欢的文章:'; //相关文章标题 if(!$post->ID){return;} $now = current_time('mysql', 1); $tags = wp_get_post_tags($post->ID); $taglist = "'" . $tags[0]->term_id. "'"; $tagcount = count($tags); if ($tagcount > 1) { for ($i = 1; $i < $tagcount; $i++) { $taglist = $taglist . ", '" . $tags[$i]->term_id . "'"; } } if ($limit) { $limitclause = "LIMIT $limit"; } else { $limitclause = "LIMIT 10"; } $q = "SELECT p.ID, p.post_title, p.post_content,p.post_excerpt, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb->term_taxonomy t_t, $wpdb->term_relationships t_r, $wpdb->posts p WHERE t_t.taxonomy ='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt < '$now' GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC $limitclause;"; $related_posts = $wpdb->get_results($q); $output = ""; //不存在相关日志则显示随机日志 if (!$related_posts) { if($wp_rp['wp_no_rp'] == "text") { $output .= '<li>没有相关文章!</li>'; //无相关文章时显示标题 } else { if($wp_rp['wp_no_rp'] == "random") { $wp_no_rp_text= '以下文章也精彩:'; //随机文显示标题 $related_posts = wp_get_random_posts($limitclause); } $wp_rp_title = $wp_no_rp_text; } } foreach ($related_posts as $related_post ) { $output .= '<li>'; if($wp_rp['wp_rp_date']) { $dateformat = get_option('date_format'); $output .= mysql2date($dateformat, $related_post->post_date) . " — "; //日期和文章标题间隔符,默认是 — } $output .= '<a href="'.get_permalink($related_post->ID).'" title="'.wptexturize($related_post->post_title).'">'.wptexturize($related_post->post_title).'</a>'; if ($wp_rp["wp_rp_comments"]) { $output .= " (" . $related_post->comment_count . ")"; } $output .= '</li>'; } $output = '<ul>' . $output . '</ul>'; $wp_rp_title_tag = $wp_rp["wp_rp_title_tag"]; if(!$wp_rp_title_tag) $wp_rp_title_tag ='h3'; if($wp_rp_title != '') $output = '<'.$wp_rp_title_tag.' >'.$wp_rp_title .'</'.$wp_rp_title_tag.'>'. $output; return $output; } function wp_related_posts_attach($content) { global $wp_rp; if (is_single()||(is_feed() && $wp_rp["wp_rp_rss"])) { $output = wp_get_related_posts(); $content = $content.$output; } return $content; } add_filter('the_content', 'wp_related_posts_attach',100); //相关文章结束
建立一个文章存档页面
我的主要目的是方便百度搜索引擎抓数据,谁叫百度更懂中文呢?同时也方便网友阅读。不过该页面我是放在网页部底,因为阅读不多。
使用微格式和微数据
机器不识方言,也不识普通话,但它识微格式和微数据。微格式和微数据都是为了语义化网页结构, 在网页上标记内容以描述特定类型的信息, 如评论, 事件, 商品等. 不用的是微格式使用 class 来语义化标签, 而微数据则是使用特定的标签. 两种方式 Google 都支持, 而微数据的适用范围更广, 使用方便, 更多内容请参考Google 网站站长工具的文档 和 schema.org 上的例子.
这就是微数据的效果。现在不是懂HTML或是PHP就行,更加需要懂的就是微数据,这方便本人还有待学习。当文章内出现新的评论时, 搜索引擎会认为页面有所更新,微格式和微数据可以令爬虫评论内容和时间更加敏感,避免页面被认为是死页面,所以大家多多在本博客留言。进行微数据和微格式处理的页面可以使用网页摘要测试工具来进行优化后的审查,以确保处理无误。
建立Sitemap,向各大搜索引擎提交Sitemap
Google Sitemap 我是用插件“Google XML Sitemaps”生成,并且Bing通用,而百度 Sitemap 用插件“Baidu Sitemap Generator”。然后去相应的搜索引擎网站站长工具申请提交。Google我登录 Google Webmaster Tools,并向 Google 提交网站的 sitemap XML 文件。
使用伪静态 URL 作为固定链接
我不建议分几级,总是认为越短越好,因为机器不懂得你的网址表示什么意思。但听百度更懂中文,如果你的网站是拼音的那收录更好。
建议使用以下格式:
/%postname%.html
但我使用的格式是:
/%post_id%.html
就是域名后面一般数字。但有一点非常更新的。网址不要乱变,做好事先规划。三年固定的网页PR值可是高于新文章的。所以固定链接能不换就不换。
精简header.php头部代码
//精简header.php头部代码 remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'index_rel_link'); remove_action('wp_head', 'feed_links_extra', 3 ); remove_action('wp_head', 'feed_links', 2 ); remove_action('wp_head', 'start_post_rel_link'); remove_action('wp_head', 'adjacent_posts_rel_link'); remove_action('wp_head', 'wp_generator' ); //精简header.php头部代码结束
呵呵,我有洁癖。其实header.php头部代码越多,在影响流畅览的同时,也给网络蜘蛛带来困惑,因为它是有链接就爬的。
让你的网页自适应
为什么要求WordPress主题自适应网页(屏幕)?因为现在移动终端越来越多,移动设备正超过桌面设备,成为访问互联网的最常见终端。为了给读者提供一个良好的阅读界面,你必须面对这个问题:如何才能在不同大小的设备上完美呈现你博客相应网页?WordPress主题自适应网页的设计思路是我之前写的文章。大家可以好好看看。
总结
其实最好的SEO就是多写文章,但有时机器不太懂你,所以我们要告话机器,而SEO就是我们告诉机器的一种方式。以上这些都是我近期以来所努力得的结果。如果你感兴趣那留言大家探讨一下,或是本文中有那些不对的地方也欢迎留言说明。我尽量给大家详细的代码,但关于微数据这一块我也不是很懂,如果你懂,希望你可以提供一些资料一起学习学习。谢谢。
佐兄,你文章里写的相关文章放的位置可否调整,怎么做呢?
如果需要调整,那就要插件来实现,本人暂时没有去研究。因为放这个功能用户点击度不高,只是seo的一个方法而已。
我已经弄好了,没用插件。谢谢了!
可以告方具体方法吗?
存档页是肿么弄的,我在想是否把我的站换成wordpress,不过php不熟^_^
文章存档我是用插件:WP-EasyArchives 来实现的。
哦
给文章加上“相关文章”
这个是指给feed加上相关文章吧
在文章页面及feed都已加上相关文章.
我这种方法是把相关文章当作文章内容一部份进行显示的。
请问还有哪个网站提供好的博客服务?鉴于很多都半途停止服务或在国内难于访问
按照你的要求,国内只剩下网易、腾讯、新浪之类了。
现在这个互联网时代,没一两个上网利器那行呀。
如果真有心想写博客,建议独立空间。