当你阅读一篇文章的时候,如果文章内有一个链接的话,如果是当前页面直接转到,那么如果想再回到之前的页面就需要手动回退,是不是感觉很是不方便?
虽然有时候点击鼠标中键(滚轮)可以使链接在新窗口打开,或者某些浏览器支持拖动链接新窗口打开,但是这些并不适用于所有的访客,这对网站的人流量增加无疑是一种阻碍,这时我们可以考虑让所有文章的外部链接都以新窗口模式打开。
同时考虑到网站内部页面的切换还是通过本页面直接转到,在function.php文件中最后一个?>之前加入如下代码
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 37 38 |
//自动添加nofollow属性和新窗口打开WordPress文章/页面的站外链接 function cn_nf_url_parse( $content ) { $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>"; if(preg_match_all("/$regexp/siU", $content, $matches, PREG_SET_ORDER)) { if( !empty($matches) ) { $srcUrl = get_option('siteurl'); for ($i=0; $i < count($matches); $i++) { $tag = $matches[$i][0]; $tag2 = $matches[$i][0]; $url = $matches[$i][0]; $noFollow = ''; $pattern = '/target\s*=\s*"\s*_blank\s*"/'; preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE); if( count($match) < 1 ) $noFollow .= ' target="_blank" '; $pattern = '/rel\s*=\s*"\s*[n|d]ofollow\s*"/'; preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE); if( count($match) < 1 ) $noFollow .= ' rel="nofollow" '; $pos = strpos($url,$srcUrl); if ($pos === false) { $tag = rtrim ($tag,'>'); $tag .= $noFollow.'>'; $content = str_replace($tag2,$tag,$content); } } } } $content = str_replace(']]>', ']]>', $content); return $content; }add_filter( 'the_content', 'cn_nf_url_parse'); |
看看是不是OK了 ,这样就符合了大众的阅读习惯
但是WordPress在这件事情上后台也会遇到同样的情况 ,在我们进行编辑的时候经常需要从后台转入前台,不幸的是这时同样是当前页面直接转到,这无疑给我们的管理工作带来了极大的不便,于是我们可以考虑对这些功能的实现源码进行修改直接新窗口打开转入前台
在这里有几种修改方式,可以修改WordPressd的框架源码, 也可以直接集成到主题
个人建议扩展功能尽量集成到主题,不然一但更新WordPress又需要手动再来一发
接下来就是福利了 ,集成到主题的代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//新标签打开文章链接 global $pagenow; if( $pagenow == 'post.php' ){//这里如果不加的话,就会后台一直js报错 function _admin_aritical_ctrlenter() { echo '<script type="text/javascript"> var postlink = document.getElementById("edit-slug-box").getElementsByTagName("a"); for(var i=0;i<postlink.length;i++) { postlink[i].target = "_blank"; } </script>'; }; add_action('admin_footer', '_admin_aritical_ctrlenter'); } //新标签打开顶部网站链接 function _admin_site_ctrlenter() { echo '<script type="text/javascript"> var sitelink = document.getElementById("wp-admin-bar-site-name").getElementsByClassName("ab-item"); for(var i=0;i<sitelink.length;i++) { sitelink[i].target = "_blank"; } </script>'; }; add_action('admin_footer', '_admin_site_ctrlenter'); //------------The End----------------------- |
接下来把下面的代码加入funtion.php文件的最后一个?> 之前就ok了,看看是不是方便多了