有人问我怎么实现类似我博客的友情链接显示方式,就是只有部分显示在首页,而其他的则没有,而是显示在了博客链接页面了。
其实这个很简单,稍稍对链接加点定义就可以实现这样的效果,wp_list_bookmarks函数和get_links函数。
现在更多的人使用的wp_list_bookmarks函数吧,因为他更加的强大,他的参数设置比较的自由,而不像get_links函数有个特定的语句。
有很多人只想要结果,却不愿看看是如何实现,然后冠上一个我不懂代码了事。其实只要稍稍看一下,不懂代码的人也完全可以实现想要的链接显示效果,今天我们说的不是链接显示的样式,而是究竟怎么显示我想显示出来的链接,比如我首页只想显示一部分置首页的链接,而不是全部,由于链接分类的ID不一样,所以很多主题都是显示全部链接,这也导致了很多人想修改原主题链接显示的模式。
以我博客首页底部的置顶链接为例,首先,你要建链接分类,比如置首页的分一类,其他的再分一类。然后查看他们的分类ID。点击分类的标题,进编辑页面,浏览器上面的链接在最后类似“cat_ID=2”的,则2就是这个分类的ID。
那么我单独调用则可以写成
<?php wp_list_bookmarks('orderby=id&categorize=0&category=2&title_li='); ?>
他的意思是显示分类为2的链接,以链接的ID排序,并且不显示链接分类目录名。
同样的用get_links函数则可以写成
<?php get_links(2, '<li>', '</li>', '', TRUE, 'id', FALSE); ?>
我之前用的get_links函数,现在都换成了wp_list_bookmarks 函数。
比如我先按分类显示所有友情链接,类似我博客链接页面。
<?php wp_list_bookmarks('orderby=id&category_orderby=id'); ?>
他的意思是显示所有友情链接,链接分类按ID排序,并且显示链接分类目录名。
如果使用的参数较多,可以使用下面的写法,这样看起来比较清晰。
<?php wp_list_bookmarks (
array (
'categorize' => '1', //链接分类:1显示,0不显示
'category_orderby' => 'id', //链接分类排序,可用:name、id、slug、count
'show_name' => '1', //链接名称:1显示,0不显示
'show_images' => '1', //链接图片:1显示,0不显示
'show_description' => '1', //链接描述:1显示,0不显示
'category_before' => '',
'category_after' => '' ,
'title_li' => __('Bookmarks'),
'title_before' => '<h2 class="links-title">',
'title_after' => '</h2>',
'before' => '<li class="links-item">',
'after' => '</li>',
'between' => '',
'link_before' => '<span>',
'link_after' => '</span>',
'orderby' => 'link_id', //友情链接排序,可用:link_id、rand、url、name、target、description、owner、rating、updated、rss、length 等
) ); ?>
</div>
他的意思是显示所有可见友情链接,链接分类按ID排序,并且显示链接分类目录名,同时显示链接标题、图片、描述。在友情链接列表的标题前后添加h2标签,友情链接的排序方式是链接的id。
如果要用get_links函数写的话,想实现这样的效果就复杂一些了,要一个分类一个分类的写,分类很多的话,写的代码就很冗余了,所以还是wp_list_bookmarks函数来的更加方便。
其实你把函数中参数的意思看明白的话,想写出什么样的链接显示方式都是可以的,重要的还是大家的发挥,符合自己的才是最好的。
=======================华丽的分割线=======================
以下来自网络,作者不详。
wp_list_bookmarks 函数的默认参数是:
'orderby' => 'name'
'order' => 'ASC'
'limit' => -1
'category' => ''
'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'
'class' => 'linkcat'
'category_before' => '<li id="%id" class="%class">'
'category_after' => '</li>'
下面我来一一介绍每个参数的用途:
categorize
布尔型,用于设置连接是否按照各自的分类显示:
1 (默认,根据链接的分类显示)
0 (不按照分类,显示全部)
category
字符串型,后面就直接 “=链接分类ID号”,那么就显示这个分类下的链接。如果没有指定的话就显示所有的链接。
exclude_category
字符串值,默认为空
要排除的友情链接分类ID,多个ID用逗号分隔,默认不排除任何分类。
category_name
字符串型,如果后面 “=某个链接分类的名称” 那么就会在该链接分类前显示分类的名称,如果这里留空的话则会显示所有链接分类的分类名称(即默认的形式)。
category_before
字符串型,位于链接分类之前的文字或代码。默认的设置是:<li id="[category id]">
category_after
字符串型,位于链接分类之后的文字或代码。默认的设置是:</li>
class
字符串型,每一个链接的分类都会有一个 “class” 属性(从上面的代码就能看出),默认是:linkcat
category_orderby
字符串型,链接分类的排序方式,默认值:name。
友情链接的分类排序
name:以友情链接分类名称排序
id:以友情链接分类ID排序
slug:以友情链接的分类别名排序
count:以友情链接分类下的链接数量排序
category_order
字符串型,链接分类的升降序排列方式,默认值:ASC
友情链接分类排序顺序
ASC:升序
DESC:降序
title_li
字符串型,链接标题的头文字或代码,默认是:Bookmarks,并且它控制连接是否按照列表的方式排列。
title_before 和 title_after
顾名思义,它们就是连接标题头前后的文字或代码,默认是 h2 标签。当categorize为1时,title_before和title_after指定友情链接分类名称前后的字符,当categorize为0时title_before和title_after没有作用。
show_private
布尔型,是否显示私有链接。
1 (是)
0 (不是 – 默认)
是否显示私密的链接分类,但我在后台并没有找到链接分类的私密设置选项,虽然链接可以设置为私密链接,但show_private的值并不影响私密链接的输出,影响私密链接输出的参数是hide_invisible,下面会介绍。
include
字符串型,输出指定 ID 的 Blogroll 的分类链接,各个 ID 之间用半角的 “,” 分开。默认显示所有的 Blogroll 分类。
exclude
字符串型,将指定 ID 的 Blogroll 分类链接从整个链接列表中排除,各个 ID 之间用半角的 “,” 分开。默认是什么都不排除。
orderby
字符串型,默认值:name。友情链接的排列方式(默认是根据名称排序,除非将这个值留空),即根据我们在 WP 后台链接设置界面下的那些参数来进行排序:
link_id:友情链接的ID
url:按链接的URL排序
name:友情链接的名称
target:按“目标”设置排序
description:按描述排序
owner:按添加链接的用户排序
rating:按评分排序
updated:按更新时间排序,由于这个更新时间并不是指本地修改的时间,而是基于pingomatic的更新,一般这个时间都是:0000-00-00 00:00:00,所以按updated排序没有任何意义。
rel:按链接关系(XFN)排序
notes:按备注排序
rss:按RSS地址排序
length:按链接名称的长度排序
rand:随机排序
order
字符串型,设置升降序的排列方式
ASC (默认)
DESC
limit
整型,设置输出链接条数的最大值。默认值是”-1″,输出全部。
between
字符串型,每个连接、图片和描述之间的文字或代码,默认是 “n” 换行。
show_images
布尔型,是否允许显示 Blogroll 下链接的对应图片。
1 (允许 – 默认)
0 (不允许)
show_description
布尔型,是否允许显示每个链接的描述。
1 (允许)
0 (不允许 – 默认)
show_name
布尔型,是否显示链接的名称。
1 (允许)
0 (不允许 – 默认)
show_rating
布尔型,是否允许显示链接的等级。
1 (允许)
0 (不允许 – 默认)
show_updated
布尔型,是否允许显示最近更新后的时间戳。
1 (允许)
0 (不允许 – 默认)
hide_invisible
布尔型,是否显示所有的链接,甚至是被管理员设为不可见的链接,默认允许显示。
1 (允许 – 默认)
0 (不允许)
echo
布尔值,默认值:1
是否输出结果,如果为0,只返回结果而不输出。
==========================================================
get_links 函数的参数:
get_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是按照什么排序,可以包括:
'id'
'url'
'name'
'target'
'category'
'description'
'owner' - User who added link through Links Manager.
'rating'
'updated'
'rel' - Link relationship (XFN).
'notes'
'rss'
'length' - The length of the link name, shortest to longest.
<?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 函数就理所当然了。
好了,其他的就靠CSS去控制了,当然更重要的是大家写出符合自己的友情链接显示方式才是王道。
搞定了,感谢
很详细的介绍,博主非常用心分享!
不知道有没有链接样式
用了,很给力
不错,谢谢威老师分享,有时间试试
讲的很全面,顶你!
我想把友情链接象你的一个显示成https://www.weisay.com/blog/link
我怎么弄都弄不了..可以教一下我怎么生成link这个目录吗?
我想友情链接横着显示怎样实现呢?不想竖着显示
还没弄明白,有点难呀
通过函数实现呀~~!
额,有点晕啊。。。。
这个很有用,记下了。
学习了 ,好东西呀
向博主学习了,谢谢
有个小问题 那个between是不是只有默认/n换行啊 博主主题里用了title_li最终的形式 但是看看您的源码 标签都是换行的 能不能不换行啊 就像连续下来的 试了很多方法不行 虚心求教!
@Robin你说的是我link页面么?
那个换行都是通过CSS控制的
@William谢谢 博主 总是在您的博客里发现问题 呵呵 都是自己解决了 希望weisay越走越好…呵呵… 我也要努力了
没看懂。。