Title: wp_dropdown_categories
Published: April 25, 2014
Last modified: February 24, 2026

---

# wp_dropdown_categories( array|string $args ): string

## In this article

 * [Description](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#return)
 * [More Information](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#more-information)
 * [Source](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#changelog)
 * [User Contributed Notes](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#user-contributed-notes)

[ Back to top](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#wp--skip-link--target)

Displays or retrieves the HTML dropdown list of categories.

## 󠀁[Description](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#description)󠁿

The ‘hierarchical’ argument, which is disabled by default, will override the depth
argument, unless it is true. When the argument is false, it will display all of 
the categories. When it is enabled it will use the value in the ‘depth’ argument.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#parameters)󠁿

 `$args`array|stringoptional

Array or string of arguments to generate a categories drop-down element. See [WP_Term_Query::__construct()](https://developer.wordpress.org/reference/classes/wp_term_query/__construct/)
for information on additional accepted arguments.

 * `show_option_all` string
 * Text to display for showing all categories. Default empty.
 * `show_option_none` string
 * Text to display for showing no categories. Default empty.
 * `option_none_value` string
 * Value to use when no category is selected. Default empty.
 * `orderby` string
 * Which column to use for ordering categories. See [get_terms()](https://developer.wordpress.org/reference/functions/get_terms/)
   for a list of accepted values. Default `'id'` (term_id).
 * `pad_counts` bool
 * See [get_terms()](https://developer.wordpress.org/reference/functions/get_terms/)
   for an argument description. Default false.
 * `show_count` bool|int
 * Whether to include post counts. Accepts 0, 1, or their bool equivalents.
    Default
   0.
 * `echo` bool|int
 * Whether to echo or return the generated markup. Accepts 0, 1, or their bool equivalents.
   Default 1.
 * `hierarchical` bool|int
 * Whether to traverse the taxonomy hierarchy. Accepts 0, 1, or their bool equivalents.
   Default 0.
 * `depth` int
 * Maximum depth. Default 0.
 * `tab_index` int
 * Tab index for the select element. Default 0 (no tabindex).
 * `name` string
 * Value for the `'name'` attribute of the select element. Default `'cat'`.
 * `id` string
 * Value for the `'id'` attribute of the select element. Defaults to the value of`
   $name`.
 * `class` string
 * Value for the `'class'` attribute of the select element. Default `'postform'`.
 * `selected` int|string
 * Value of the option that should be selected. Default 0.
 * `value_field` string
 * Term field that should be used to populate the `'value'` attribute of the option
   elements. Accepts any valid term field: `'term_id'`, `'name'`, `'slug'`, `'term_group'`,`'
   term_taxonomy_id'`, `'taxonomy'`, `'description'`, `'parent'`, `'count'`. Default`'
   term_id'`.
 * `taxonomy` string|array
 * Name of the taxonomy or taxonomies to retrieve. Default `'category'`.
 * `hide_if_empty` bool
 * True to skip generating markup if no categories are found.
    Default false (create
   select element even if no categories are found).
 * `required` bool
 * Whether the `<select>` element should have the HTML5 `'required'` attribute.
   
   Default false.
 * `walker` [Walker](https://developer.wordpress.org/reference/classes/walker/)
 * [Walker](https://developer.wordpress.org/reference/classes/walker/) object to
   use to build the output. Default empty which results in a [Walker_CategoryDropdown](https://developer.wordpress.org/reference/classes/walker_categorydropdown/)
   instance being used.
 * `aria_describedby` string
 * The `'id'` of an element that contains descriptive text for the select.
    Default
   empty string.

More Arguments from get_terms( … $args )

Array or string of arguments. See [WP_Term_Query::__construct()](https://developer.wordpress.org/reference/classes/wp_term_query/__construct/)
for information on accepted arguments.

## 󠀁[Return](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#return)󠁿

 string HTML dropdown list of categories.

## 󠀁[More Information](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#more-information)󠁿

If you want to allow users to select multiple values, use [wp_category_checklist()](https://developer.wordpress.org/reference/functions/wp_category_checklist/).

The [wp_dropdown_cats](https://developer.wordpress.org/reference/hooks/wp_dropdown_cats/)
filter is applied to the output string before it is echoed/returned.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#source)󠁿

    ```php
    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,
    		'aria_describedby'  => '',
    	);

    	$defaults['selected'] = ( is_category() ) ? get_query_var( 'cat' ) : 0;

    	// Back compat.
    	if ( isset( $args['type'] ) && 'link' === $args['type'] ) {
    		_deprecated_argument(
    			__FUNCTION__,
    			'3.0.0',
    			sprintf(
    				/* translators: 1: "type => link", 2: "taxonomy => link_category" */
    				__( '%1$s is deprecated. Use %2$s instead.' ),
    				'<code>type => link</code>',
    				'<code>taxonomy => link_category</code>'
    			)
    		);
    		$args['taxonomy'] = 'link_category';
    	}

    	// Parse incoming $args into an array and merge it with $defaults.
    	$parsed_args = wp_parse_args( $args, $defaults );

    	$option_none_value = $parsed_args['option_none_value'];

    	if ( ! isset( $parsed_args['pad_counts'] ) && $parsed_args['show_count'] && $parsed_args['hierarchical'] ) {
    		$parsed_args['pad_counts'] = true;
    	}

    	$tab_index = $parsed_args['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 = $parsed_args;
    	unset( $get_terms_args['name'] );
    	$categories = get_terms( $get_terms_args );

    	$name     = esc_attr( $parsed_args['name'] );
    	$class    = esc_attr( $parsed_args['class'] );
    	$id       = $parsed_args['id'] ? esc_attr( $parsed_args['id'] ) : $name;
    	$required = $parsed_args['required'] ? 'required' : '';

    	$aria_describedby_attribute = $parsed_args['aria_describedby'] ? ' aria-describedby="' . esc_attr( $parsed_args['aria_describedby'] ) . '"' : '';

    	if ( ! $parsed_args['hide_if_empty'] || ! empty( $categories ) ) {
    		$output = "<select $required name='$name' id='$id' class='$class'$tab_index_attribute$aria_describedby_attribute>\n";
    	} else {
    		$output = '';
    	}
    	if ( empty( $categories ) && ! $parsed_args['hide_if_empty'] && ! empty( $parsed_args['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  Category name.
    		 * @param WP_Term|null $category The category object, or null if there's no corresponding category.
    		 */
    		$show_option_none = apply_filters( 'list_cats', $parsed_args['show_option_none'], null );
    		$output          .= "\t<option value='" . esc_attr( $option_none_value ) . "' selected='selected'>$show_option_none</option>\n";
    	}

    	if ( ! empty( $categories ) ) {

    		if ( $parsed_args['show_option_all'] ) {

    			/** This filter is documented in wp-includes/category-template.php */
    			$show_option_all = apply_filters( 'list_cats', $parsed_args['show_option_all'], null );
    			$selected        = ( '0' === (string) $parsed_args['selected'] ) ? " selected='selected'" : '';
    			$output         .= "\t<option value='0'$selected>$show_option_all</option>\n";
    		}

    		if ( $parsed_args['show_option_none'] ) {

    			/** This filter is documented in wp-includes/category-template.php */
    			$show_option_none = apply_filters( 'list_cats', $parsed_args['show_option_none'], null );
    			$selected         = selected( $option_none_value, $parsed_args['selected'], false );
    			$output          .= "\t<option value='" . esc_attr( $option_none_value ) . "'$selected>$show_option_none</option>\n";
    		}

    		if ( $parsed_args['hierarchical'] ) {
    			$depth = $parsed_args['depth'];  // Walk the full depth.
    		} else {
    			$depth = -1; // Flat.
    		}
    		$output .= walk_category_dropdown_tree( $categories, $depth, $parsed_args );
    	}

    	if ( ! $parsed_args['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  $parsed_args Arguments used to build the drop-down.
    	 */
    	$output = apply_filters( 'wp_dropdown_cats', $output, $parsed_args );

    	if ( $parsed_args['echo'] ) {
    		echo $output;
    	}

    	return $output;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/category-template.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/category-template.php#L344)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/category-template.php#L344-L486)

## 󠀁[Hooks](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#hooks)󠁿

 [apply_filters( ‘list_cats’, string $element, WP_Term|null $category )](https://developer.wordpress.org/reference/hooks/list_cats/)

Filters a taxonomy drop-down display element.

 [apply_filters( ‘wp_dropdown_cats’, string $output, array $parsed_args )](https://developer.wordpress.org/reference/hooks/wp_dropdown_cats/)

Filters the taxonomy drop-down output.

## 󠀁[Related](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#related)󠁿

| Uses | Description | 
| [walk_category_dropdown_tree()](https://developer.wordpress.org/reference/functions/walk_category_dropdown_tree/)`wp-includes/category-template.php` |

Retrieves HTML dropdown (select) content for category list.

  | 
| [selected()](https://developer.wordpress.org/reference/functions/selected/)`wp-includes/general-template.php` |

Outputs the HTML selected attribute.

  | 
| [is_category()](https://developer.wordpress.org/reference/functions/is_category/)`wp-includes/query.php` |

Determines whether the query is for an existing category archive page.

  | 
| [get_query_var()](https://developer.wordpress.org/reference/functions/get_query_var/)`wp-includes/query.php` |

Retrieves the value of a query variable in the [WP_Query](https://developer.wordpress.org/reference/classes/wp_query/) class.

  | 
| [get_terms()](https://developer.wordpress.org/reference/functions/get_terms/)`wp-includes/taxonomy.php` |

Retrieves the terms in a given taxonomy or list of taxonomies.

  | 
| [__()](https://developer.wordpress.org/reference/functions/__/)`wp-includes/l10n.php` |

Retrieves the translation of $text.

  | 
| [esc_attr()](https://developer.wordpress.org/reference/functions/esc_attr/)`wp-includes/formatting.php` |

Escaping for HTML attributes.

  | 
| [_deprecated_argument()](https://developer.wordpress.org/reference/functions/_deprecated_argument/)`wp-includes/functions.php` |

Marks a function argument as deprecated and inform when it has been used.

  | 
| [wp_parse_args()](https://developer.wordpress.org/reference/functions/wp_parse_args/)`wp-includes/functions.php` |

Merges user defined arguments into defaults array.

  | 
| [apply_filters()](https://developer.wordpress.org/reference/functions/apply_filters/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to a filter hook.

  |

[Show 5 more](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#)

| Used by | Description | 
| [WP_Posts_List_Table::categories_dropdown()](https://developer.wordpress.org/reference/classes/wp_posts_list_table/categories_dropdown/)`wp-admin/includes/class-wp-posts-list-table.php` |

Displays a categories drop-down for filtering on the Posts list table.

  | 
| [WP_Links_List_Table::extra_tablenav()](https://developer.wordpress.org/reference/classes/wp_links_list_table/extra_tablenav/)`wp-admin/includes/class-wp-links-list-table.php` |  | 
| [_wp_ajax_add_hierarchical_term()](https://developer.wordpress.org/reference/functions/_wp_ajax_add_hierarchical_term/)`wp-admin/includes/ajax-actions.php` |

Handles adding a hierarchical term via AJAX.

  | 
| [post_categories_meta_box()](https://developer.wordpress.org/reference/functions/post_categories_meta_box/)`wp-admin/includes/meta-boxes.php` |

Displays post categories form fields.

  | 
| [dropdown_cats()](https://developer.wordpress.org/reference/functions/dropdown_cats/)`wp-includes/deprecated.php` |

Deprecated method for generating a drop-down of categories.

  | 
| [WP_Widget_Categories::widget()](https://developer.wordpress.org/reference/classes/wp_widget_categories/widget/)`wp-includes/widgets/class-wp-widget-categories.php` |

Outputs the content for the current Categories widget instance.

  |

[Show 1 more](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#changelog)󠁿

| Version | Description | 
| [6.1.0](https://developer.wordpress.org/reference/since/6.1.0/) | Introduced the `aria_describedby` argument. | 
| [4.6.0](https://developer.wordpress.org/reference/since/4.6.0/) | Introduced the `required` argument. | 
| [4.2.0](https://developer.wordpress.org/reference/since/4.2.0/) | Introduced the `value_field` argument. | 
| [2.1.0](https://developer.wordpress.org/reference/since/2.1.0/) | Introduced. |

## 󠀁[User Contributed Notes](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#user-contributed-notes)󠁿

 1.   [Skip to note 10 content](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#comment-content-884)
 2.    [hearvox](http://hearingvoices.com)  [  11 years ago  ](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-884)
 3.  [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-884)
     Vote results for this note: 3[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-884)
 4.  This example displays a category dropdown list using JavaScript instead of a submit
     button, with a no-selection option (labeled: “Select category”):
 5.      ```php
         <h2><?php _e( 'Posts by Category', 'textdomain' ); ?></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 esc_url( home_url( '/' ) ); ?>?cat="+dropdown.options[dropdown.selectedIndex].value;
         		}
         	}
         	dropdown.onchange = onCatChange;
         	-->
         </script>
         ```
     
 6.   [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%3Freplytocom%3D884%23feedback-editor-884)
 7.   [Skip to note 11 content](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#comment-content-886)
 8.    [hearvox](http://hearingvoices.com)  [  11 years ago  ](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-886)
 9.  [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-886)
     Vote results for this note: 3[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-886)
 10. By default, `wp_dropdown_categories` only returns categories that have been assigned
     to at least one post. To override this set the `hide_empty` parameter to false(`"
     0"`).
 11.     ```php
         <?php wp_dropdown_categories( 'hide_empty=0' ); ?>
         ```
     
 12.  [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%3Freplytocom%3D886%23feedback-editor-886)
 13.  [Skip to note 12 content](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#comment-content-885)
 14.   [hearvox](http://hearingvoices.com)  [  11 years ago  ](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-885)
 15. [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-885)
     Vote results for this note: 2[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-885)
 16. In this example the echo parameter (`echo=0`) is used. A simple `preg_replace`
     inserts the JavaScript code. It even works without JavaScript (submit button is
     wrapped by `noscript` tags).
 17.     ```php
         <h2><?php _e( 'Posts by Category', 'textdomain' ); ?></h2>
         <form id="category-select" class="category-select" action="<?php echo esc_url( home_url( '/' ) ); ?>" method="get">
     
         	<?php
         	$args = array(
         		'show_option_none' => __( 'Select category', 'textdomain' ),
         		'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>
         ```
     
 18.  [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%3Freplytocom%3D885%23feedback-editor-885)
 19.  [Skip to note 13 content](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#comment-content-1823)
 20.   [ayandebnath](https://profiles.wordpress.org/ayandebnath/)  [  10 years ago  ](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-1823)
 21. [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-1823)
     Vote results for this note: 2[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-1823)
 22. You can use **[Walker](https://developer.wordpress.org/reference/classes/walker/)**
     with this _wp\_dropdown\_categories_ function.
 23. Example –
 24.     ```php
         class Walker_custom_CategoryDropdown extends Walker_CategoryDropdown {
     
         	public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
         		$pad = str_repeat('&nbsp;', $depth * 3);
     
         		/** This filter is documented in wp-includes/category-template.php */
         		$cat_name = apply_filters( 'list_cats', $category->name, $category );
     
         		if ( isset( $args['value_field'] ) && isset( $category->{$args['value_field']} ) ) {
         			$value_field = $args['value_field'];
         		} else {
         			$value_field = 'term_id';
         		}
     
         		$output .= "\t<option class=\"level-$depth\" value=\"" . esc_attr( $category->{$value_field} ) . "\"";
     
         		// Type-juggling causes false matches, so we force everything to a string.
         		if ( (string) $category->{$value_field} === (string) $args['selected'] )
         			$output .= ' selected="selected"';
     
         		$output .= ' data-uri="'.get_term_link($category).'" '; /* Custom */
     
         		$output .= '>';
         		$output .= $pad.$cat_name;
         		if ( $args['show_count'] )
         			$output .= '&nbsp;&nbsp;('. number_format_i18n( $category->count ) .')';
         		$output .= "</option>\n";
         	}
         }
     
         $cat_arg=array(
         	'taxonomy'=> 'category',
         	'class' => 'form-control',
         	'value_field' => 'term_id',
         	'selected' => $taxonomy_id,
     
         	'orderby' => 'name',
         	'show_count' => 0,
         	'hierarchical' => true,
         	'hide_if_empty' => true,
     
         	'walker'  => new Walker_custom_CategoryDropdown()
         );
         ```
     
 25.  [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%3Freplytocom%3D1823%23feedback-editor-1823)
 26.  [Skip to note 14 content](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#comment-content-5798)
 27.   [Lucas](https://profiles.wordpress.org/luquerias/)  [  4 years ago  ](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-5798)
 28. [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-5798)
     Vote results for this note: 2[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-5798)
 29. With the following example you add a selected to the current tag archive page.
 30.     ```php
         <?php
         $tag_slug = get_query_var( 'tag' );
         wp_dropdown_categories(array('taxonomy'=> 'post_tag', 'selected'=>$tag_slug, 'show_option_none'=> 'Select an option', 'hide_empty' => 0, 'name' => 'listofoptions', 'value_field' => 'slug' ));?>
         <script>
         document.getElementById('listofoptions').onchange = function(){
         window.location='/tag' + '/' +this.value
         }
         </script>
         ```
     
 31.  [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%3Freplytocom%3D5798%23feedback-editor-5798)
 32.  [Skip to note 15 content](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#comment-content-3518)
 33.   [nsei](https://profiles.wordpress.org/nsei/)  [  6 years ago  ](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-3518)
 34. [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-3518)
     Vote results for this note: 1[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-3518)
 35. With the following example, when category is selected, you can automatically redirect
     to the category detail page.
 36.     ```php
         <?php wp_dropdown_categories(); ?>
     
         <script>
           document.getElementById('cat').onchange = function(){
         	// if value is category id
             if( this.value !== '-1' ){
               window.location='/?cat='+this.value
             }
           }
         </script>
         ```
     
 37.  [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%3Freplytocom%3D3518%23feedback-editor-3518)
 38.  [Skip to note 16 content](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#comment-content-6681)
 39.   [markbranly](https://profiles.wordpress.org/markbranly/)  [  3 years ago  ](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-6681)
 40. [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-6681)
     Vote results for this note: 1[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-6681)
 41. For anyone looking for the description for the `pad_counts` arg, it is found on
     the [Constructor of WP_Term_Query](https://developer.wordpress.org/reference/classes/wp_term_query/__construct/).
 42.  [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%3Freplytocom%3D6681%23feedback-editor-6681)
 43.  [Skip to note 17 content](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#comment-content-883)
 44.   [hearvox](http://hearingvoices.com)  [  11 years ago  ](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-883)
 45. [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-883)
     Vote results for this note: 0[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-883)
 46. Displays a hierarchical category dropdown list in an HTML select form with a submit
     button, with a count of posts in each category.
 47.     ```php
         <h2><?php _e( 'Categories:', 'textdomain' ); ?></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>
         ```
     
 48.  [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%3Freplytocom%3D883%23feedback-editor-883)
 49.  [Skip to note 18 content](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/?output_format=md#comment-content-6317)
 50.   [DrLightman](https://profiles.wordpress.org/drlightman/)  [  3 years ago  ](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-6317)
 51. [You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-6317)
     Vote results for this note: -2[You must log in to vote on the helpfulness of this note](https://login.wordpress.org?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%23comment-6317)
 52. It’s `hide_empty` NOT `hide_if_empty`!
      In the args’ Parameters list.
 53.  * Both parameters exist as valid arguments.
      * [crstauf](https://profiles.wordpress.org/crstauf/) [3 years ago](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-6324)
      * Documentation is correct, there are 2 parameters: – **hide_if_empty**: to create
        or not the markup if there are no categories – **hide_empty**: to include or
        not categories with no posts attached
      * [GodsDeneuve](https://profiles.wordpress.org/federico242/) [3 years ago](https://developer.wordpress.org/reference/functions/wp_dropdown_categories/#comment-6371)
 54.  [Log in to add feedback](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F%3Freplytocom%3D6317%23feedback-editor-6317)

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_dropdown_categories%2F)
before being able to contribute a note or feedback.