wp_tag_cloud()WP 2.3.0

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.

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.

Hooks from the function


null|String|String[]. Void if 'echo' argument is true, or on failure. Otherwise, tag cloud as a string or an array, depending on 'format' argument.


wp_tag_cloud( $args );

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.

Default: ''

  • number(int)
    The number of tags to display. Accepts any positive integer or zero to return all.
    Default: 45

  • link(string)
    Whether to display term editing links or term permalinks. Accepts 'edit' and 'view'.
    Default: 'view'

  • post_type(string)
    The post type. Used to highlight the proper post type menu on the linked edit page.
    Default: first post type associated with the taxonomy

  • echo(true|false)
    Whether or not to echo the return value.
    Default: true


Since 2.3.0 Introduced.
Since 2.8.0 Added the taxonomy argument.
Since 4.8.0 Added the show_count argument.

Code of wp_tag_cloud() WP 5.9.3

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(
				'orderby' => 'count',
				'order'   => 'DESC',
	); // Always query top tags.

	if ( empty( $tags ) || is_wp_error( $tags ) ) {

	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 ) ) {

		$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;