普通方式输出

用到get_bookmarks()函数,然后通过foreach遍历输出友链数组的各个键值,直到输完为止.下面的代码取自本人INLOSIM主题底部友链工具

<?php $bookmarks = get_bookmarks('hide_invisible=0');if($bookmarks){ ?>
    <div class="footer_links">
        <span class="links_title">友情链接</span>
        <div id="bookmarks" class="jv_bookmarks">            
        <?php foreach( $bookmarks as $bs ){ if ( $bs->link_rel ==  'contact' || ( !is_home() && $bs->link_rel == 'acquaintance' )  ) { continue; } ?>
            <a class="tra<?php echo $bs->link_visible == 'N' ? ' hide' : null; ?>" href="<?php echo $bs->link_url;?>" title="<?php echo $bs->link_description; ?>" target="<?php echo $bs->link_target == '' ? '_target' : $bs->link_target; ?>">     <span><svg class="icon-flinks" style="width:13px;height:13px;fill:#aaa;position:relative;top:2px;"><use xlink:href="#icon-flinks"></use></svg></span> <?php echo $bs->link_name; ?></a>
        <?php }?>
        <div class="clear"></div>
        </div>
    </div>
<?php } ?>

其中有一个条件判断 if...continue ,意思为当关系为contact(偶有联系)或者{非首页并且为acquaintance(熟人)}时 跳过,也就是不输出相应的条目.

异步Ajax方式

也是基于上面的结构,只不过需要通过js来判断首页,并且抓取php里面的$bookmarks变量内的各个值传给js内的变量再输出结构再用html()替换原有内容.
JS代码

var home_url = document.location.href.match(/http:\/\/([^\/]+)\//i)[0]; // 主页地址

// 函数:是否首页
function is_home() {
    var home_href = location.href; // 当前页面的地址链接
    return home_href == home_url ? true : false; // 如果是首页则true否则false
}

// 函数:返回友链结构
function html_bookmarks() { 
    if (bookmarks) { // 这个变量是php里面的$bookmarks 
        var links = is_home() ? bookmarks['home'] : bookmarks['nonhome']; //若为首页那么选择bookmarks内home值内的参数,否则选择nonhome值内的参数
        var output = '';
        for(var i in links) { // 将home或nonhome内获得的参数赋值给下面各变量(上面已作出判断)
            var visible = links[i].link_visible == 'N' ? ' hide' : '';
            var href = links[i].link_url;
            var desc = links[i].link_description;
            var name = links[i].link_name;
            var img = links[i].link_img;
            var target = links[i].link_target;
                target = target == '' ? '_target' : target;
            output += '<a class="tra' + visible + '" href="' + href + '" title="' + desc + '" target="' + target + '"><span><svg class="icon-flinks" style="width:13px;height:13px;fill:#aaa;position:relative;top:2px;"><use xlink:href="#icon-flinks"></use></svg></span> '+name+'</a>';
        }
        return output += '<div class="clear"></div>';
    }
}

PHP结构
主要是输出变量用于传值给JS然后在ajax的complete(){}里面过一遍后替换原有html结构.

<script type="text/javascript">
var bookmarks = {
    "nonhome":[
        <?php $bookmarks = get_bookmarks('hide_invisible=0');if($bookmarks){ foreach( $bookmarks as $bs ){ if ( $bs->link_rel ==  'contact' || $bs->link_rel == 'acquaintance' ) { continue; } ?>
            {"link_rel":"<?php echo $bs->link_url;?>","link_visible":"<?php echo $bs->link_visible;?>","link_url":"<?php echo $bs->link_url;?>","link_description":"<?php echo $bs->link_description;?>","link_target":"","link_name":"<?php echo $bs->link_name;?>"},
        <?php } } ?>
    ],    
    "home":[
        <?php $bookmarks = get_bookmarks('hide_invisible=0');if($bookmarks){ foreach( $bookmarks as $bs ){ if ( $bs->link_rel ==  'contact' ) { continue; } ?>
            {"link_rel":"<?php echo $bs->link_url;?>","link_visible":"<?php echo $bs->link_visible;?>","link_url":"<?php echo $bs->link_url;?>","link_description":"<?php echo $bs->link_description;?>","link_target":"","link_name":"<?php echo $bs->link_name;?>"},
        <?php } } ?>
    ]
};
</script>

上面是手动输出的html二维数组,若是通过wp本地化脚本wp_localize_script输出二维数组,则用下面这个php函数( 丢到functions.php )

// 友链判断-二维数组经过判断赋值给另一二维数组
function bookmarks($rel){
    $bms = array();
    $bookmarks = get_bookmarks('hide_invisible=0'); // 这个也是二维数组
    if( $rel == 'nonhome'){ //若非首页
        foreach( $bookmarks as $bs ){
            if ( $bs->link_rel ==  'contact' ||  $bs->link_rel == 'acquaintance' ) { continue;} // 若是contact或acquaintance则终止循环输出,意思是排除这两类关系输出
                $bms[] = array( 'link_rel'=>$bs->link_rel,'link_visible'=>$bs->link_visible,'link_url'=>$bs->link_url,'link_description'=>$bs->link_description,'link_target'=>'','link_name'=>$bs->link_name);
        }
    }
    if( $rel == 'home'){ //若是首页
        foreach( $bookmarks as $bs ){
            if ( $bs->link_rel ==  'contact' )  { continue;} // 若是contact则终止循环输出,意思是排除这类关系输出
                $bms[] = array( 'link_rel'=>$bs->link_rel,'link_visible'=>$bs->link_visible,'link_url'=>$bs->link_url,'link_description'=>$bs->link_description,'link_target'=>'','link_name'=>$bs->link_name);
        }
    }
    return $bms; // 返回二维数组
}

Ajax执行替换
最后别忘了在ajax异步加载完成后执行html_bookmarks().用该函数输出的结构替换原有结构.

$('#bookmarks').html(html_bookmarks());

最后说明

友链最多分几种:全站友链,首页友链,内页友链,对应关系可以设定为friend,acquaintance,contact,以此来进行判断.
当然,也可以直接在Ajax的Success{}里面直接替换,但是pushstate后退首页时就没法替换回来,所以只能走上面繁琐的步骤加入判断。
Cheers !