填写您的邮件地址,订阅我们的精彩内容:

wordpress分类列表函数wp_list_categories()

wp_list_categories()是wordpress中列出分类列表的重要函数,在《wordpress分类栏目(category)调用函数集锦》一文中讲到了wordpress中分类相关的函数集合,其中提及wp_list_categories()函数。本文主要通过对wp_list_categories()函数参数和使用方法的讲解,帮助读者使用该函数实现各种列出分类栏目列表的功能,同时给出一些简单的实例帮助理解。

wp_list_categories()函数的使用及参数:

<?php wp_list_categories( $args ); ?>

<?php
$args = array(
??? ‘show_option_all’??? => ,
??? ‘orderby’??????????? => ‘name’,
??? ‘order’????????????? => ‘ASC’,
??? ‘show_last_update’?? => 0,
??? ‘style’????????????? => ‘list’,
??? ‘show_count’???????? => 0,
??? ‘hide_empty’???????? => 1,
??? ‘use_desc_for_title’ => 1,
??? ‘child_of’?????????? => 0,
??? ‘feed’?????????????? => ,
??? ‘feed_type’????????? => ,
??? ‘feed_image’???????? => ,
??? ‘exclude’??????????? => ,
??? ‘exclude_tree’?????? => ,
??? ‘include’??????????? => ,
??? ‘hierarchical’?????? => true,
??? ‘title_li’?????????? => __( ‘Categories’ ),
??? ‘show_option_none’?? => __(‘No categories’),
??? ‘number’???????????? => NULL,
??? ‘echo’?????????????? => 1,
??? ‘depth’????????????? => 0,
??? ‘current_category’?? => 0,
??? ‘pad_counts’???????? => 0,
??? ‘taxonomy’?????????? => ‘category’,
??? ‘walker’???????????? => ‘Walker_Category’ );
?>

参数默认值如上,显示效果:

  • 所有列出分类不带链接
  • 按别名升序排列
  • 不显示分类下最新文章
  • 呈现样式没有制定
  • 不显示文章数
  • 只显示有文章的分类
  • 用分类描述作为该分类的title
  • 不限子分类分级状况
  • 用’current-cat’作为目前分类样式的class
  • 分层缩进显示
  • 无feed
  • 不排除任何分类
  • 以标题格式列出
  • 没有sql中的limit限制
  • 输出(echo)分类列表
  • 没有子分类深度限制
  • 列出所有分类
  • 列表用walk_category样式

参数列表:

show_option_all

(字符串)若该函数有一个style参数,那么非空的show_option_all值将会显示所有分类目录的链接。默认值为不显示链接。

orderby

(字符串)按字母顺序、ID或分类目录下的日志数量为分类目录排序。默认值为按分类名称排序。

有效值包括:

  • ID
  • name —— 默认值
  • slug
  • count
  • term_group

order

(字符串)为分类目录排序(升序或降序)。默认值为ascending(升序)。有效值包括:

  • ASC ——默认值
  • DESC

show_last_updated

(布尔型)是(TRUE)否(FALSE)显示最新更新日志的时间标记。默认值为FALSE。

有效值包括:

  • 1 (true)
  • 0(false)——默认值

style

(字符串)用以显示分类列表的样式表。值list以列表项显示分类目录;值none可生成常规显示方式(列表项由<br>标签隔开)。list为默认值(为无序列表生成列表项)。有效值包括:

  • list —— 默认值
  • none

show_count

(布尔型)准备显示每个分类目录下现有的日志总数。默认值为false(不显示日志数量)。有效值包括:

  • 1 (true)
  • 0(false)——默认值

hide_empty

(布尔型)不显示不含有文章的分类目录。默认值为true(隐藏空分类)。有效值包括:

  • 1 (true)——默认值
  • 0(false)

use_desc_for_title

(布尔型)设置是否将分类的说明插入到分类目录链接的title属性中(如<a title=”<em>Category Description</em>” href=”…)。默认值为true(插入分类说明)。有效值包括:

  • 1 (true)——默认值
  • 0(false)

child_of

(整数)只显示该参数指定的分类下的子分类。该参数无默认值。

feed

(字符串)显示每个分类目录的 rss-2订阅链接并设置链接文本。默认值为no text and no feed displayed不显示链接文本与feed)

feed_type

(字符串)

feed_image

(字符串)为某图片设置URI(通常为rss订阅图标),作为分类目录rss-2的订阅链接。该参数将改写feed参数。无默认值。

exclude

(字符串)从结果中排除一个或多个分类目录。该参数按ID升序排列分类列表,各分类用逗号隔开。参见下文中的示例。child_of参数自动设为false。

exclude_tree

(字符串)从结果中排除分类目录树。该参数引入于WP 2.7.1

include

(字符串)仅包含分类列表中的分类目录,该列表按ID升序排列分类目录,各分类用逗号隔开。参见下文中的示例“排除或包含分类目录”。

hierarchical

(布尔型)将子分类目录显示为内部列表项(内嵌于其父分类目录下)或内嵌列表。默认值为true(在父分类目录下显示其子分类目录)。有效值包括:

  • 1 (True)—— 默认值
  • 0 (False)

title_li

(布尔型)设置外部列表的标题和样式。默认值为”_Categories”。若该参数有值但为空,则不显示外部列表项。参见下文中的示例。

number

(整数)设置分类目录的数量并显示出来。这将使SQL LIMIT值被定义。默认值为无限数量。

echo

(布尔型)显示结果,或将结果保留在变量中。默认值为true(显示经过整理的分类目录)。该参数引入于WP 2.3。有效值包括:

  • 1 (true)——默认值
  • 0(false)

depth

(整数)该参数决定分类目录列表中分类目录层级允许的层数。默认值为0(显示所有分类及其子分类)。参数引入于WP 2.5

  • 0 —— 显示所有所有分类目录及其子分类目录(默认值)
  • -1 ——以平面形式(不缩进)显示所有分类目录(覆盖hierarchical参数)
  • 1 —— 只显示顶级分类目录
  • n —— n的值决定了分类目录层级的层数。

current_category

(整数)该参数允许用户在非分类存档页面上显示“当前分类”。正常情况下,当前分类只能在分类存档页面中设置。如果要将该参数用在其它地方,或希望用该参数高亮显示某个分类,会改变函数对“当前”分类的定义。该参数引入于WP 2.6

示例

包含或排除分类目录

若要按字母顺序排列分类目录,并且只包含ID为16、3、9、5的分类目录,可使用以下代码:

<ul>
<?php
wp_list_categories(‘orderby=name&include=3,5,9,16’); ?>
</ul>

下面的代码则按分类目录名称显示分类链接,并给出各分类目录下的日志总数,将ID为10的分类从列表中排除。

<ul>
<?php
wp_list_categories(‘orderby=name&show_count=1&exclude=10’); ?>
</ul>

显示或隐藏列表标题

title_li参数负责设定或隐藏由wp_list_categories生成的、分类目录列表的标题。默认标题为'(__(‘Categories’)’,将“Categories(分类目录)”作为列表标题。若title_li参数被设为控制,则不显示列表标题。下面的代码示例从列表中排除ID为4与7的分类目录并隐藏列表标题:

<ul>
<?php
wp_list_categories(‘exclude=4,7&title_li=’); ?>
</ul>

而下面这个示例, 只在列表中显示ID为9、5、23的分类,并将列表名称改为“Poetry” ,标题样式为<h2>:

<ul>
<?php
wp_list_categories(‘include=5,9,23&title_li=<h2>’ . __(‘Poetry’) . ‘</h2>’ ); ?>
</ul>

仅显示分类目录下的子分类

下面的代码为ID为8的分类目录下的子分类生成分类链接,并按ID进行排列;代码还显示出每个分类下的日志总数,隐藏链接title属性中的分类描述。注意:若某个父分类下没有日志,则不显示该父分类。

<ul>
<?php wp_list_categories(‘orderby=id&show_count=1
&use_desc_for_title=0&child_of=8’); ?>
</ul>

删除分类计数中的括号

show_count=1时,所有分类计数都用括号围绕。若要在不修改核心WordPress文件的情况下删除括号,可使用以下代码:

<?php
$variable = wp_list_categories(‘echo=0&show_count=1&title_li=<h2>Categories</h2>’);
$variable = str_replace(array(‘(‘,’)’), ”, $variable);
echo $variable;
?>

显示带有RSS订阅链接的分类目录

下面这个例子生成以名称排序的分类目录链接,显示每个分类下的日志总数以及各个分类的RSS订阅链接。

<ul>
<?php
wp_list_categories(‘orderby=name&show_count=1&feed=RSS’); ?>
</ul>

若要将链接换成订阅图标,可:

<ul>
<?php
wp_list_categories(‘orderby=name&show_count=1
&feed_image=/images/rss.gif’); ?>
</ul>

设计分类目录列表的样式

默认情况下,wp_list_categories()函数在一个标题为“Categories”的列表项(li)内生成一个嵌套的无序列表(ul)。

你可以将title_li参数设为空字符串,以此删除外部的列表项。你可以选择将输出结果包裹在一个数字编号的有序列表(ol)或无序列表中。如果完全不需要列表输出结果,将style参数设为none。

可以用下面这些CSS选择器设计输出结果的样式。

li.categories { … } /* outermost list item */
li.cat-item { … }
li.cat-item-7 { … } /* category ID #7, etc */
li.current-cat { … }
li.current-cat-parent { … }
ul.children { … }

主要参考来源:
http://codex.wordpress.org/Function_Reference/wp_list_categories
http://www.wordpress.la/codex-%E6%A8%A1%E6%9D%BF%E6%A0%87%E7%AD%BE-wp_list_categories%28%29.html

下面我简单说几句