WordPress SEO优化方法:可控性因素的再优化
在SEO中网站的优化分为两个部分,第一部分为可控性因素,如站内链接、网站内容、网站导出链接等。第二部分为不可控因素(外链)。由于一旦我们做好外链后外链的控制权将不再属于我们,很容易被删或者被替换。
而且你不知道什么时候就有人帮你发了几条外链,所以外链的质量与存活期一直是一个SEO难题。而且现在外链在SEO的比重越来越小了,以前一个企业站换个10来个友链就能把一个指数不是很高的次做到首页,现在不行了。
所以我们现在努力做好站内优化才是王道。如何来做好WordPress网站的站内优化呢?请听小V细细道来。 首先一个优秀的网站必须要有一个清晰的网站结构,并且要体现出网站的架构层级。
这样能够有效的帮助搜索引擎蜘蛛快速了解网站的层级关系。从而加大了蜘蛛的抓取效率。那么如何来体现出网站架构层级呢?建立面包屑导航将是最好的优化方案。
1、打开Wordpress的functions.php文件并加入以下代码。
function dimox_breadcrumbs() {
$delimiter = '»';
$name = '首页';
$currentBefore = '<span>';
$currentAfter = '</span>';
if ( !is_home() && !is_front_page() || is_paged() ) {
global $post;
$home = get_bloginfo('url');
echo '<a href="' . $home . '">' . $name . '</a> ' . $delimiter . ' ';
if ( is_category() ) {
global $wp_query;
$cat_obj = $wp_query->get_queried_object();
$thisCat = $cat_obj->term_id;
$thisCat = get_category($thisCat);
$parentCat = get_category($thisCat->parent);
if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '));
echo $currentBefore . '当前分类 '';
single_cat_title();
echo ''' . $currentAfter;
} elseif ( is_day() ) {
echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . $delimiter . ' ';
echo $currentBefore . get_the_time('d') . $currentAfter;
} elseif ( is_month() ) {
echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
echo $currentBefore . get_the_time('F') . $currentAfter;
} elseif ( is_year() ) {
echo $currentBefore . get_the_time('Y') . $currentAfter;
} elseif ( is_single() ) {
$cat = get_the_category(); $cat = $cat[0];
echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
echo $currentBefore;
the_title();
echo $currentAfter;
} elseif ( is_page() && !$post->post_parent ) {
echo $currentBefore;
the_title();
echo $currentAfter;
} elseif ( is_page() && $post->post_parent ) {
$parent_id = $post->post_parent;
$breadcrumbs = array();
while ($parent_id) {
$page = get_page($parent_id);
$breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">'. get_the_title($page->ID) . '</a>';
$parent_id = $page->post_parent;
}
$breadcrumbs = array_reverse($breadcrumbs);
foreach ($breadcrumbs as $crumb) echo $crumb . ' ' . $delimiter .' ';
echo $currentBefore;
the_title();
echo $currentAfter;
} elseif ( is_search() ) {
echo $currentBefore . 'Search results for '' . get_search_query() . ''' . $currentAfter;
} elseif ( is_tag() ) {
echo $currentBefore . '当前标签页 '';
single_tag_title();
echo ''' . $currentAfter;
} elseif ( is_author() ) {
global $author;
$userdata = get_userdata($author);
echo $currentBefore . '当前文章页 ' . $userdata->display_name .$currentAfter;
} elseif ( is_404() ) {
echo $currentBefore . 'Error 404' . $currentAfter;
}
if ( get_query_var('paged') ) {
if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' (';
echo __('Page') . ' ' . get_query_var('paged');
if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')';
}
}
}
2、然后在需要显示面包屑导航的地方加入以下代码。
<?php if (function_exists('dimox_breadcrumbs')) dimox_breadcrumbs(); ?>
3、好了这样就完成了WordPress SEO的面包屑导航,接下来我们做的就是要控制站内导出链接页面所输出的权重。
二、Wordpress防止权重流失:自动添加nofollow属性
1、大家在写文章时引用的站外链接大多数都是参考文献之类的,我们可以给这些链接添加nofollow属性来减少不必要的权重流失。
2、手动添加nofollow属性的话可以精准的控制链接的权重导出,但是太过于麻烦,而SQL批量操作对于新手又太难。
3、下面小V来教大家如何给wordpress网站文章中所导出的外链自动添加nofollow属性。 将以下代码加入到当前主题的functions.php文件即可实现。
add_filter('the_content', 'auto_nofollow');
function auto_nofollow($content) {
return preg_replace_callback('/<a>]+/', 'auto_nofollow_callback',$content);
}
function auto_nofollow_callback($matches) {
$link = $matches[0];
$site_link = get_bloginfo('url');
if (strpos($link, 'rel') === false) {
$link = preg_replace("%(href=S(?!$site_link))%i",'rel="nofollow" $1', $link);
} elseif (preg_match("%href=S(?!$site_link)%i", $link)) {
$link = preg_replace('/rel=S(?!nofollow)S*/i','rel="nofollow"', $link);
}
return $link;
}
4、换主题的时候记得把这段代码加到新主题里噢,不然换主题后文章中的外部链接就会变成无nofollow属性的了。
1、很多wordpress的个人博主在建立博客后会经常写一些生活中的琐碎小事,但是那些文章是完全不会给网站从搜索引擎带来流量的。
2、如果这些文章在站内展示率或出现率太高这样就会把需要权重的页面的权重给分散了。为了不让权重分散我们就只好用robots.txt来屏蔽该目录下的文章了。
3、有些博主不希望这类页面把站点的权重分散了,但是又想让搜索引擎收录这些页面那该怎么办呢?这样我们可以用nofollow属性来控制页面间权重的传递。
function nofollow_cat_posts($text) {
global $post;
if( in_category(1) ) { // 将1替换成你要输出nofollow链接的目录id
$text = stripslashes(wp_rel_nofollow($text));
}
return $text;
}
add_filter('the_content', 'nofollow_cat_posts');
4、将以上代码加入到你当前使用的主题的functions.php里则可以指定分类链接在输出时带nofollow属性,从而达到集中网站权重的效果。
1、不管任何网站都随时可能出现问题,那么当wordpress网站或博客在遇见问题或者是维护时我们该怎么做呢?
2、直接关闭站点那是非常不明智的方法,对访客或者是搜索引擎来说都不是友好的,你可能会想到直接做个一个维护提示页面然后将网站请求全部都定向到维护提示页面。
3、这样处理虽然对与用户体验来说是非常友好的但是对于搜索引擎来说可就糟糕透顶了,在搜索引擎看来你整个网站的内容都变成一样的了,那不K你才奇怪了。
4、百度站长平台曾推荐过在网站维护时可以返回http 503状态码这样可以告诉搜索引擎,网站正在维护中。
5、使用wordpress搭建的网站要做到这一点是非常简单的仅仅需要向functions.php文件中添加一些代码就可以。
function wp_maintenance_mode(){
if(!current_user_can('edit_themes') || !is_user_logged_in()){
wp_die('网站维护中……', '请在7:00之后再来', array('response' =>'503'));
}
}
add_action('get_header', 'wp_maintenance_mode');
6、当网站维护完毕后只需要将代码注释或者删除掉就好了。
1、描文本在网站的seo优化中占据着很大的比重,合理的关键词描文本可以给网站的排名带来很大的帮助。
2、大多数建站系统在布局文章关键的描文本时都要手动去更改、去更新。这样的工作量是非常庞大的,而且效率极其低下。
3、而有些聪明的站长可能会利用执行数据库语言来批量的更换关键词的描文本,但是对于菜鸟来说数据库操作可能太难,所以小V这里介绍个wordpress自动描文本的方法:
$match_num_from = 1; //每篇文章中的关键词数量低于多少则不描文本(请不要低于1)
$match_num_to = 1; //同一篇文章中,同一个关键词最多描几次文本(这里是1次,建议不超过2次)
add_filter('the_content','tag_link',1);
function tag_sort($a, $b){
if ( $a->name == $b->name ) return 0;
return ( strlen($a->name) > strlen($b->name) ) ? -1 : 1;
}
function tag_link($content){
global $match_num_from,$match_num_to;
$posttags = get_the_tags();
if ($posttags) {
usort($posttags, "tag_sort");
foreach($posttags as $tag) {
$link = get_tag_link($tag->term_id);
$keyword = $tag->name;
$cleankeyword = stripslashes($keyword);
$url = "<a href=\"$link\" title=\"".str_replace('%s',addcslashes($cleankeyword, '$'),__('View all posts in %s'))."\"";
$url .= ' target="_blank" class="tag_link"';
$url .= ">".addcslashes($cleankeyword, '$')."</a>";
$limit = rand($match_num_from,$match_num_to);
$content = preg_replace( '|(<a[^>]+>)(.*)('.$ex_word.')(.*)(</a[^>]*>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
$content = preg_replace( '|(<img)(.*?)('.$ex_word.')(.*?)(>)|U'.$case, '$1$2%&&&&&%$4$5', $content);
$cleankeyword = preg_quote($cleankeyword,'\'');
$regEx = '\'(?!((<.*?)|(<a.*?)))('. $cleankeyword .')(?!(([^<>]*?)>)|([^>]*?</a>))\'s' . $case;
$content = preg_replace($regEx,$url,$content,$limit);
$content = str_replace( '%&&&&&%', stripslashes($ex_word),$content);
}
}
return $content;
}
4、此段代码只会在已经存在的tag上面文本,如果需要自定义其他描文本请使用WP keyword Link Plugin插件。
1、有些比较注重SEO的站长,为了降低网站垃圾页面的收录量经常使用robots.txt来屏蔽网站内容。有些站长直接一句Disallow: /xxx/xx 了事,其实这是非常不明智的!
2、因为站内仍有页面链接向这些垃圾页面,如果直接用robots.txt屏蔽的话会造成这些垃圾页面成为只导入链接而不导出链接的站内权重黑洞,会造成网站权重的流失。
3、最准确的解决方法是添加nofollow属性后并使用robots.txt屏蔽。 最后附一张小V博客在百度统计中SEO状态的截图:
文章出自:v7v3 由部落编辑整理,版权归原作者所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
您或许对下面这些文章有兴趣: 本月吐槽辛苦排行榜
- 是该选择WordPress插件还是在functions.php中添加代码?
- 如何快速在WordPress中生成网站缩略图?Browser Shots插件与代码法
- WordPress评论插入图片与附件-直接添加代码法和安装评论图片插件法
- WordPress表格插件TablePress:支持排序,分页,搜索和导入导出CSV
- WordPress死链接检测工具-Broken Link Checker和Xenu’s Link Sleuth
- 优秀的WordPress在线问答插件AnsPress安装与使用
- 使用Poedit汉化.PO和编译.MO文件-附汉化WordPress主题和插件
- WordPress邀请注册插件:Easy Invitation Codes,Secure Invites和WP-Invites
-
今天簽到啦!時間:下午5:18:29
[回复] -
板凳
[回复] -
板凳
[回复] -
打卡
[回复] -
马克一下
[回复] -
qi 在不。。。你觉着不限定域名数量的主机哪个好一点?就是说文件夹绑定域名之后没有各种问题。。例如discuz之类的
[回复]qi 回复:
@噜噜猪, 你说的突破建站限制那种吗?有些主机不是无限绑定域名吗?
[回复]噜噜猪 回复:
@qi, 突破限制这种不怎么样。。各种的bug,我是说那种无线绑定域名的,有没有无限绑定域名可以单独设置ssl的
[回复]qi 回复:
@噜噜猪, 恐怕不行,SSL要独立IP,除非你的主机上有多个IP,否则多个SSL对应一个IP是不行的。
[回复]王琪亮 回复:
@qi, 可以是可以,但是IE+WinXP以下版本系统这个组合不行。详见TLS1.0(和SSL3.0几乎没有区别)的RFC标准,上次给qi发过他没回。
[回复]qi 回复:
@王琪亮, 你意思是Linux可以?我去找找邮件。
[回复]王琪亮 回复:
@qi, 你没懂我意思,我指的是只要WindowsXP及以下系统不用IE,就支持一项技术,即只识别域名不用识别独立IP,即TLS1.0的SNI技术(一个IP以域名显示SSL证书的技术,是SSL3.0和TLS1.0不同的地方之一。)。详见我的博客:[url]https://wangqiliang.cn/2013/1060[/url](我的主机也是共享IP,但是可以用SSL。)
[回复]王琪亮 回复:
@qi, @qi, 你没懂我意思,我指的是只要WindowsXP及以下系统不用IE,就支持一项技术,即只识别域名不用识别独立IP,即TLS1.0的SNI技术(一个IP以域名显示SSL证书的技术,是SSL3.0和TLS1.0不同的地方之一。)。详见我的博客:https://wangqiliang.cn/2013/1060(我的主机也是共享IP,但是可以用SSL。)
[回复]qi 回复:
@王琪亮, 我去研究研究。看你的文章说是“自动”出现,那没有出现“激活你网站上的HTTPS”,怎么办?博主评论信息是不是忘记填写网址了?
[回复]王琪亮 回复:
@qi, 那个自动出现的条件,是CPanel版本11.38以上,主机的APACHE编译了最新版本的OpenSSL模块并启用,而且机房在你的套餐所在的主机上开启了这个功能。这个是主机商和机房的问题。我用的是VPSAA的MC机房套餐,机房在洛杉矶。
[回复]王琪亮 回复:
@qi, 参见:
https://releases.cpanel.net/
我刚看了CPanel的发行说明,CPanel的最新版本11.38,在"SSL Management"中有这么一句话:” For servers running CentOS 6, CloudLinux 6, RHEL 6 or later, SNI support is now available."就是运行entOS 6, CloudLinux 6, RHEL 6 及以上系统的CPanel,支持SNI选项。
SNI,在TLS1.0的RFC标准中定义为在共享IP的主机上安装多个SSL证书,通过识别域名的方式来发送证书,连接SSL/TLS(即HTTPS协议)[回复] -
我不太喜欢百度站长平台
[回复] -
,呃上面没写全。。。。。。。。。。。。
[回复] -
seo是做给搜索看的,人都不看。。。。
[回复] -
支持一下吧
[回复] -
现在都要求自然 自然
[回复] -
心情博客无所谓,自己舒服就行
[回复] -
好详细啊~细致的看完了~
[回复] -
我竟然全看完了。。。
[回复] -
太长了,没耐心看完
[回复] -
这些都挺好的。不过内容才是最重要的
[回复] -
一直不在意SEO
[回复] -
纯文字 没耐心
[回复] -
看见代码就头疼啊~~~我还是继续用插件吧
[回复] -
哈哈,换了个头像来炫
[回复] -
解决我燃眉之急哈
[回复] -
这篇文章要好好的研究一下。
[回复] -
正在学习seo,顶
[回复] -
谢谢老大分享太有用了
[回复]