函数描述
显示一个目录下拉选择表单元素。
使用方法
<?php wp_dropdown_categories( $args ); ?>
默认使用
<?php $args = array(
'show_option_all' => '',
'show_option_none' => '',
'option_none_value' => '-1',
'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,
'value_field' => 'term_id',
); ?>
默认情况下,以上代码显示方法为:
- 按分类id升序排列
- 不显示分类中的文章数量
- 不显示没有文章的分类目录
- 不排除任何分类目录
- 直接显示(echo)分类目录
- 表单中没有选中任何分类目录
- 不以分级结构显示分类目录
- 分类 ‘cat’ 为下拉选择的表单名称
- 分类表单css类 ‘postform’
- 没有深度限制No depth limit
- Tab index 为 0
- 使用的分类方法为 category
- 如果没有分类项目隐藏下拉选择
- 分局选择的分类项目输出分类id
参数
- $args
- (
string|array) (
可选) 覆盖默认参数的数组或查询字符串
返回值
- (string)
- 除非‘echo’ 参数设置为0,函数将直接显示HTML内容。
数组参数
- show_option_all
- (
string) (
optional) 显示 ‘ 所有分类目录‘ 选项的文本,下拉选项默认显示为 ‘
所有分类目录‘。- Default: ”
- show_option_none
- (
string) (
optional) 在下拉选择表单的顶部创建一个附加的<option>选项,以便不选择任何分类时使用。- Default: ”
- option_none_value
- (
string) (
optional) ‘ no categories‘ 选项的值。- Default: -1
- orderby
- (
string) (
optional) 用来给分类排序的数据列名称,可用的值为 ‘ID’, ‘name’ 与 ‘slug’- Default: ‘ID’
- order
- (
string) (
optional) 分类的排序方式,可用的值为 ‘ ASC‘ 和 ‘ DESC‘。- Default: ‘ASC’
- show_count
- (
boolean) (
optional) 是否隐藏分类中的文章数量。- Default: 0/False
- hide_empty
- (
boolean) (
optional) 是否隐藏没有文章的分类目录。- Default: 1/True
- child_of
- (
integer) (
optional) 显示某个分类项目的子分类项目,更多信息查看 get_categories().- Default: 0/False
- exclude
- (
string) (
optional) 排序的分类ID,更多信息查看 get_categories().- Default: ”
- include
- (
string array) (
optional) 包含的分类ID,更多信息查看 get_categories().- Default: ”
- exclude_tree
- (
string) (
required) 可选,排除某个分类和该分类的子分类。- Default:
None
- Default:
- echo
- (
boolean) (
optional) 直接显示下拉表单还是返回表单以便在PHP中使用。- Default: 1/True
- depth
- (
integer) (
optional) 子分类的最大深度,除非 hierarchical 设置为ture,次选项将被忽略。- Default: 0/False
- tab_index
- (
integer) (
optional) 下拉表单的 ‘ tabindex‘ 属性。- Default: 0/False
- name
- (
string) (
optional) 下拉表单元素的 ‘ name‘ 属性。- Default: ‘cat’
- id
- (
string) (
optional) 下拉表单元素的 ‘ id‘ 属性。- Default: ‘name’
- class
- (
string) (
optional) 下拉表单元素的 ‘ class‘ 属性。- Default: ‘postform’
- selected
- (
integer) (
optional) 下拉表单中,选中了哪个分类ID。- Default: 0/False
- hierarchical
- (
boolean) (
optional) 显示所有分类目录 (0/False) ,或显示分类目录的多少级子分类。- Default: 0/False
- pad_counts
- (
boolean) (
optional) 在显示的分类目录中包含该分类目录中文章的数量。如果’ show_counts‘ 和 ‘ hierarchical‘ 同时设置为true,此选项将自动被设置为true。- Default: 0/False
- taxonomy
- (
string) (
optional) 需要从中获取分类项目的自定义分类法,可用的值为 ‘ category‘, ‘ post_tag‘ 或其他已注册的自定义分类法。- Default: category
- hide_if_empty
- (
boolean) (
optional) 如果没有分类项目,是否隐藏下拉表单, (1/True) 为隐藏, (0/False) 为不隐藏。- Default: 0/False
- value_field
- (
string) (
optional) 下拉表单的选项值,可接受的选项为:’ term_id‘, ‘ name‘, ‘ slug‘, ‘ term_group‘, ‘ term_taxonomy_id‘, ‘ taxonomy‘, ‘ description‘, ‘ parent‘, ‘ count‘.- Default: term_id
使用示例
带提交按钮的下拉表单
显示一个有提交按钮的页面选择下拉表单,下拉表单中表现页面的层次关系。
<li id="categories">
<h2><?php _e( '分类目录:' ); ?></h2>
<form id="category-select" class="category-select" action="<?php echo esc_url( home_url( '/' ) ); ?>" method="get">
<?php wp_dropdown_categories( 'show_count=1&hierarchical=1' ); ?>
<input type="submit" name="submit" value="view" />
</form>
</li>
使用 JavaScript 而不是提交按钮提交下拉表单
下面的代码将显示一个分类下拉表单,选择某个分类时,页面将跳转到这个分类存档页面。
<li id="categories"><h2><?php _e( '按分类过滤' ); ?></h2>
<?php wp_dropdown_categories( 'show_option_none=选择分类' ); ?>
<script type="text/javascript">
<!--
var dropdown = document.getElementById("cat");
function onCatChange() {
if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
location.href = "<?php echo esc_url( home_url( '/' ) ); ?>?cat="+dropdown.options[dropdown.selectedIndex].value;
}
}
dropdown.onchange = onCatChange;
-->
</script>
</li>
使用 JavaScript 而不是提交按钮提交下拉表单(2)
此示例中使用了显示参数 (echo=0) ,在Javascript代码中插入了简单的 preg_replace。这样,即使浏览器不支持JavaScript,下拉表单也能退回到标准的HTML表单显示。
<li id="categories">
<h2><?php _e( '按分类过滤' ); ?></h2>
<form id="category-select" class="category-select" action="<?php echo esc_url( home_url( '/' ) ); ?>" method="get">
<?php
$args = array(
'show_option_none' => __( '选择分类' ),
'show_count' => 1,
'orderby' => 'name',
'echo' => 0,
);
?>
<?php $select = wp_dropdown_categories( $args ); ?>
<?php $replace = "<select$1 onchange='return this.form.submit()'>"; ?>
<?php $select = preg_replace( '#<select([^>]*)>#', $replace, $select ); ?>
<?php echo $select; ?>
<noscript>
<input type="submit" value="View" />
</noscript>
</form>
</li>
故障排除
下拉选项为空
默认情况下,wp_dropdown_categories 将返回至少有一篇文章的分类,如果你想覆盖此设置,可以设置 hide_empty 参数为 false (“0”)。
示例:
<?php wp_dropdown_categories( 'hide_empty=0' ); ?>