
WordPress的链接模块默认只能显示所有的链接,满足不了复杂的人际关系网。同时强大的WordPress又内置了相关的函数供我们自定义,下面hankcs来介绍一下如何让WordPress显示链接分类。
要修改链接,先看看有什么函数可用。wp_list_bookmarks 是 WordPress 中用来显示友情链接的函数,已经有人用中文讲解了该函数的参数设置和使用,待会儿会给大家列出来。目前大部分主题都用 wp_list_bookmarks 这个函数来显示友情链接,比如说我的主题就是,打开footer.php,会看到这么一段:
<div class="links">
<h3 class="title"><strong class="right"> <a href="<?php echo rewrite_url('add_links'); ?>" title="申请链接" >申请链接</a> | <a href="<?php echo rewrite_url('links'); ?>" title="所有链接" >所有链接</a> </strong>友情链接</h3>
<ul>
<?php echo wp_list_bookmarks('title_li=&title_before=&title_after=&categorize=0&orderby=id&order=DESC&category=&echo=0'); ?>
<div class="clear"></div>
</ul>
<div class="clear"></div>
</div>
上面的代码中的<?php echo wp_list_bookmarks('title_li=&title_before=&title_after=&categorize=0&orderby=id&order=DESC&category=&echo=0'); ?>使用了许多参数,这些参数的作用请查阅下表:
//按啥排序
'orderby' => 'name',
//升序、降序
'order' => 'ASC',
//输出多少条
'limit' => -1,
//指定分类id
'category' => '',
//排除分类id
'exclude_category' => '',
//指定要显示的分类名,貌似不好用版本3.4.1
'category_name' => '',
//是否隐藏后台设置的私密链接
'hide_invisible' => 1,
//是否显示最新
'show_updated' => 0,
//是显示还是返回字符串
'echo' => 1,
//用于设置连接是否按照各自的分类显示
'categorize' => 1,
//标题名字
'title_li' => __('Bookmarks'),
//标题前代码
'title_before' => '<h2>',
//标题后代码
'title_after' => '</h2>',
//分类排序规则
'category_orderby' => 'name',
//升降序
'category_order' => 'ASC',
//分类的css中的class值
'class' => 'linkcat',
//分类前html代码%id和%class是系统默认占位符
'category_before' => '<li id="%id" class="%class">',
//分类后HTML代码
'category_after' => '</li>'
有了这份说明就可以完成基础的定制了,但是想要实现检索所有的分类名称还是需要动用SQL语句的:
SELECT T1.name AS name
FROM $wpdb->terms T1,
$wpdb->term_taxonomy T2
WHERE T1.term_id = T2.term_id
AND T2.taxonomy = 'link_category'
检索出数据之后再将其遍历输出,最终的代码就是:
<div class="links">
<h3 class="title"><strong class="right"> <a href="<?php echo rewrite_url('add_links'); ?>" title="申请链接" >申请链接</a> | <a href="<?php echo rewrite_url('links'); ?>" title="所有链接" >所有链接</a> </strong>友情链接</h3>
<?php
$linkcats = $wpdb->get_results("SELECT T1.name AS name FROM $wpdb->terms T1, $wpdb->term_taxonomy T2 WHERE T1.term_id = T2.term_id AND T2.taxonomy = 'link_category'");
if($linkcats) : foreach($linkcats as $linkcat) : ?>
<?php echo $linkcat->name; ?>
<div class="box linkcat">
<ul>
<?php
$bookmarks = get_bookmarks('orderby=rand&category_name=' . $linkcat->name);
if ( !empty($bookmarks) )
{
foreach ($bookmarks as $bookmark)
{
echo '<li><a href="' . $bookmark->link_url . '" title="' . $bookmark->link_description . '">' . $bookmark->link_name . '</a></li>';
}
}
?>
</ul>
<?php endforeach; endif; ?>
</div>
</div>
分类之后的效果:

