问题描述
我突然发现Wordpress的文章里面的链接一点就直接跳转了,对于一个正在看你博客的人来说非常的不友好,对于SEO优化来说,用户越是沉浸在你的网站里,你的网站排名就会 提高的越快,爬虫可是会模仿人类动作的。一起来看看我怎么处理的吧!
文章内的链接自动在新页面打开
网上查的代码不能用,我又学习了一下php
:sob: 自己实现了。
先贴一段代码
function add_blank( text ) {text = str_replace("<a", '<a target="_blank" rel="nofollow" ', text);
returntext;
}
add_action('the_content','add_blank');
add_blank
函数,把他参数传递过来的字符串里所有的a
标签全部加个了新标签页打开.
rel="nofollow"
代表文章中的链接不要让爬虫追踪。
注意我在nofollow"
后面加了一个空格以防万一。
str_replace
函数是php
里的替换字符串的函数,从我的用法可以知道他的三个参数的含义。
add_action
是一个WordPress动作钩子函数(hook),他调用了add_filter
,他的作用就是拿到函数的返回值,做处理,再返回出来。
所以说为了起到一个处理函数返回值的作用,他必须有参数来接收返回值,而且他本身必须有返回值。
后台控制板左上角的“查看站点”链接。
往往在后台的时候,一点查看站点就跳出去很难受的,改一改咯。
老样子,要加钩子就加到functions.php
里
function customize_my_wp_admin_bar( wp_admin_bar ) {
//获取view-site 节点以便修改node = wp_admin_bar->get_node('view-site');
//获取site-name节点node2 = wp_admin_bar->get_node('site-name');
//修改打开方式node->meta['target'] = '_blank';
node2->meta['target'] = '_blank';
//更新节点wp_admin_bar->add_node(node);wp_admin_bar->add_node($node2);
}
add_action( 'admin_bar_menu', 'customize_my_wp_admin_bar', 80 );
可以注意到,我加了两处,就是我上图标记的两处,node
的名字就是去掉wp-admin-ber-
的前缀就是了,估计WordPress
都是这样的规则。
细心的人可以注意到,add_action
多了第三个参数,他的含义是用于指定与特定的动作相关联的函数的执行顺序。数字越小,执行越早,具有相同优先级的函数在它们被添加到动作的顺序执行。所以设置成80
,弄成最后执行。
访客留言评论链接
如果你在评论的时候填写了网站地址,默认会将你的昵称加上链接,同样也是在同窗口跳转,小熊认为wordpress在这一点做得不是很好。
首先打开wp-includes
文件夹,找到comment-template.php文件打开,在大约216行找到以下代码:
<a href='url' rel='external nofollow ugc' class='url'>author</a>"
替换成下图:
也就是加个这
target='_blank'
然后保存,这样,访客昵称所指向的链接就会在新窗口打开了。
让访客昵称带上链接更有利于吸引人气。况且,我们都看到了nofollow
这个属性,就是说即使搜索引擎见到这个链接也不会追踪过去,更不会传递权重或者PR。google
和百度都支持nofollow
属性。
友情链接
在后台添加链接的时候,勾选这个选项就成了。
比较难受的是这个每次添加的时候都要选中 :-1:, 打开wp-admin
目录下的includes
文件夹,找到meta-boxes.php
文件打开。找到以下代码:
<p><label for="link_target_blank" class="selectit">
<input id="link_target_blank" type="radio" name="link_target" value="_blank" <?php echo ( isset( link->link_target ) && (link->l
ink_target == '_blank' ) ? 'checked="checked"' : '' ); ?> />
可以看到这里明显就是一个表单,把input
为_blank
的设置为选中就行了。
<input id="link_target_blank" checked="checked" type="radio" name="link_target" value="_blank" <?php echo ( isset( link->link_targe
t ) && (link->link_target == '_blank' ) ? 'checked="checked"' : '' ); ?> />
加了checked="checked"
直接全站链接在新窗口或标签中打开
不需要修改程序文件,只需在主题的header模版中找到
<head>
在其下面加上:
<base target=“_blank”>
我没有测试过这个方法,因为他太不友好了,但是适合懒人。
最后
钩子的概念是程序员必须要知道的高级语法,他在各种编程语言或者各个DevOps工具里都会有体现
引用
如果上文理解有误,是他们的锅
WordPress过滤器(Filters):apply_filters和add_filter 让你的wordpress在新窗口打开链接
评论