Blogroll通常用于友情链接,一看到这个题目或许很多人要抱怨了,友情链接怎么可以nofollow!没错,友链nofollow绝对是不道德被人鄙视的行为,但Blogroll不是为友情链接而存在的,正如WordPress不仅可以做Blog也可作CMS。
目录
Blogroll可以做什么
Blogroll是一个WordPress内置的Link Manager,和文章一样,Blogroll也具备分类管理的能力,显然友情链接最多只是其中一个分类。Blogroll可以做什么?
- 网络收藏夹,看到好的文章赶紧放进来,浏览器收藏夹很容易丢;
- 相关资源链接;
- 广告链接,blogroll允许添加图片,放一些affiliate program很合适,我想大多数人不想follow这些网站;
- 总之,Blogroll的用法很多,如果你在一个页面放满链接,全部follow,我想搜索引擎不会喜欢。是否follow应该取决于你,所以需要知道如何nofollow。
如何nofollow Blogroll链接?
最理想的方法
rel在WordPress中用XFN(连接关系网)来表达,如果你在链接编辑页面中没找到这个box,去显示选项里翻翻。
如果能在XFN Meta Box中添加一项Nofollow,似乎很理想,可惜WordPress输出这个Meta Box的代码没有提供任何hooks让我们干涉输出过程。如果执意要加,就需要修改核心代码,网上不缺这种教程,谷歌一下。对我来说,修改核心代码是最后的选择。结果理想,没错,但理想和现实总是有差距的。
懒人的方法
装插件,一键搞定,例如Ultimate Nofollow,一款很精简的插件,可以帮助我们nofollow Blogroll链接,但也有点多余的功能,比如有是否Nofollow全部Blogroll链接,如果你要做友情链接,这个不能用。还能nofollow评论链接,显然对于现在的WordPress,这个没啥用了。
喜欢折腾的人的选择
如果追求简单、性能和轻量级,直接将需要的代码放到functions.php中是最好的选择,当然你可以将这部分代码单独存放在文件中,需要的时候include进去就行了。
扒了一下Ultimate Nofollow的代码,把需要的部分弄出来,只实现Nofollow Blogroll的功能,基于单个链接设置,没有全局功能。
思路是这样:
- 在编辑链接的页面创建一个Meta Box,XFN本身也是Meta Box,只是裹得太严实没地方下手,所以只能自己新建一个。
- Meta Box中只需要一个checkbox,询问用户是否nofollow当前连接,然后用filter拦截一下保存数据的过程,将我们的rel设置加进去。
- 还有第三步吗?第三步就是记得点保存按钮,数据已经写进数据库了,怎么显示是WordPress的事了。
下面看代码
<?php /** * 一下两个钩子是为了保证代码只在links页面显示 * 如果你想了解更多load-$page action的信息,访问http://codex.wordpress.org/Adding_Administration_Menus#Page_Hook_Suffix */ add_action('load-link.php', 'sola_blogroll_nofollow'); add_action('load-link-add.php', 'sola_blogroll_nofollow'); function sola_blogroll_nofollow() { //通过action add_meta_boxes创建我们需要的Meta Box add_action('add_meta_boxes', 'sola_blogroll_add_meta_box', 1, 1); //通过filter pre_link_rel将数据保存 add_filter('pre_link_rel', 'sola_blogroll_save_meta_box', 10, 1); } //创建Nofollow Meta Box function sola_blogroll_add_meta_box() { //翻译成中文就是,创建一个名叫Blogroll Nofollow的Meta Box,放在link页面的右侧边栏,Meta Box的结构 //由函数sola_blogroll_inner_meta_box产生 add_meta_box('sola_blogroll_nofollow_div', __('Blogroll Nofollow'), 'sola_blogroll_inner_meta_box', 'link', 'side'); } //输出Meta Box的HTML结构 function sola_blogroll_inner_meta_box($post) { $bookmark = get_bookmark($post->ID, 'ARRAY_A'); if (strpos($bookmark['link_rel'], 'nofollow') !== FALSE) $checked = ' checked="checked"'; else $checked = ''; ?> <label for="sola_blogroll_nofollow_checkbox"><?php echo __('Nofollow this link?'); ?></label> <input value="1" id="sola_blogroll_nofollow_checkbox" name="sola_blogroll_nofollow_checkbox"<?php echo $disabled; ?> type="checkbox"<?php echo $checked; ?> /> <?php echo $message; ?> <?php } //保存用户的选择 function sola_blogroll_save_meta_box($link_rel) { $rel = trim(str_replace('nofollow', '', $link_rel)); if ($_POST['sola_blogroll_nofollow_checkbox']) $rel .= ' nofollow'; return trim($rel); } ?>
把这段代码放到主题的functions.php中,就可以在链接编辑页面看到选项了,并且不会与其它的rel选项冲突
下载源代码
将文件include到functions.php中,或者直接将代码拷贝到functions.php中使用
[download id=31]
我原来一直把它当作友情链接来着。
比我强,我写友情链接直接用text widget…
好久没来拉’最近好忙啊。有空去我网站看下’加blog进入哦
这次换了个长得像企业模板的主题啊,够大气。