diff -r 490d5cc509ed -r cf61fcea0001 wp/wp-includes/category-template.php --- a/wp/wp-includes/category-template.php Tue Jun 09 11:14:17 2015 +0000 +++ b/wp/wp-includes/category-template.php Mon Oct 14 17:39:30 2019 +0200 @@ -1,9 +1,10 @@ slug; - else - $name = $parent->name; - - if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) { - $visited[] = $parent->parent; - $chain .= get_category_parents( $parent->parent, $link, $separator, $nicename, $visited ); + if ( ! empty( $deprecated ) ) { + _deprecated_argument( __FUNCTION__, '4.8.0' ); } - if ( $link ) - $chain .= ''.$name.'' . $separator; - else - $chain .= $name.$separator; - return $chain; + $format = $nicename ? 'slug' : 'name'; + + $args = array( + 'separator' => $separator, + 'link' => $link, + 'format' => $format, + ); + + return get_term_parents_list( $id, 'category', $args ); } /** * Retrieve post categories. * + * This tag may be used outside The Loop by passing a post id as the parameter. + * + * Note: This function only returns results from the default "category" taxonomy. + * For custom taxonomies use get_the_terms(). + * * @since 0.71 * * @param int $id Optional, default to current post ID. The post ID. - * @return array + * @return array Array of WP_Term objects, one for each category assigned to the post. */ function get_the_category( $id = false ) { $categories = get_the_terms( $id, 'category' ); @@ -82,52 +83,15 @@ } /** - * Filter the array of categories to return for a post. + * Filters the array of categories to return for a post. * * @since 3.1.0 + * @since 4.4.0 Added `$id` parameter. * * @param array $categories An array of categories to return for the post. + * @param int $id ID of the post. */ - return apply_filters( 'get_the_categories', $categories ); -} - -/** - * Sort categories by name. - * - * Used by usort() as a callback, should not be used directly. Can actually be - * used to sort any term object. - * - * @since 2.3.0 - * @access private - * - * @param object $a - * @param object $b - * @return int - */ -function _usort_terms_by_name( $a, $b ) { - return strcmp( $a->name, $b->name ); -} - -/** - * Sort categories by ID. - * - * Used by usort() as a callback, should not be used directly. Can actually be - * used to sort any term object. - * - * @since 2.3.0 - * @access private - * - * @param object $a - * @param object $b - * @return int - */ -function _usort_terms_by_ID( $a, $b ) { - if ( $a->term_id > $b->term_id ) - return 1; - elseif ( $a->term_id < $b->term_id ) - return -1; - else - return 0; + return apply_filters( 'get_the_categories', $categories, $id ); } /** @@ -140,7 +104,7 @@ */ function get_the_category_by_ID( $cat_ID ) { $cat_ID = (int) $cat_ID; - $category = get_term( $cat_ID, 'category' ); + $category = get_term( $cat_ID ); if ( is_wp_error( $category ) ) return $category; @@ -149,23 +113,36 @@ } /** - * Retrieve category list in either HTML list or custom format. + * Retrieve category list for a post in either HTML list or custom format. * * @since 1.5.1 * - * @param string $separator Optional, default is empty string. Separator for between the categories. + * @global WP_Rewrite $wp_rewrite + * + * @param string $separator Optional. Separator between the categories. By default, the links are placed + * in an unordered list. An empty string will result in the default behavior. * @param string $parents Optional. How to display the parents. * @param int $post_id Optional. Post ID to retrieve categories. * @return string */ -function get_the_category_list( $separator = '', $parents='', $post_id = false ) { +function get_the_category_list( $separator = '', $parents = '', $post_id = false ) { global $wp_rewrite; if ( ! is_object_in_taxonomy( get_post_type( $post_id ), 'category' ) ) { /** This filter is documented in wp-includes/category-template.php */ return apply_filters( 'the_category', '', $separator, $parents ); } - $categories = get_the_category( $post_id ); + /** + * Filters the categories before building the category list. + * + * @since 4.4.0 + * + * @param array $categories An array of the post's categories. + * @param int|bool $post_id ID of the post we're retrieving categories for. When `false`, we assume the + * current post in the loop. + */ + $categories = apply_filters( 'the_category_list', get_the_category( $post_id ), $post_id ); + if ( empty( $categories ) ) { /** This filter is documented in wp-includes/category-template.php */ return apply_filters( 'the_category', __( 'Uncategorized' ), $separator, $parents ); @@ -222,11 +199,11 @@ } /** - * Filter the category or list of categories. + * Filters the category or list of categories. * * @since 1.2.0 * - * @param array $thelist List of categories for the current post. + * @param string $thelist List of categories for the current post. * @param string $separator Separator used between the categories. * @param string $parents How to display the category parents. Accepts 'multiple', * 'single', or empty. @@ -235,7 +212,7 @@ } /** - * Check if the current post in within any of the given categories. + * Check if the current post is within any of the given categories. * * The given categories are checked against the post's categories' term_ids, names and slugs. * Categories given as integers will only be checked against the post's categories' term_ids. @@ -260,15 +237,16 @@ } /** - * Display the category list for the post. + * Display category list for a post in either HTML list or custom format. * * @since 0.71 * - * @param string $separator Optional, default is empty string. Separator for between the categories. + * @param string $separator Optional. Separator between the categories. By default, the links are placed + * in an unordered list. An empty string will result in the default behavior. * @param string $parents Optional. How to display the parents. * @param int $post_id Optional. Post ID to retrieve categories. */ -function the_category( $separator = '', $parents='', $post_id = false ) { +function the_category( $separator = '', $parents = '', $post_id = false ) { echo get_the_category_list( $separator, $parents, $post_id ); } @@ -294,25 +272,20 @@ * * @since 2.1.0 * @since 4.2.0 Introduced the `value_field` argument. + * @since 4.6.0 Introduced the `required` argument. * * @param string|array $args { - * Optional. Array or string of arguments to generate a categories drop-down element. + * Optional. Array or string of arguments to generate a categories drop-down element. See WP_Term_Query::__construct() + * for information on additional accepted arguments. * * @type string $show_option_all Text to display for showing all categories. Default empty. * @type string $show_option_none Text to display for showing no categories. Default empty. * @type string $option_none_value Value to use when no category is selected. Default empty. * @type string $orderby Which column to use for ordering categories. See get_terms() for a list * of accepted values. Default 'id' (term_id). - * @type string $order Whether to order terms in ascending or descending order. Accepts 'ASC' - * or 'DESC'. Default 'ASC'. * @type bool $pad_counts See get_terms() for an argument description. Default false. * @type bool|int $show_count Whether to include post counts. Accepts 0, 1, or their bool equivalents. * Default 0. - * @type bool|int $hide_empty Whether to hide categories that don't have any posts. Accepts 0, 1, or - * their bool equivalents. Default 1. - * @type int $child_of Term ID to retrieve child terms of. See get_terms(). Default 0. - * @type array|string $exclude Array or comma/space-separated string of term ids to exclude. - * If `$include` is non-empty, `$exclude` is ignored. Default empty array. * @type bool|int $echo Whether to echo or return the generated markup. Accepts 0, 1, or their * bool equivalents. Default 1. * @type bool|int $hierarchical Whether to traverse the taxonomy hierarchy. Accepts 0, 1, or their bool @@ -328,32 +301,50 @@ * 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'. - * @type string $taxonomy Name of the category to retrieve. Default 'category'. + * @type string|array $taxonomy Name of the category or categories to retrieve. Default 'category'. * @type bool $hide_if_empty True to skip generating markup if no categories are found. * Default false (create select element even if no categories are found). + * @type bool $required Whether the `\n"; + $output = "\n"; } /** - * Filter the taxonomy drop-down output. + * Filters the taxonomy drop-down output. * * @since 2.1.0 * @@ -453,47 +446,78 @@ /** * Display or retrieve the HTML list of categories. * - * The list of arguments is below: - * 'show_option_all' (string) - Text to display for showing all categories. - * 'orderby' (string) default is 'ID' - What column to use for ordering the - * categories. - * 'order' (string) default is 'ASC' - What direction to order categories. - * 'show_count' (bool|int) default is 0 - Whether to show how many posts are - * in the category. - * 'hide_empty' (bool|int) default is 1 - Whether to hide categories that - * don't have any posts attached to them. - * 'use_desc_for_title' (bool|int) default is 1 - Whether to use the - * category description as the title attribute. - * 'feed' - See {@link get_categories()}. - * 'feed_type' - See {@link get_categories()}. - * 'feed_image' - See {@link get_categories()}. - * 'child_of' (int) default is 0 - See {@link get_categories()}. - * 'exclude' (string) - See {@link get_categories()}. - * 'exclude_tree' (string) - See {@link get_categories()}. - * 'echo' (bool|int) default is 1 - Whether to display or retrieve content. - * 'current_category' (int) - See {@link get_categories()}. - * 'hierarchical' (bool) - See {@link get_categories()}. - * 'title_li' (string) - See {@link get_categories()}. - * 'depth' (int) - The max depth. + * @since 2.1.0 + * @since 4.4.0 Introduced the `hide_title_if_empty` and `separator` arguments. The `current_category` argument was modified to + * optionally accept an array of values. + * + * @param string|array $args { + * Array of optional arguments. * - * @since 2.1.0 - * - * @param string|array $args Optional. Override default arguments. - * @return false|null|string HTML content only if 'echo' argument is 0. + * @type int $child_of Term ID to retrieve child terms of. See get_terms(). Default 0. + * @type int|array $current_category ID of category, or array of IDs of categories, that should get the + * 'current-cat' class. Default 0. + * @type int $depth Category depth. Used for tab indentation. Default 0. + * @type bool|int $echo True to echo markup, false to return it. Default 1. + * @type array|string $exclude Array or comma/space-separated string of term IDs to exclude. + * If `$hierarchical` is true, descendants of `$exclude` terms will also + * be excluded; see `$exclude_tree`. See get_terms(). + * Default empty string. + * @type array|string $exclude_tree Array or comma/space-separated string of term IDs to exclude, along + * with their descendants. See get_terms(). Default empty string. + * @type string $feed Text to use for the feed link. Default 'Feed for all posts filed + * under [cat name]'. + * @type string $feed_image URL of an image to use for the feed link. Default empty string. + * @type string $feed_type Feed type. Used to build feed link. See get_term_feed_link(). + * Default empty string (default feed). + * @type bool|int $hide_empty Whether to hide categories that don't have any posts attached to them. + * Default 1. + * @type bool $hide_title_if_empty Whether to hide the `$title_li` element if there are no terms in + * the list. Default false (title will always be shown). + * @type bool $hierarchical Whether to include terms that have non-empty descendants. + * See get_terms(). Default true. + * @type string $order Which direction to order categories. Accepts 'ASC' or 'DESC'. + * Default 'ASC'. + * @type string $orderby The column to use for ordering categories. Default 'name'. + * @type string $separator Separator between links. Default '
'. + * @type bool|int $show_count Whether to show how many posts are in the category. Default 0. + * @type string $show_option_all Text to display for showing all categories. Default empty string. + * @type string $show_option_none Text to display for the 'no categories' option. + * Default 'No categories'. + * @type string $style The style used to display the categories list. If 'list', categories + * will be output as an unordered list. If left empty or another value, + * categories will be output separated by `
` tags. Default 'list'. + * @type string $taxonomy Taxonomy name. Default 'category'. + * @type string $title_li Text to use for the list title `
  • ` element. Pass an empty string + * to disable. Default 'Categories'. + * @type bool|int $use_desc_for_title Whether to use the category description as the title attribute. + * Default 1. + * } + * @return false|string HTML content only if 'echo' argument is 0. */ function wp_list_categories( $args = '' ) { $defaults = array( - 'show_option_all' => '', 'show_option_none' => __('No categories'), - 'orderby' => 'name', 'order' => 'ASC', - 'style' => 'list', - 'show_count' => 0, 'hide_empty' => 1, - 'use_desc_for_title' => 1, 'child_of' => 0, - 'feed' => '', 'feed_type' => '', - 'feed_image' => '', 'exclude' => '', - 'exclude_tree' => '', 'current_category' => 0, - 'hierarchical' => true, 'title_li' => __( 'Categories' ), - 'echo' => 1, 'depth' => 0, - 'taxonomy' => 'category' + 'child_of' => 0, + 'current_category' => 0, + 'depth' => 0, + 'echo' => 1, + 'exclude' => '', + 'exclude_tree' => '', + 'feed' => '', + 'feed_image' => '', + 'feed_type' => '', + 'hide_empty' => 1, + 'hide_title_if_empty' => false, + 'hierarchical' => true, + 'order' => 'ASC', + 'orderby' => 'name', + 'separator' => '
    ', + 'show_count' => 0, + 'show_option_all' => '', + 'show_option_none' => __( 'No categories' ), + 'style' => 'list', + 'taxonomy' => 'category', + 'title_li' => __( 'Categories' ), + 'use_desc_for_title' => 1, ); $r = wp_parse_args( $args, $defaults ); @@ -501,8 +525,19 @@ if ( !isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] ) $r['pad_counts'] = true; + // Descendants of exclusions should be excluded too. if ( true == $r['hierarchical'] ) { - $r['exclude_tree'] = $r['exclude']; + $exclude_tree = array(); + + if ( $r['exclude_tree'] ) { + $exclude_tree = array_merge( $exclude_tree, wp_parse_id_list( $r['exclude_tree'] ) ); + } + + if ( $r['exclude'] ) { + $exclude_tree = array_merge( $exclude_tree, wp_parse_id_list( $r['exclude'] ) ); + } + + $r['exclude_tree'] = $exclude_tree; $r['exclude'] = ''; } @@ -519,7 +554,7 @@ $categories = get_categories( $r ); $output = ''; - if ( $r['title_li'] && 'list' == $r['style'] ) { + if ( $r['title_li'] && 'list' == $r['style'] && ( ! empty( $categories ) || ! $r['hide_title_if_empty'] ) ) { $output = '
  • ' . $r['title_li'] . '
  • '; + } /** - * Filter the HTML output of a taxonomy list. + * Filters the HTML output of a taxonomy list. * * @since 2.1.0 * @@ -593,28 +654,30 @@ * be to return the top 45 tags in the tag cloud list. * * The 'topic_count_text' argument is a nooped plural from _n_noop() to generate the - * text for the tooltip of the tag link. + * text for the tag link count. * * The 'topic_count_text_callback' argument is a function, which given the count - * of the posts with that tag returns a text for the tooltip of the tag link. + * of the posts with that tag returns a text for the tag link count. * * The 'post_type' argument is used only when 'link' is set to 'edit'. It determines the post_type * passed to edit.php for the popular tags edit links. * - * The 'exclude' and 'include' arguments are used for the {@link get_tags()} - * function. Only one should be used, because only one will be used and the - * other ignored, if they are both set. + * The 'exclude' and 'include' arguments are used for the get_tags() function. Only one + * should be used, because only one will be used and the other ignored, if they are both set. * * @since 2.3.0 + * @since 4.8.0 Added the `show_count` argument. * * @param array|string|null $args Optional. Override default arguments. - * @return null|false Generated tag cloud, only if no failures and 'array' is set for the 'format' argument. + * @return void|array Generated tag cloud, only if no failures and 'array' is set for the 'format' argument. + * Otherwise, this function outputs the tag cloud. */ function wp_tag_cloud( $args = '' ) { $defaults = array( 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45, 'format' => 'flat', 'separator' => "\n", 'orderby' => 'name', 'order' => 'ASC', - 'exclude' => '', 'include' => '', 'link' => 'view', 'taxonomy' => 'post_tag', 'post_type' => '', 'echo' => true + 'exclude' => '', 'include' => '', 'link' => 'view', 'taxonomy' => 'post_tag', 'post_type' => '', 'echo' => true, + 'show_count' => 0, ); $args = wp_parse_args( $args, $defaults ); @@ -629,7 +692,7 @@ else $link = get_term_link( intval($tag->term_id), $tag->taxonomy ); if ( is_wp_error( $link ) ) - return false; + return; $tags[ $key ]->link = $link; $tags[ $key ]->id = $tag->term_id; @@ -638,7 +701,7 @@ $return = wp_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args /** - * Filter the tag cloud output. + * Filters the tag cloud output. * * @since 2.3.0 * @@ -654,10 +717,12 @@ } /** - * Default topic count scaling for tag links + * Default topic count scaling for tag links. * - * @param integer $count number of posts with that tag - * @return integer scaled count + * @since 2.9.0 + * + * @param int $count Number of posts with that tag. + * @return int Scaled count. */ function default_topic_count_scale( $count ) { return round(log10($count + 1) * 100); @@ -666,35 +731,47 @@ /** * Generates a tag cloud (heatmap) from provided data. * - * The text size is set by the 'smallest' and 'largest' arguments, which will - * use the 'unit' argument value for the CSS text size unit. The 'format' - * argument can be 'flat' (default), 'list', or 'array'. The flat value for the - * 'format' argument will separate tags with spaces. The list value for the - * 'format' argument will format the tags in a UL HTML list. The array value for - * the 'format' argument will return in PHP array type format. - * - * The 'tag_cloud_sort' filter allows you to override the sorting. - * Passed to the filter: $tags array and $args array, has to return the $tags array - * after sorting it. - * - * The 'orderby' argument will accept 'name' or 'count' and defaults to 'name'. - * The 'order' is the direction to sort, defaults to 'ASC' and can be 'DESC' or - * 'RAND'. - * - * The 'number' argument is how many tags to return. By default, the limit will - * be to return the entire tag cloud list. - * - * The 'topic_count_text' argument is a nooped plural from _n_noop() to generate the - * text for the tooltip of the tag link. - * - * The 'topic_count_text_callback' argument is a function, which given the count - * of the posts with that tag returns a text for the tooltip of the tag link. - * * @todo Complete functionality. * @since 2.3.0 + * @since 4.8.0 Added the `show_count` argument. * * @param array $tags List of tags. - * @param string|array $args Optional, override default arguments. + * @param string|array $args { + * Optional. Array of string of arguments for generating a tag cloud. + * + * @type int $smallest Smallest font size used to display tags. Paired + * with the value of `$unit`, to determine CSS text + * size unit. Default 8 (pt). + * @type int $largest Largest font size used to display tags. Paired + * with the value of `$unit`, to determine CSS text + * size unit. Default 22 (pt). + * @type string $unit CSS text size unit to use with the `$smallest` + * and `$largest` values. Accepts any valid CSS text + * size unit. Default 'pt'. + * @type int $number The number of tags to return. Accepts any + * positive integer or zero to return all. + * Default 0. + * @type string $format Format to display the tag cloud in. Accepts 'flat' + * (tags separated with spaces), 'list' (tags displayed + * in an unordered list), or 'array' (returns an array). + * Default 'flat'. + * @type string $separator HTML or text to separate the tags. Default "\n" (newline). + * @type string $orderby Value to order tags by. Accepts 'name' or 'count'. + * Default 'name'. The {@see 'tag_cloud_sort'} filter + * can also affect how tags are sorted. + * @type string $order How to order the tags. Accepts 'ASC' (ascending), + * 'DESC' (descending), or 'RAND' (random). Default 'ASC'. + * @type int|bool $filter Whether to enable filtering of the final output + * via {@see 'wp_generate_tag_cloud'}. Default 1|true. + * @type string $topic_count_text Nooped plural text from _n_noop() to supply to + * tag counts. Default null. + * @type callable $topic_count_text_callback Callback used to generate nooped plural text for + * tag counts based on the count. Default null. + * @type callable $topic_count_scale_callback Callback used to determine the tag count scaling + * value. Default default_topic_count_scale(). + * @type bool|int $show_count Whether to display the tag counts. Default 0. Accepts + * 0, 1, or their bool equivalents. + * } * @return string|array Tag cloud as a string or an array, depending on 'format' argument. */ function wp_generate_tag_cloud( $tags, $args = '' ) { @@ -703,6 +780,7 @@ 'format' => 'flat', 'separator' => "\n", 'orderby' => 'name', 'order' => 'ASC', 'topic_count_text' => null, 'topic_count_text_callback' => null, 'topic_count_scale_callback' => 'default_topic_count_scale', 'filter' => 1, + 'show_count' => 0, ); $args = wp_parse_args( $args, $defaults ); @@ -713,14 +791,14 @@ return $return; } - // Juggle topic count tooltips: + // Juggle topic counts. if ( isset( $args['topic_count_text'] ) ) { // First look for nooped plural support via topic_count_text. $translate_nooped_plural = $args['topic_count_text']; } elseif ( ! empty( $args['topic_count_text_callback'] ) ) { // Look for the alternative callback style. Ignore the previous default. if ( $args['topic_count_text_callback'] === 'default_topic_count_text' ) { - $translate_nooped_plural = _n_noop( '%s topic', '%s topics' ); + $translate_nooped_plural = _n_noop( '%s item', '%s items' ); } else { $translate_nooped_plural = false; } @@ -729,11 +807,11 @@ $translate_nooped_plural = _n_noop( $args['single_text'], $args['multiple_text'] ); } else { // This is the default for when no callback, plural, or argument is passed in. - $translate_nooped_plural = _n_noop( '%s topic', '%s topics' ); + $translate_nooped_plural = _n_noop( '%s item', '%s items' ); } /** - * Filter how the items in a tag cloud are sorted. + * Filters how the items in a tag cloud are sorted. * * @since 2.8.0 * @@ -784,24 +862,75 @@ $font_spread = 1; $font_step = $font_spread / $spread; - $a = array(); + $aria_label = false; + /* + * Determine whether to output an 'aria-label' attribute with the tag name and count. + * When tags have a different font size, they visually convey an important information + * that should be available to assistive technologies too. On the other hand, sometimes + * themes set up the Tag Cloud to display all tags with the same font size (setting + * the 'smallest' and 'largest' arguments to the same value). + * In order to always serve the same content to all users, the 'aria-label' gets printed out: + * - when tags have a different size + * - when the tag count is displayed (for example when users check the checkbox in the + * Tag Cloud widget), regardless of the tags font size + */ + if ( $args['show_count'] || 0 !== $font_spread ) { + $aria_label = true; + } + // Assemble the data that will be used to generate the tag cloud markup. + $tags_data = array(); foreach ( $tags as $key => $tag ) { + $tag_id = isset( $tag->id ) ? $tag->id : $key; + $count = $counts[ $key ]; $real_count = $real_counts[ $key ]; - $tag_link = '#' != $tag->link ? esc_url( $tag->link ) : '#'; - $tag_id = isset($tags[ $key ]->id) ? $tags[ $key ]->id : $key; - $tag_name = $tags[ $key ]->name; if ( $translate_nooped_plural ) { - $title_attribute = sprintf( translate_nooped_plural( $translate_nooped_plural, $real_count ), number_format_i18n( $real_count ) ); + $formatted_count = sprintf( translate_nooped_plural( $translate_nooped_plural, $real_count ), number_format_i18n( $real_count ) ); } else { - $title_attribute = call_user_func( $args['topic_count_text_callback'], $real_count, $tag, $args ); + $formatted_count = call_user_func( $args['topic_count_text_callback'], $real_count, $tag, $args ); } - $a[] = "$tag_name"; + $tags_data[] = array( + 'id' => $tag_id, + 'url' => '#' != $tag->link ? $tag->link : '#', + 'role' => '#' != $tag->link ? '' : ' role="button"', + 'name' => $tag->name, + 'formatted_count' => $formatted_count, + 'slug' => $tag->slug, + 'real_count' => $real_count, + 'class' => 'tag-cloud-link tag-link-' . $tag_id, + 'font_size' => $args['smallest'] + ( $count - $min_count ) * $font_step, + 'aria_label' => $aria_label ? sprintf( ' aria-label="%1$s (%2$s)"', esc_attr( $tag->name ), esc_attr( $formatted_count ) ) : '', + 'show_count' => $args['show_count'] ? ' (' . $real_count . ')' : '', + ); + } + + /** + * Filters the data used to generate the tag cloud. + * + * @since 4.3.0 + * + * @param array $tags_data An array of term data for term used to generate the tag cloud. + */ + $tags_data = apply_filters( 'wp_generate_tag_cloud_data', $tags_data ); + + $a = array(); + + // Generate the output links array. + foreach ( $tags_data as $key => $tag_data ) { + $class = $tag_data['class'] . ' tag-link-position-' . ( $key + 1 ); + $a[] = sprintf( + '%6$s%7$s', + esc_url( $tag_data['url'] ), + $tag_data['role'], + esc_attr( $class ), + esc_attr( str_replace( ',', '.', $tag_data['font_size'] ) . $args['unit'] ), + $tag_data['aria_label'], + esc_html( $tag_data['name'] ), + $tag_data['show_count'] + ); } switch ( $args['format'] ) { @@ -809,7 +938,12 @@ $return =& $a; break; case 'list' : - $return = "