顺便附录一份详细的说明,供大家做高级的定制:
下面我来一一介绍每个参数的用途:
categorize
布尔型,用于设置连接是否按照各自的分类显示:
1 (默认,根据链接的分类显示)
0 (不按照分类,显示全部)
category
字符串型,后面就直接 “=链接分类ID号”,那么就显示这个分类下的链接。如果没有指定的话就显示所有的链接。
category_name
字符串型,如果后面 “=某个链接分类的名称” 那么就会在该链接分类前显示分类的名称,如果这里留空的话则会显示所有链接分类的分类名称(即默认的形式)。
category_before
字符串型,位于链接分类之前的文字或代码。默认的设置是:
category_after字符串型,位于链接分类之后的文字或代码。默认的设置是:
class
字符串型,每一个链接的分类都会有一个 “class” 属性(从上面的代码就能看出),默认是:linkcat
category_orderby
字符串型,链接分类的排序方式,按照名词或者ID。
‘name’ (默认)
‘id’
category_order
字符串型,链接分类的升降序排列方式:
ASC (默认)
DESC
title_li
字符串型,链接标题的头文字或代码,默认是:Bookmarks,并且它控制连接是否按照列表的方式排列。
title_before 和 title_after
顾名思义,它们就是连接标题头前后的文字或代码,默认是 h2 标签
show_private
布尔型,是否显示私有链接。
1 (是)
0 (不是 – 默认)
include
字符串型,输出指定 ID 的 Blogroll 的分类链接,各个 ID 之间用半角的 “,” 分开。默认显示所有的 Blogroll 分类。
exclude
字符串型,将指定 ID 的 Blogroll 分类链接从整个链接列表中排除,各个 ID 之间用半角的 “,” 分开。默认是什么都不排除。
orderby
字符串型,Blogroll 的排列方式(默认是根据名称排序,除非将这个值留空),即根据我们在 WP 后台链接设置界面下的那些参数来进行排序:
1'id'2'url'3'name'4'target'5'description'6'owner'7'rating'8'updated'9'rel' – 按设定的关系排列10'notes'11'rss'12'length' – 连接名称的长度设定13'rand' – 随机排列显示
order
字符串型,设置升降序的排列方式
ASC (默认)
DESC
limit
整型,设置输出链接条数的最大值。默认值是”-1″,输出全部。
between
字符串型,每个连接、图片和描述之间的文字或代码,默认是 “n” 换行。
show_images
布尔型,是否允许显示 Blogroll 下链接的对应图片。
1 (允许 – 默认)
0 (不允许)
show_description
布尔型,是否允许显示每个链接的描述。
1 (允许)
0 (不允许 – 默认)
show_rating
布尔型,是否允许显示链接的等级。
1 (允许)
0 (不允许 – 默认)
show_updated
布尔型,是否允许显示最近更新后的时间戳。
1 (允许)
0 (不允许 – 默认)
hide_invisible
布尔型,是否显示所有的链接,甚至是被管理员设为不可见的链接,默认允许显示。
1 (允许 – 默认)
0 (不允许)
get_links 函数的参数:
1get_links(category, 'before', 'after','between', show_images,'order',show_description,show_rating, limit,show_updated, echo);
==========================================================
其中catagory为友情链接显示模式;before为显示在友情链接前端参数,after为后;between为每条友情链接之间的参数。show_images是否显示Logo,order排列方式;show_description显示链接描述,show_rating显示等级,limit显示链接个数,show_updated显示最后一次更新时间。
order是按照什么排序,可以包括:
1'id'2'url'3'name'4'target'5'category'6'description'7'owner' – User who added link through Links Manager.8'rating'9'updated'10'rel' – Link relationship (XFN).11'notes'12'rss'13'length' – The length of the link name, shortest to longest.
1<?php get_links('2', '<li>', '</li>', '<br />', FALSE, 'id', FALSE, FALSE, -1, FALSE); ?>
意思是显示分类ID为2的链接,以链接的ID排序,不显示链接的Logo,不显示链接的描述,不显示等级,分类2下的链接全部显示,不显示最后一次更新时间。把上面的2换成-1则是显示全部链接。
这个的缺陷就是不能显示链接分类目录名,要自己添加,而wp_list_bookmarks 函数就不需要这么做,正因为这样的方便,wp_list_bookmarks 函数取代get_links 函数就理所当然了。
参数表转自翔子的博客。
码农场
像我爱搜罗网那样显示指定链接分类下的链接如何实现
谢谢站长。学习了!谢谢谢谢!!!