wordpress 后台链接加 nofollow 功能
将下面的代码加入到主题的 functons.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', __('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标签?'); ?></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); }
页面调用链接
1.复制一份新的页面模板文件到主题根目录,并更名 *-links.php
2.在该文件中添加短代码调用链接
// 添加友链短代码 function mk_linklist($atts, $content = null) { extract(shortcode_atts(array( 'catid' => '' ) , $atts)); $html = '<ul class="links-list clear-fix">'; $default_ico = get_template_directory_uri().'/images/default_favicon.ico'; if($catid) { $bookmarks = get_bookmarks('title_li=&orderby=link_rating&order=DESC&category=' . $catid); } else { $bookmarks = get_bookmarks('title_li=&orderby=link_rating&order=DESC'); } if(!empty($bookmarks)) { foreach($bookmarks as $bookmark) { // var_dump($bookmark); $link_ico = $bookmark->link_image; if(!$link_ico) { $favicon_api = mk_theme_option('favicon_api'); if($favicon_api) { // 只能获取 favicon $link_url = $bookmark->link_url; $link_url = str_replace(array('http://', 'https://', '//'), '', $link_url); $link_ico = $favicon_api.$link_url; } else { $link_ico = $bookmark->link_url.'/favicon.ico'; } } if (strpos($bookmark->link_rel, 'nofollow') !== FALSE) $html .= ' <li> <img class="no-error" src="'.$link_ico.'" onerror="onerror=null;src=\''.$default_ico.'\'"><a class="links" href="'.$bookmark->link_url.'" title="'.$bookmark->link_notes.'" target="_blank" rel="nofollow" no-jump-page>'.$bookmark->link_name.'</a> </li>'; else $html .= ' <li> <img class="no-error" src="'.$link_ico.'" onerror="onerror=null;src=\''.$default_ico.'\'"><a class="links" href="'.$bookmark->link_url.'" title="'.$bookmark->link_notes.'" target="_blank" no-jump-page>'.$bookmark->link_name.'</a> </li>'; /* 不区分nofollow */ /* $html .= ' <li> <img class="no-error" src="'.$link_ico.'" onerror="onerror=null;src=\''.$default_ico.'\'"><a class="links" href="'.$bookmark->link_url.'" title="'.$bookmark->link_notes.'" target="_blank" no-jump-page>'.$bookmark->link_name.'</a> </li>';*/ } } $html .= '</ul>'; return $html; } add_shortcode('linklist', 'mk_linklist');
3.给链接创建分类目录
4.后台创建页面,调用友情链接
调用代码:[linklist catid="374] [/linklist] 其中 catid 后的值是链接分类目录的ID
5.根据情况添加链接,区分是否加 nofollow 属性
6.访问页面查看效果
本文作者为Mr.Wu,转载请注明,尊守博主劳动成果!
由于经常折腾代码,可能会导致个别文章内容显示错位或者别的 BUG 影响阅读; 如发现请在该文章下留言告知于我,thank you !