wp_tag_cloud

The timeline below displays how wordpress function wp_tag_cloud has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.9

/**
 * Displays a tag cloud.
 *
 * Outputs a list of tags in what is called a 'tag cloud', where the size of each tag
 * is determined by how many times that particular tag has been assigned to posts.
 *
 * @since 2.3.0
 * @since 2.8.0 Added the `taxonomy` argument.
 * @since 4.8.0 Added the `show_count` argument.
 *
 * @param array|string $args {
 *     Optional. Array or string of arguments for displaying a tag cloud. See wp_generate_tag_cloud()
 *     and get_terms() for the full lists of arguments that can be passed in `$args`.
 *
 *     @type int    $number    The number of tags to display. Accepts any positive integer
 *                             or zero to return all. Default 45.
 *     @type string $link      Whether to display term editing links or term permalinks.
 *                             Accepts 'edit' and 'view'. Default 'view'.
 *     @type string $post_type The post type. Used to highlight the proper post type menu
 *                             on the linked edit page. Defaults to the first post type
 *                             associated with the taxonomy.
 *     @type bool   $echo      Whether or not to echo the return value. Default true.
 * }
 * @return void|string|string[] Void if 'echo' argument is true, or on failure. Otherwise, tag cloud
 *                              as a string or an array, depending on 'format' argument.
 */
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, 'show_count' => 0);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms(array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags.
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' === $args['link']) {
            $link = get_edit_term_link($tag, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link($tag, $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    // Here's where those top tags get sorted according to $args.
    $return = wp_generate_tag_cloud($tags, $args);
    /**
     * Filters the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string|string[] $return Tag cloud as a string or an array, depending on 'format' argument.
     * @param array           $args   An array of tag cloud arguments. See wp_tag_cloud()
     *                                for information on accepted arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' === $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 5.7

/**
 * Displays a tag cloud.
 *
 * Outputs a list of tags in what is called a 'tag cloud', where the size of each tag
 * is determined by how many times that particular tag has been assigned to posts.
 *
 * @since 2.3.0
 * @since 2.8.0 Added the `taxonomy` argument.
 * @since 4.8.0 Added the `show_count` argument.
 *
 * @param array|string $args {
 *     Optional. Array or string of arguments for displaying a tag cloud. See wp_generate_tag_cloud()
 *     and get_terms() for the full lists of arguments that can be passed in `$args`.
 *
 *     @type int    $number    The number of tags to display. Accepts any positive integer
 *                             or zero to return all. Default 45.
 *     @type string $link      Whether to display term editing links or term permalinks.
 *                             Accepts 'edit' and 'view'. Default 'view'.
 *     @type string $post_type The post type. Used to highlight the proper post type menu
 *                             on the linked edit page. Defaults to the first post type
 *                             associated with the taxonomy.
 *     @type bool   $echo      Whether or not to echo the return value. Default true.
 * }
 * @return void|string|string[] Void if 'echo' argument is true, or on failure. Otherwise, tag cloud
 *                              as a string or an array, depending on 'format' argument.
 */
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, 'show_count' => 0);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms(array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags.
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' === $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link((int) $tag->term_id, $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    // Here's where those top tags get sorted according to $args.
    $return = wp_generate_tag_cloud($tags, $args);
    /**
     * Filters the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string|string[] $return Tag cloud as a string or an array, depending on 'format' argument.
     * @param array           $args   An array of tag cloud arguments. See wp_tag_cloud()
     *                                for information on accepted arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' === $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 5.6

/**
 * Displays a tag cloud.
 *
 * Outputs a list of tags in what is called a 'tag cloud', where the size of each tag
 * is determined by how many times that particular tag has been assigned to posts.
 *
 * @since 2.3.0
 * @since 2.8.0 Added the `taxonomy` argument.
 * @since 4.8.0 Added the `show_count` argument.
 *
 * @param array|string $args {
 *     Optional. Array or string of arguments for displaying a tag cloud. See wp_generate_tag_cloud()
 *     and get_terms() for the full lists of arguments that can be passed in `$args`.
 *
 *     @type int    $number    The number of tags to display. Accepts any positive integer
 *                             or zero to return all. Default 0 (all tags).
 *     @type string $link      Whether to display term editing links or term permalinks.
 *                             Accepts 'edit' and 'view'. Default 'view'.
 *     @type string $post_type The post type. Used to highlight the proper post type menu
 *                             on the linked edit page. Defaults to the first post type
 *                             associated with the taxonomy.
 *     @type bool   $echo      Whether or not to echo the return value. Default true.
 * }
 * @return void|string|array Void if 'echo' argument is true, or on failure. Otherwise, tag cloud
 *                           as a string or an array, depending on 'format' argument.
 */
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, 'show_count' => 0);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms(array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags.
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' === $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link((int) $tag->term_id, $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    // Here's where those top tags get sorted according to $args.
    $return = wp_generate_tag_cloud($tags, $args);
    /**
     * Filters the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string|array $return Tag cloud as a string or an array, depending on 'format' argument.
     * @param array        $args   An array of tag cloud arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' === $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 5.5

/**
 * Displays a tag cloud.
 *
 * Outputs a list of tags in what is called a 'tag cloud', where the size of each tag
 * is determined by how many times that particular tag has been assigned to posts.
 *
 * @since 2.3.0
 * @since 2.8.0 Added the `taxonomy` argument.
 * @since 4.8.0 Added the `show_count` argument.
 *
 * @param array|string $args {
 *     Optional. Array or string of arguments for displaying a tag cloud. See wp_generate_tag_cloud()
 *     and get_terms() for the full lists of arguments that can be passed in `$args`.
 *
 *     @type int    $number    The number of tags to display. Accepts any positive integer
 *                             or zero to return all. Default 0 (all tags).
 *     @type string $link      Whether to display term editing links or term permalinks.
 *                             Accepts 'edit' and 'view'. Default 'view'.
 *     @type string $post_type The post type. Used to highlight the proper post type menu
 *                             on the linked edit page. Defaults to the first post type
 *                             associated with the taxonomy.
 *     @type bool   $echo      Whether or not to echo the return value. Default true.
 * }
 * @return void|string|array Void if 'echo' argument is true, or on failure. Otherwise, tag cloud
 *                           as a string or an array, depending on 'format' argument.
 */
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, 'show_count' => 0);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms(array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags.
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' === $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link(intval($tag->term_id), $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    // Here's where those top tags get sorted according to $args.
    $return = wp_generate_tag_cloud($tags, $args);
    /**
     * Filters the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string|array $return Tag cloud as a string or an array, depending on 'format' argument.
     * @param array        $args   An array of tag cloud arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' === $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 5.4

/**
 * Displays a tag cloud.
 *
 * @since 2.3.0
 * @since 4.8.0 Added the `show_count` argument.
 *
 * @param array|string $args {
 *     Optional. Array or string of arguments for displaying a tag cloud. See wp_generate_tag_cloud()
 *     and get_terms() for the full lists of arguments that can be passed in `$args`.
 *
 *     @type int    $number    The number of tags to display. Accepts any positive integer
 *                             or zero to return all. Default 0 (all tags).
 *     @type string $link      Whether to display term editing links or term permalinks.
 *                             Accepts 'edit' and 'view'. Default 'view'.
 *     @type string $post_type The post type. Used to highlight the proper post type menu
 *                             on the linked edit page. Defaults to the first post type
 *                             associated with the taxonomy.
 *     @type bool   $echo      Whether or not to echo the return value. Default true.
 * }
 * @return void|string|array Void if 'echo' argument is true, or on failure. Otherwise, tag cloud
 *                           as a string or an array, depending on 'format' argument.
 */
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, 'show_count' => 0);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms(array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags.
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' == $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link(intval($tag->term_id), $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    // Here's where those top tags get sorted according to $args.
    $return = wp_generate_tag_cloud($tags, $args);
    /**
     * Filters the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string|array $return Tag cloud as a string or an array, depending on 'format' argument.
     * @param array        $args   An array of tag cloud arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' == $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 5.3

/**
 * Displays a tag cloud.
 *
 * @since 2.3.0
 * @since 4.8.0 Added the `show_count` argument.
 *
 * @param array|string $args {
 *     Optional. Array or string of arguments for displaying a tag cloud. See wp_generate_tag_cloud()
 *     and get_terms() for the full lists of arguments that can be passed in `$args`.
 *
 *     @type int    $number    The number of tags to display. Accepts any positive integer
 *                             or zero to return all. Default 0 (all tags).
 *     @type string $link      Whether to display term editing links or term permalinks.
 *                             Accepts 'edit' and 'view'. Default 'view'.
 *     @type string $post_type The post type. Used to highlight the proper post type menu
 *                             on the linked edit page. Defaults to the first post type
 *                             associated with the taxonomy.
 *     @type bool   $echo      Whether or not to echo the return value. Default true.
 * }
 * @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, 'show_count' => 0);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms(array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' == $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link(intval($tag->term_id), $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    $return = wp_generate_tag_cloud($tags, $args);
    // Here's where those top tags get sorted according to $args
    /**
     * Filters the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string $return HTML output of the tag cloud.
     * @param array  $args   An array of tag cloud arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' == $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 5.1

/**
 * Displays a tag cloud.
 *
 * @since 2.3.0
 * @since 4.8.0 Added the `show_count` argument.
 *
 * @param array|string $args {
 *     Optional. Array or string of arguments for displaying a tag cloud. See wp_generate_tag_cloud()
 *     and get_terms() for the full lists of arguments that can be passed in `$args`.
 *
 *     @type int    $number    The number of tags to display. Accepts any positive integer
 *                             or zero to return all. Default 0 (all tags).
 *     @type string $link      Whether to display term editing links or term permalinks.
 *                             Accepts 'edit' and 'view'. Default 'view'.
 *     @type string $post_type The post type. Used to highlight the proper post type menu
 *                             on the linked edit page. Defaults to the first post type
 *                             associated with the taxonomy.
 *     @type bool   $echo      Whether or not to echo the return value. Default true.
 * }
 * @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, 'show_count' => 0);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms($args['taxonomy'], array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' == $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link(intval($tag->term_id), $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    $return = wp_generate_tag_cloud($tags, $args);
    // Here's where those top tags get sorted according to $args
    /**
     * Filters the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string $return HTML output of the tag cloud.
     * @param array  $args   An array of tag cloud arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' == $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 4.8

/**
 * Display tag cloud.
 *
 * 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 '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'.
 *
 * The 'number' argument is how many tags to return. By default, the limit will
 * 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 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 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 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 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, 'show_count' => 0);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms($args['taxonomy'], array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' == $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link(intval($tag->term_id), $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    $return = wp_generate_tag_cloud($tags, $args);
    // Here's where those top tags get sorted according to $args
    /**
     * Filters the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string $return HTML output of the tag cloud.
     * @param array  $args   An array of tag cloud arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' == $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 4.6

/**
 * Display tag cloud.
 *
 * 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 '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'.
 *
 * The 'number' argument is how many tags to return. By default, the limit will
 * 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.
 *
 * 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.
 *
 * 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 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
 *
 * @param array|string|null $args Optional. Override default arguments.
 * @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);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms($args['taxonomy'], array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' == $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link(intval($tag->term_id), $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    $return = wp_generate_tag_cloud($tags, $args);
    // Here's where those top tags get sorted according to $args
    /**
     * Filters the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string $return HTML output of the tag cloud.
     * @param array  $args   An array of tag cloud arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' == $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 4.3

/**
 * Display tag cloud.
 *
 * 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 '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'.
 *
 * The 'number' argument is how many tags to return. By default, the limit will
 * 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.
 *
 * 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.
 *
 * 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.
 *
 * @since 2.3.0
 *
 * @param array|string|null $args Optional. Override default arguments.
 * @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);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms($args['taxonomy'], array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' == $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link(intval($tag->term_id), $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    $return = wp_generate_tag_cloud($tags, $args);
    // Here's where those top tags get sorted according to $args
    /**
     * Filter the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string $return HTML output of the tag cloud.
     * @param array  $args   An array of tag cloud arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' == $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 4.1

/**
 * Display tag cloud.
 *
 * 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 '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'.
 *
 * The 'number' argument is how many tags to return. By default, the limit will
 * 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.
 *
 * 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.
 *
 * 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.
 *
 * @since 2.3.0
 *
 * @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.
 */
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);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms($args['taxonomy'], array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' == $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link(intval($tag->term_id), $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return false;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    $return = wp_generate_tag_cloud($tags, $args);
    // Here's where those top tags get sorted according to $args
    /**
     * Filter the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string $return HTML output of the tag cloud.
     * @param array  $args   An array of tag cloud arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' == $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 3.9

/**
 * Display tag cloud.
 *
 * 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 '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'.
 *
 * The 'number' argument is how many tags to return. By default, the limit will
 * 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.
 *
 * 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.
 *
 * 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.
 *
 * @since 2.3.0
 *
 * @param array|string $args Optional. Override default arguments.
 * @return array Generated tag cloud, only if no failures and 'array' is set for the 'format' argument.
 */
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);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms($args['taxonomy'], array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' == $args['link']) {
            $link = get_edit_term_link($tag->term_id, $tag->taxonomy, $args['post_type']);
        } else {
            $link = get_term_link(intval($tag->term_id), $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return false;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    $return = wp_generate_tag_cloud($tags, $args);
    // Here's where those top tags get sorted according to $args
    /**
     * Filter the tag cloud output.
     *
     * @since 2.3.0
     *
     * @param string $return HTML output of the tag cloud.
     * @param array  $args   An array of tag cloud arguments.
     */
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' == $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}

WordPress Version: 3.7

/**
 * Display tag cloud.
 *
 * 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 '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'.
 *
 * The 'number' argument is how many tags to return. By default, the limit will
 * be to return the top 45 tags in the tag cloud list.
 *
 * 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.
 *
 * 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.
 *
 * @since 2.3.0
 *
 * @param array|string $args Optional. Override default arguments.
 * @return array Generated tag cloud, only if no failures and 'array' is set for the 'format' argument.
 */
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', 'echo' => true);
    $args = wp_parse_args($args, $defaults);
    $tags = get_terms($args['taxonomy'], array_merge($args, array('orderby' => 'count', 'order' => 'DESC')));
    // Always query top tags
    if (empty($tags) || is_wp_error($tags)) {
        return;
    }
    foreach ($tags as $key => $tag) {
        if ('edit' == $args['link']) {
            $link = get_edit_tag_link($tag->term_id, $tag->taxonomy);
        } else {
            $link = get_term_link(intval($tag->term_id), $tag->taxonomy);
        }
        if (is_wp_error($link)) {
            return false;
        }
        $tags[$key]->link = $link;
        $tags[$key]->id = $tag->term_id;
    }
    $return = wp_generate_tag_cloud($tags, $args);
    // Here's where those top tags get sorted according to $args
    $return = apply_filters('wp_tag_cloud', $return, $args);
    if ('array' == $args['format'] || empty($args['echo'])) {
        return $return;
    }
    echo $return;
}