wp_list_categories

Definition:
function wp_list_categories( $args = '' ) {}

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_last_update’ (bool|int) default is 0 – See walk_category_dropdown_tree() ‘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 description instead of the category title. ‘feed’ – See get_categories(). ‘feed_type’ – See get_categories(). ‘feed_image’ – See get_categories(). ‘child_of’ (int) default is 0 – See get_categories(). ‘exclude’ (string) – See get_categories(). ‘exclude_tree’ (string) – See get_categories(). ‘echo’ (bool|int) default is 1 – Whether to display or retrieve content. ‘current_category’ (int) – See get_categories(). ‘hierarchical’ (bool) – See get_categories(). ‘title_li’ (string) – See get_categories(). ‘depth’ (int) – The max depth.

Parameters

  • string|array $args: Optional. Override default arguments.

Return values

returns:HTML content only if ‘echo’ argument is 0.

Defined filters

  • wp_list_categories
    apply_filters( 'wp_list_categories', $output, $args )

Source code

function wp_list_categories( $args = '' ) {

	$defaults = array(

		'show_option_all' => '', 'show_option_none' => __('No categories'),

		'orderby' => 'name', 'order' => 'ASC',

		'show_last_update' => 0, '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'

	);



	$r = wp_parse_args( $args, $defaults );



	if ( !isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] )

		$r['pad_counts'] = true;



	if ( isset( $r['show_date'] ) )

		$r['include_last_update_time'] = $r['show_date'];



	if ( true == $r['hierarchical'] ) {

		$r['exclude_tree'] = $r['exclude'];

		$r['exclude'] = '';

	}



	if ( !isset( $r['class'] ) )

		$r['class'] = ( 'category' == $r['taxonomy'] ) ? 'categories' : $r['taxonomy'];



	extract( $r );



	if ( !taxonomy_exists($taxonomy) )

		return false;



	$categories = get_categories( $r );



	$output = '';

	if ( $title_li && 'list' == $style )

			$output = '<li class="' . esc_attr( $class ) . '">' . $title_li . '<ul>';



	if ( empty( $categories ) ) {

		if ( ! empty( $show_option_none ) ) {

			if ( 'list' == $style )

				$output .= '<li>' . $show_option_none . '</li>';

			else

				$output .= $show_option_none;

		}

	} else {

		if ( ! empty( $show_option_all ) ) {

			$posts_page = ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_for_posts' ) ) ? get_permalink( get_option( 'page_for_posts' ) ) : home_url( '/' );

			$posts_page = esc_url( $posts_page );

			if ( 'list' == $style )

				$output .= "<li><a href='$posts_page'>$show_option_all</a></li>";

			else

				$output .= "<a href='$posts_page'>$show_option_all</a>";

		}



		if ( empty( $r['current_category'] ) && ( is_category() || is_tax() || is_tag() ) ) {

			$current_term_object = get_queried_object();

			if ( $r['taxonomy'] == $current_term_object->taxonomy )

				$r['current_category'] = get_queried_object_id();

		}



		if ( $hierarchical )

			$depth = $r['depth'];

		else

			$depth = -1; // Flat.



		$output .= walk_category_tree( $categories, $depth, $r );

	}



	if ( $title_li && 'list' == $style )

		$output .= '</ul></li>';



	$output = apply_filters( 'wp_list_categories', $output, $args );



	if ( $echo )

		echo $output;

	else

		return $output;

}

3855

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: