diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
commit | a415c29efee45520ae252d2aa28f1083a521cd7b (patch) | |
tree | f4ade4b6668ecc0765de7e1424f7c1427ad433ff /wp-includes/class-walker-category-dropdown.php | |
parent | Initial commit. (diff) | |
download | wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.tar.xz wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.zip |
Adding upstream version 6.4.3+dfsg1.upstream/6.4.3+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'wp-includes/class-walker-category-dropdown.php')
-rw-r--r-- | wp-includes/class-walker-category-dropdown.php | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/wp-includes/class-walker-category-dropdown.php b/wp-includes/class-walker-category-dropdown.php new file mode 100644 index 0000000..9307838 --- /dev/null +++ b/wp-includes/class-walker-category-dropdown.php @@ -0,0 +1,87 @@ +<?php +/** + * Taxonomy API: Walker_CategoryDropdown class + * + * @package WordPress + * @subpackage Template + * @since 4.4.0 + */ + +/** + * Core class used to create an HTML dropdown list of Categories. + * + * @since 2.1.0 + * + * @see Walker + */ +class Walker_CategoryDropdown extends Walker { + + /** + * What the class handles. + * + * @since 2.1.0 + * @var string + * + * @see Walker::$tree_type + */ + public $tree_type = 'category'; + + /** + * Database fields to use. + * + * @since 2.1.0 + * @todo Decouple this + * @var string[] + * + * @see Walker::$db_fields + */ + public $db_fields = array( + 'parent' => 'parent', + 'id' => 'term_id', + ); + + /** + * Starts the element output. + * + * @since 2.1.0 + * @since 5.9.0 Renamed `$category` to `$data_object` and `$id` to `$current_object_id` + * to match parent class for PHP 8 named parameter support. + * + * @see Walker::start_el() + * + * @param string $output Used to append additional content (passed by reference). + * @param WP_Term $data_object Category data object. + * @param int $depth Depth of category. Used for padding. + * @param array $args Uses 'selected', 'show_count', and 'value_field' keys, if they exist. + * See wp_dropdown_categories(). + * @param int $current_object_id Optional. ID of the current category. Default 0. + */ + public function start_el( &$output, $data_object, $depth = 0, $args = array(), $current_object_id = 0 ) { + // Restores the more descriptive, specific name for use within this method. + $category = $data_object; + + $pad = str_repeat( ' ', $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 .= '>'; + $output .= $pad . $cat_name; + if ( $args['show_count'] ) { + $output .= ' (' . number_format_i18n( $category->count ) . ')'; + } + $output .= "</option>\n"; + } +} |