WordPress为非友情链接添加nofollow属性的方法

  • A+
所属分类:wordpress

给友情链接添加nofollow属性绝对是不道德被人鄙视的行为,所以看清楚了题目,是为非友情链接接添加nofollow属性!正如WordPress不仅可以做Blog也可作CMS,也可以作为网址导航页面用,所以为非友情链接添加nofollow属性是非常必要的。

方法1:直接修改源代码

以WordPress 4.5.3为例,编辑/wp-admin/includes/meta-boxes.php,在1145行添加如下代码:

  1. <tr>
  2.   <th scope="row">nofollow</th>
  3.   <td>
  4.     <fieldset>
  5.       <legend class="screen-reader-text"><span> nofollow </span></legend>
  6.       <label for="nofollow"><input class="valinp" type="checkbox" name="nofollow" value="nofollow" id="nofollow" <?php xfn_check('nofollow'); ?> />nofollow</label>
  7.     </fieldset>
  8.   </td>
  9. </tr>

然后你再添加链接时,就会在“链接关系(XFN)”列表中看到 nofollow 选项了。效果如图:

WordPress为非友情链接添加nofollow属性的方法

注:不太推荐修改WP源代码,因为每次wordpress更新你都要修改一遍,太麻烦了,而且容易忘记。

方法2:使用Add-nofollow-to-XFN插件

如果你不想折腾代码,可以使用插件Add-nofollow-to-XFN实现同样效果。当然,你也可以在主题的 functions.php 添加下面的代码(来自于插件):

  1. /*
  2. Plugin Name: Add-nofollow-to-XFN
  3. Plugin URI: http://www.slyar.com/blog/Add-nofollow-to-XFN
  4. Description: 在后台链接管理的XFN关系中添加一个 nofollow 标签
  5. Author: Slyar
  6. Version: 1.2
  7. Author URI: http://www.slyar.com/
  8. */
  9. function admin_xfn() {?>
  10. <script type="text/javascript">
  11. addLoadEvent(addNofollowTag);
  12. function addNofollowTag() {
  13.   tables = document.getElementsByTagName('table');
  14.   for(i=0;i<tables.length;i++) {
  15.     if(tables[i].getAttribute("class") == "links-table") {
  16.       tr = tables[i].insertRow(1);
  17.       th = document.createElement('th');
  18.       th.setAttribute('scope','row');
  19.       th.appendChild(document.createTextNode('Follow'));
  20.       td = document.createElement('td');
  21.       tr.appendChild(th);
  22.       label = document.createElement('label');
  23.       input = document.createElement('input');
  24.       input.setAttribute('type','checkbox');
  25.       input.setAttribute('id','nofollow');
  26.       input.setAttribute('value','nofollow');
  27.       label.appendChild(input);
  28.       label.appendChild(document.createTextNode(' nofollow'));
  29.       td.appendChild(label);
  30.       tr.appendChild(td);
  31.       input.name = 'nofollow';
  32.       input.className = 'valinp';
  33.       if (document.getElementById('link_rel').value.indexOf('nofollow') != -1) {
  34.         input.setAttribute('checked','checked');
  35.       }
  36.       return;
  37.     }
  38.   }
  39. }
  40. </script>
  41. <?php
  42. }
  43. add_action('admin_head','admin_xfn');

方法3:创建一个独立的Meta选项

仍旧可以添加到主题的 functions.php :

  1. /**
  2.  * 一下两个钩子是为了保证代码只在links页面显示
  3.  * 如果你想了解更多load-$page action的信息,访问http://codex.wordpress.org/Adding_Administration_Menus#Page_Hook_Suffix
  4.  */
  5. add_action('load-link.php', 'sola_blogroll_nofollow');
  6. add_action('load-link-add.php', 'sola_blogroll_nofollow');
  7. function sola_blogroll_nofollow() {
  8.     //通过action add_meta_boxes创建我们需要的Meta Box
  9.     add_action('add_meta_boxes', 'sola_blogroll_add_meta_box', 1, 1);
  10.     //通过filter pre_link_rel将数据保存
  11.     add_filter('pre_link_rel', 'sola_blogroll_save_meta_box', 10, 1);
  12. }
  13. //创建Nofollow Meta Box
  14. function sola_blogroll_add_meta_box() {
  15.     //翻译成中文就是,创建一个名叫Blogroll Nofollow的Meta Box,放在link页面的右侧边栏,Meta Box的结构
  16.     //由函数sola_blogroll_inner_meta_box产生
  17.     add_meta_box('sola_blogroll_nofollow_div', __('Blogroll Nofollow'), 'sola_blogroll_inner_meta_box', 'link', 'side');
  18. }
  19. //输出Meta Box的HTML结构
  20. function sola_blogroll_inner_meta_box($post) {
  21.     $bookmark = get_bookmark($post->ID, 'ARRAY_A');
  22.     if (strpos($bookmark['link_rel'], 'nofollow') !== FALSE)
  23.         $checked = ' checked="checked"';
  24.     else
  25.         $checked = '';
  26.     ?>
  27.     <label for="sola_blogroll_nofollow_checkbox"><?php echo __('Nofollow this link?'); ?></label>
  28.     <input value="1" id="sola_blogroll_nofollow_checkbox" name="sola_blogroll_nofollow_checkbox"<?php echo $disabled; ?> type="checkbox"<?php echo $checked; ?> /> <?php echo $message; ?>
  29.     <?php
  30. }
  31. //保存用户的选择
  32. function sola_blogroll_save_meta_box($link_rel) {
  33.     $rel = trim(str_replace('nofollow', ''$link_rel));
  34.     if ($_POST['sola_blogroll_nofollow_checkbox'])
  35.         $rel .= ' nofollow';
  36.     return trim($rel);
  37. }

效果截图:

WordPress为非友情链接添加nofollow属性的方法

原文来自:WordPress大学,链接:http://www.wpdaxue.com/add-nofollow-to-xfn.html

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: