WordPress的wp_dropdown_categories()函数可以让我们以下拉式框的方式显示所分类目录标签,下面来看看这个标签函数的用法。
说明
该标签在一个没有提交按钮的选择框(如下拉式选框)中展示分类目录列表。
用法
<?php?wp_dropdown_categories(?$args?);??>
默认用法
?<?php?$args?=?array( ????'show_option_all'????=>?, ????'show_option_none'???=>?, ????'orderby'????????????=>?'ID',? ????'order'??????????????=>?'ASC', ????'show_count'?????????=>?0, ????'hide_empty'?????????=>?1,? ????'child_of'???????????=>?0, ????'exclude'????????????=>?, ????'echo'???????????????=>?1, ????'selected'???????????=>?0, ????'hierarchical'???????=>?0,? ????'name'???????????????=>?'cat', ????'id'?????????????????=>?, ????'class'??????????????=>?'postform', ????'depth'??????????????=>?0, ????'tab_index'??????????=>?0, ????'taxonomy'???????????=>?'category', ????'hide_if_empty'??????=>?false?);??>
默认情况下的显示状态:
- 升序排列分类目录ID
- 不显示最新更新
- 不显示分类目录下的文章总数
- 不显示“空”分类
- 不排除任何分类
- 显示(回应)分类目录
- 选项框中不选中任何分类
- 不以分层结构显示分类目录
- 为列表命名为“cat”
- 将列表赋值给’postform’类
- 无层数限制
参数
show_option_all
(字符串)生成下拉式选项框的HTML,从而允许你选定所有分类目录。
show_option_none
(字符串)生成下拉式选项框的HTML,从而允许你不选定任何分类目录。
orderby
(字符串)按某种标准为分类目录排序。有效值包括:
- ‘ID’ ——默认值
- ‘name’
order
(字符串)为分类目录排序(升序或降序)有效值包括:
- ‘ASC’(升序) ——默认值
- ‘DESC’(降序)
show_count
(布尔型)是否显示每个分类目录下现有的日志总数。有效值包括:
- 1 (true)
- 0(false)——默认值
hide_empty
(布尔型)是否隐藏(不显示)不含有文章的分类目录。有效值包括:
- 1 (true)——默认值
- 0(false)
child_of(整数)
只显示某一个分类的子分类;用该分类的ID作为参数值。无默认值。
exclude
(字符串)将要排除的分类目录的ID列表,各ID用逗号隔开。例如, ‘exclude=4,12′ 表示不显示或返回ID为4和12的分类。默认值为不排除任何分类。
exclude_tree
(字符串)定义需要排除的父分类ID列表,各ID用逗号隔开。用该参数排除某个父分类目录及其所有子分类目录。因此 ‘exclude_tree=5′ 可排除ID为5的父分类及其所有子分类。该参数引入于WP 2.7.1。
echo
(布尔型)显示结果(TRUE),或返回结果以供PHP使用(FALSE)。默认值为TRUE。
- 1 (true)——默认值
- 0(false)
selected
(整数)在显示框中选中/显示的分类目录的ID。默认为不选中任何分类目录。
hierarchical
(布尔型)以分层形式显示分类目录(子分类目录内嵌于其父分类目录下)。默认值为FALSE。有效值包括:
- 1 (True)—— 默认值
- 0 (False)
name
(字符串)下拉式选框被赋予的名称。默认为cat’。
class
(字符串)被赋给下拉式选项框的类,默认为’postform’。
depth(整数)
该参数决定wp_list_pages所生成的分类目录列表中所允许的分类层级的层数。默认值为0(显示包括子分类目录在内的所有分类目录)。该参数引入于WP?2.5。
- 0 —— 显示所有分类目录和他们的子分类目录(默认)
- -1 —— 以平面(不缩进)方式显示所有分类目录和他们的子分类目录
- 1 —— 只显示顶级分类目录
- n —— 该值表示可以缩进显示的分类目录层数。
示例
带有提交按钮的下拉式选项框
在WordPress侧边栏的无序列表中,以HTML格式显示带有层级的分类目录下拉式列表,有提交按钮,给出各分类目录下的文章总数。
<li id="categories"> <h2><?php _e('Categories:'); ?></h2> ?? <form action="<?php bloginfo('url'); ?>" method="get"> ?? <?php wp_dropdown_categories('show_count=1&hierarchical=1'); ?> ?? <input type="submit" name="submit" value="view" /> ?? </form> </li>
用JavaScript显示一个没有提交按钮的下拉式选项框
下面这个示例摘自WordPress论坛上的一个帖子,该示例借用了show_option_none参数。
<li id="categories"><h2><?php _e('Posts by Category');??></h2> <?php wp_dropdown_categories('show_option_none=Select category');??> <script type="text/javascript"><!-- ??? var dropdown = document.getElementById("cat"); ??? function onCatChange() { if ( dropdown.options[dropdown.selectedIndex].value > 0 ) { location.href = "<?php echo get_option('home'); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value; } ??? } ??? dropdown.onchange = onCatChange; --></script> </li>
用JavaScript显示一个没有提交按钮的下拉式选项框
下面这段代码使用了echo参数(echo=0)。在JavaScript代码中插入一个简单的?preg_replace。即使没有JavaScript,代码也可正常运行(提交按钮被noscript标签包裹)。
<li id="categories"> <h2><?php _e('Posts by Category');??></h2> <form action="<?php bloginfo('url');??>/" method="get"> <div> <?php $select = wp_dropdown_categories('show_option_none=Select category& show_count=1&orderby=name&echo=0'); $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange=' return this.form.submit()'>", $select); echo $select; ?> <noscript><div><input type="submit" value="View" /></div></noscript> </div></form> </li>
历史记录
- 始见于WordPress 2.1.0版本
源文件
wp_dropdown_categories()位于 wp-includes/category-template.php