wp_dropdown_categories()
默认情况下,将按id列出。它利用get_terms()
如果您希望过滤$output
超出参数允许的范围。(我在下面添加了来源)。
它具有以下参数:
显示用于显示所有类别的“show\\u option\\u all”(字符串)文本<要显示的“show\\u option\\u none”(字符串)文本,用于不显示类别
\'option\\u none\\u value\'(字符串)在未选择类别时使用的值\'orderby\' (字符串)Which column to use for ordering categories. See get_terms() for a list of accepted values. Default \'id\' (term_id).“顺序”(字符串)是按升序还是降序排列术语。接受“ASC”或“DESC”。默认“ASC”“显示计数”(bool | int)是否包括post计数。接受0、1或其布尔等价项。默认值0
\'hide\\u empty\'(bool | int)是否隐藏没有任何帖子的类别。接受0、1或其布尔等价项。默认值1\'child\\u of\'(int)要检索的子项的项ID。请参阅get\\u terms()。默认值0\'exclude\'(数组|字符串)数组或要排除的术语ID的逗号/空格分隔字符串。如果$include非空,则忽略$exclude。默认空数组“echo”(bool | int)是回显还是返回生成的标记。接受0、1或其布尔等价项。默认值1“层次”(bool | int)是否遍历分类层次。接受0、1或其布尔等价项。默认值0“深度”(int)最大深度。默认值0
选择元素的“tab\\u index”(int)选项卡索引。默认值0(无tabindex)\'id\' (字符串)的值\'id\' attribute of the select element. 默认值为$name\'class\' (字符串)的值\'class\' attribute of the select element. 默认“postform”应选择的选项的“选定”(int | string)值。默认值0应用于填充选项元素的“value”属性的“value\\u field”(字符串)术语字段。接受任何有效的术语字段:“term\\u id”、“name”、“slug”、“term\\u group”、“term\\u taxonomy\\u id”、“taxonomy”、“description”、“parent”、“count”。默认“term\\u id”要检索的一个或多个类别的“分类法”(字符串|数组)名称。默认“类别”\'hide\\u if\\u empty\'(bool)True,如果找不到类别,则跳过生成标记。默认为false(即使找不到类别,也创建select元素)\'required\'(bool)元素是否应该具有HTML5的“required”属性。默认值为false<人力资源>
function wp_dropdown_categories( $args = \'\' ) {
$defaults = 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,
\'option_none_value\' => -1,
\'value_field\' => \'term_id\',
\'required\' => false,
);
$defaults[\'selected\'] = ( is_category() ) ? get_query_var( \'cat\' ) : 0;
// Back compat.
if ( isset( $args[\'type\'] ) && \'link\' == $args[\'type\'] ) {
_deprecated_argument( __FUNCTION__, \'3.0.0\',
/* translators: 1: "type => link", 2: "taxonomy => link_category" */
sprintf( __( \'%1$s is deprecated. Use %2$s instead.\' ),
\'<code>type => link</code>\',
\'<code>taxonomy => link_category</code>\'
)
);
$args[\'taxonomy\'] = \'link_category\';
}
$r = wp_parse_args( $args, $defaults );
$option_none_value = $r[\'option_none_value\'];
if ( ! isset( $r[\'pad_counts\'] ) && $r[\'show_count\'] && $r[\'hierarchical\'] ) {
$r[\'pad_counts\'] = true;
}
$tab_index = $r[\'tab_index\'];
$tab_index_attribute = \'\';
if ( (int) $tab_index > 0 ) {
$tab_index_attribute = " tabindex=\\"$tab_index\\"";
}
// Avoid clashes with the \'name\' param of get_terms().
$get_terms_args = $r;
unset( $get_terms_args[\'name\'] );
$categories = get_terms( $r[\'taxonomy\'], $get_terms_args );
$name = esc_attr( $r[\'name\'] );
$class = esc_attr( $r[\'class\'] );
$id = $r[\'id\'] ? esc_attr( $r[\'id\'] ) : $name;
$required = $r[\'required\'] ? \'required\' : \'\';
if ( ! $r[\'hide_if_empty\'] || ! empty( $categories ) ) {
$output = "<select $required name=\'$name\' id=\'$id\' class=\'$class\' $tab_index_attribute>\\n";
} else {
$output = \'\';
}
if ( empty( $categories ) && ! $r[\'hide_if_empty\'] && ! empty( $r[\'show_option_none\'] ) ) {
/**
* Filters a taxonomy drop-down display element.
*
* A variety of taxonomy drop-down display elements can be modified
* just prior to display via this filter. Filterable arguments include
* \'show_option_none\', \'show_option_all\', and various forms of the
* term name.
*
* @since 1.2.0
*
* @see wp_dropdown_categories()
*
* @param string $element Taxonomy element to list.
*/
$show_option_none = apply_filters( \'list_cats\', $r[\'show_option_none\'] );
$output .= "\\t<option value=\'" . esc_attr( $option_none_value ) . "\' selected=\'selected\'>$show_option_none</option>\\n";
}
if ( ! empty( $categories ) ) {
if ( $r[\'show_option_all\'] ) {
/** This filter is documented in wp-includes/category-template.php */
$show_option_all = apply_filters( \'list_cats\', $r[\'show_option_all\'] );
$selected = ( \'0\' === strval($r[\'selected\']) ) ? " selected=\'selected\'" : \'\';
$output .= "\\t<option value=\'0\'$selected>$show_option_all</option>\\n";
}
if ( $r[\'show_option_none\'] ) {
/** This filter is documented in wp-includes/category-template.php */
$show_option_none = apply_filters( \'list_cats\', $r[\'show_option_none\'] );
$selected = selected( $option_none_value, $r[\'selected\'], false );
$output .= "\\t<option value=\'" . esc_attr( $option_none_value ) . "\'$selected>$show_option_none</option>\\n";
}
if ( $r[\'hierarchical\'] ) {
$depth = $r[\'depth\']; // Walk the full depth.
} else {
$depth = -1; // Flat.
}
$output .= walk_category_dropdown_tree( $categories, $depth, $r );
}
if ( ! $r[\'hide_if_empty\'] || ! empty( $categories ) ) {
$output .= "</select>\\n";
}
/**
* Filters the taxonomy drop-down output.
*
* @since 2.1.0
*
* @param string $output HTML output.
* @param array $r Arguments used to build the drop-down.
*/
$output = apply_filters( \'wp_dropdown_cats\', $output, $r );
if ( $r[\'echo\'] ) {
echo $output;
}
return $output;
}