友情链接 互惠互利
随着我的精心照顾,不得言博客终于得到了不断壮大,流量也渐渐提高。随之而来需要我去面对的就是友情链接问题。不得言博客友情链接申请的申请条件,十分简单,只要是以原创为主,更新及时,不反国家、反人民,整个博客必须给我“青天白日红太阳,祖国和人民都好,你也很好”的感觉,那就成了。合作归合作,有个问题必须丑话说在前头。
抛开网站大小、流量高低、搜索引擎优化等方面的成分,咱们之间既然做了友情链接就是对等的。决不能出现我给你全站链接,而你仅仅给我个首页链接,或干脆友情链接页面的链接。如果加入上面抛开的成分而言,起码对等才好。友情友情,提倡礼尚往来,平起平坐。因此摆在不得言面前的就是:我需要让我的WordPress博客支持首页链接、全站链接、站内链接、友情链接页面链接,四种链接方式。
搜寻友情链接插件不是一两天了,早在一周前就开始寻找,却苦于没有合乎要求的,终日为此事闷闷心头。最后不得已我只好自己DIY一下了。这则日志则是我DIY开始的准备工作。首先是WordPress提供的友情链接函数:wp_list_bookmarks(),下面是这个函数参数,以及具体的使用办法。
06 | 'exclude_category' => '' , |
07 | 'category_name' => '' , |
08 | 'hide_invisible' => 1, |
12 | 'title_li' => __( 'Bookmarks' ), |
13 | 'title_before' => '<h2>' , |
14 | 'title_after' => '</h2>' , |
15 | 'category_orderby' => 'name' , |
16 | 'category_order' => 'ASC' , |
18 | 'category_before' => '<li id="%id" class="%class">' , |
19 | 'category_after' => '</li>' |
WordPress的wp_list_bookmarks函数
上述代码你可以在文件夹wp-includes里的bookmark-template.php文件里找到。函数在第198行。上面代码是我复制于此函数的部分代码,为大家看的方便我对数组进行了重新排版。它是使用wp_list_bookmarks()前必须掌握的精髓。在此函数上面(134-197行)是函数的使用说明,讲述了此函数的使用注意事项及技巧,我相信很多朋友看到英文头就大,这里我给大家翻译一下,并加入官方的一些介绍。
orderby:字符串类型,用于指定以什么方式排序,默认为空则以“NAME”排序。你可以使用下列参数进行排序:id、url、name、target、owner、updated、rating、rel、notes、rss、length、rand、description。
1 | <?php wp_list_bookmarks( 'orderby=id&order=asc' ); ?> |
3 | <?php wp_list_bookmarks( 'orderby=id&order=desc' ); ?> |
运行一下就能得知,此是设定以什么类型进行正序还是倒序排列,排列是在类别内部。也就是说这个是友情链接分类里的链接(书签)排序方式。
order:字符串型,设置升降序的排列方式,默认为空时以正序(ASC)排列。参数ASC、DESC。
limit:INT类型,后面制定每个分类里的链接数量,如下面例子limit=2将让我的三个分类,每个分类里有两个链接,默认显示所有链接。
1 | <?php wp_list_bookmarks( 'limit=2' ); ?> |
扩展,如果再在后面加入Order排序构成“limit=2&order=desc”将会是什么效果呢?是的,你一定发现,这里是对所有分类的链接进行各自排列后,截取两个链接予以显示,而不是先读取两个然后排序。因此你友情链接多的时候,请注意这一点,别迷糊了。
category:字符串型,用于显示指定的分类友情链接,多分类用半角字符“,”分割。默认显示所有分类。举例:
1 | <?php wp_list_bookmarks( 'category=2,3' ); ?> |
上面的例子是让你的友情链接只显示ID为2和3的,其他不予理睬。这里请注意,系统安装好以后就没有ID为1的分类,系统的默认分类已经是2了;还有在显示分类时,请实现确定分类的ID。
exclude_category:字符串类型,指定隐藏(不显示)的分类,相当于category的取反。多分类用半角字符“,”分割。默认不隐藏。举例:
1 | <?php wp_list_bookmarks( 'exclude_category=2,3' ); ?> |
这个和上面的例子正好相反,它让你指定的友情链接分类隐藏起来。这个在你分类特别多的时候有奇效。这里足以体现WordPress设计的体贴入微。
category_name:字符串类型,用于指定显示某一个分类的书签标题名称,默认为显示所有。这个我不知道怎么用,谁能告诉我调用方式,请留言,谢谢。
categorize:是否显示分类友情链接(书签)标题,0是不显示,1是显示,默认是1显示。实例举证:
1 | <?php wp_list_bookmarks( 'categorize=0' ); ?> |
修改成这样,你的友情链接将没有分类标题。同样“categorize=1”将让你的标题重新出来,当然categorize的默认值就是1,因此可以“categorize=”或直接忽略掉。
title_before、title_after:title_before用于定义友情链接(书签)源代码前半部分,默认值是“<h2>”;title_after用于定义友情链接(书签)源代码后半部分,默认值是“</h2>”。实例举证:
1 | <?php wp_list_bookmarks( 'title_before=<h1>&title_after=</h1>' ); ?> |
这样修改,将使你的友情链接(书签)变成H1的大标题,查看HTML源代码,将会是“<h1>分类链接标题</h1>”。请注意title_before和title_after请呼应,就如同本例中使用“<h1></h1>” 呼应,不然可能会造成布局错乱。
title_li:自定义友情链接(书签)标题。只有在categorize=0时才能使用。达到自定义的目的,这里可以是图片哦。实例举证:
1 | <?php wp_list_bookmarks( 'categorize=0&title_li=BUDEYAN LINKS' ); ?> |
2 | <?php wp_list_bookmarks( 'categorize=0&title_li=<img src="' .get_bloginfo("stylesheet_directory ").'/images/blogroll.gif" alt= "blogroll" />'); ?> |
第一种方式,将让你的友情链接拥有一个自定义的标题“BUDEYAN LINKS”,而第二个则让你的友情链接(书签)拥有一个漂亮的图片标题。get_bloginfo(“stylesheet_directory”)是获得当前模板的目录,在测试第二步时,请确保您的图片存在,并保证路径无错。
category_orderby:设置链接以什么方式排序,可以使用参数:name、id、slug、count,需和order一起使用。实例举证:
1 | <?php wp_list_bookmarks( 'category_orderby=id&order=desc' ); ?> |
2 | <?php wp_list_bookmarks( 'category_orderby=&order=' ); ?> |
上面这种方式,将让您的友情链接(书签)以ID方式倒序排列,即后添加的在前面。第二例子中,将以name正序排列,后添加的在后面,这是系统默认方式(因此你如此修改,看不到变化,更是多此一举的做法——咱们在这里举例是为了好理解)。
category_before和after自定义使用
category_before、category_after:category_before指定友情链接(书签)分类的HTML代码前面内容,category_after指定链接分类的HTML代码后面内容。如左图所示,我定义了一个类别为diy的DIV,用下面的例子就能实现其效果,大家可以看到,它把友情链接分类和分类里的链接一起放到了我定义的DIV里。
1 | <?php wp_list_bookmarks( 'category_before=<div class="diy">&category_after=</div>' ); ?> |
上面例子中,让每个友情链接分类作为一个整体放进<div ></div>标签,可以自定义diy样式里,来控制显示。这里也是让你的友情链接两列,三列排列的精髓。我将在更深入修改友情链接部分探讨。
category_order:设置链接分类的正序、倒序排列,默认ASC,可选参数:ASC、DESC。举例:
1 | <?php wp_list_bookmarks( 'category_order=asc' ); ?> |
3 | <?php wp_list_bookmarks( 'category_order=desc' ); ?> |
上面两个测试,第一个不会有啥变化,因为是采用默认方式,第二个将正好相反,是倒序排列,大家可以把其和上面category_before、category_after例子配合使用,多多动手,这里我就不再骜述。