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.访问页面查看效果