/** * Display a list categories * @param array $args * @return bool */ function zfwca_list_categories($args = array()) { $defaults = array('show_option_all' => '', 'orderby' => 'name', 'order' => 'ASC', 'show_count' => 0, 'hide_empty' => 1, 'use_desc_for_title' => 1, 'child_of' => 0, 'exclude' => '', 'include' => '', 'exclude_tree' => '', 'current_category' => 0, 'taxonomy' => 'category'); $r = wp_parse_args($args, $defaults); $r['walker'] = new ZFWCA_Post_Category_Walker(); 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 (empty($categories)) { $output .= 'No categories'; } else { if (empty($r['current_category']) && (is_category() || is_tax() || is_tag())) { $current_term_object = get_queried_object(); if ($current_term_object && $r['taxonomy'] === $current_term_object->taxonomy) { $r['current_category'] = get_queried_object_id(); } } $output .= walk_category_tree($categories, 0, $r); } $output = apply_filters('zfwca_wp_list_categories', $output, $args); return $output; }
/** * Display or retrieve the HTML list of categories. * * @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. * * @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 'ID'. * @type string $separator Separator between links. Default '<br />'. * @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 `<br>` tags. Default 'list'. * @type string $taxonomy Taxonomy name. Default 'category'. * @type string $title_li Text to use for the list title `<li>` 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('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' => '<br />', '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); 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']) { $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'] = ''; } if (!isset($r['class'])) { $r['class'] = 'category' == $r['taxonomy'] ? 'categories' : $r['taxonomy']; } if (!taxonomy_exists($r['taxonomy'])) { return false; } $show_option_all = $r['show_option_all']; $show_option_none = $r['show_option_none']; $categories = get_categories($r); $output = ''; if ($r['title_li'] && 'list' == $r['style'] && (!empty($categories) || !$r['hide_title_if_empty'])) { $output = '<li class="' . esc_attr($r['class']) . '">' . $r['title_li'] . '<ul>'; } if (empty($categories)) { if (!empty($show_option_none)) { if ('list' == $r['style']) { $output .= '<li class="cat-item-none">' . $show_option_none . '</li>'; } else { $output .= $show_option_none; } } } else { if (!empty($show_option_all)) { $posts_page = ''; // For taxonomies that belong only to custom post types, point to a valid archive. $taxonomy_object = get_taxonomy($r['taxonomy']); if (!in_array('post', $taxonomy_object->object_type) && !in_array('page', $taxonomy_object->object_type)) { foreach ($taxonomy_object->object_type as $object_type) { $_object_type = get_post_type_object($object_type); // Grab the first one. if (!empty($_object_type->has_archive)) { $posts_page = get_post_type_archive_link($object_type); break; } } } // Fallback for the 'All' link is the posts page. if (!$posts_page) { if ('page' == get_option('show_on_front') && get_option('page_for_posts')) { $posts_page = get_permalink(get_option('page_for_posts')); } else { $posts_page = home_url('/'); } } $posts_page = esc_url($posts_page); if ('list' == $r['style']) { $output .= "<li class='cat-item-all'><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 ($current_term_object && $r['taxonomy'] === $current_term_object->taxonomy) { $r['current_category'] = get_queried_object_id(); } } if ($r['hierarchical']) { $depth = $r['depth']; } else { $depth = -1; // Flat. } $output .= walk_category_tree($categories, $depth, $r); } if ($r['title_li'] && 'list' == $r['style'] && (!empty($categories) || !$r['hide_title_if_empty'])) { $output .= '</ul></li>'; } /** * Filters the HTML output of a taxonomy list. * * @since 2.1.0 * * @param string $output HTML output. * @param array $args An array of taxonomy-listing arguments. */ $html = apply_filters('wp_list_categories', $output, $args); if ($r['echo']) { echo $html; } else { return $html; } }
function wptouch_fdn_hierarchical_cat_list($num, $include_count = true, $taxonomy = 'category', $opening_tag = '<ul>', $closing_tag = '</ul>') { $walker = new WPtouchProMainNavMenuWalker(); $defaults = array('number' => $num, 'show_option_all' => false, 'show_option_none' => false, 'orderby' => 'name', 'order' => 'ASC', 'style' => 'list', 'show_count' => $include_count, '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' => false, 'echo' => 1, 'depth' => 0, 'taxonomy' => $taxonomy, 'walker' => new WPtouchProCategoryWalker()); if (isset($args)) { $r = wp_parse_args($args, $defaults); } else { $r = $defaults; } if (!isset($r['pad_counts']) && $r['show_count'] && $r['hierarchical']) { $r['pad_counts'] = true; } if (true == $r['hierarchical']) { $r['exclude_tree'] = $r['exclude']; $r['exclude'] = ''; } if (!isset($r['class'])) { $r['class'] = 'category' == $r['taxonomy'] ? 'categories' : $r['taxonomy']; } if (!taxonomy_exists($r['taxonomy'])) { return false; } $show_option_all = $r['show_option_all']; $show_option_none = $r['show_option_none']; $categories = get_categories($r); $output = ''; if (empty($categories)) { if (!empty($show_option_none)) { if ('list' == $r['style']) { $output .= '<li class="cat-item-none">' . $show_option_none . '</li>'; } else { $output .= $show_option_none; } } } else { $output = $opening_tag; 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' == $r['style']) { $output .= "<li class='cat-item-all'><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 ($current_term_object && $r['taxonomy'] === $current_term_object->taxonomy) { $r['current_category'] = get_queried_object_id(); } } if ($r['hierarchical']) { $depth = $r['depth']; } else { $depth = -1; // Flat. } $output .= walk_category_tree($categories, $depth, $r); $output .= '</ul>'; } /** * Filter the HTML output of a taxonomy list. * * @since 2.1.0 * * @param string $output HTML output. * @param array $args An array of taxonomy-listing arguments. */ $html = apply_filters('wp_list_categories', $output, $r); if ($r['echo']) { echo $html; } else { return $html; } }
function wp_list_categories($args = '') { if (is_array($args)) { $r =& $args; } else { parse_str($args, $r); } $defaults = array('show_option_all' => '', '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_image' => '', 'exclude' => '', 'hierarchical' => true, 'title_li' => __('Categories')); $r = array_merge($defaults, $r); 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']; } extract($r); $categories = get_categories($r); $output = ''; if ($title_li && 'list' == $style) { $output = '<li class="categories">' . $r['title_li'] . '<ul>'; } if (empty($categories)) { if ('list' == $style) { $output .= '<li>' . __("No categories") . '</li>'; } else { $output .= __("No categories"); } } else { global $wp_query; if (is_category()) { $r['current_category'] = $wp_query->get_queried_object_id(); } if ($hierarchical) { $depth = 0; } else { $depth = -1; } // Flat. $output .= walk_category_tree($categories, $depth, $r); } if ($title_li && 'list' == $style) { $output .= '</ul></li>'; } echo apply_filters('wp_list_categories', $output); }
/** * 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 * description instead of the category title. * '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 * * @param string|array $args Optional. Override default arguments. * @return 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'); $r = wp_parse_args($args, $defaults); if (!isset($r['pad_counts']) && $r['show_count'] && $r['hierarchical']) { $r['pad_counts'] = true; } 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; } }
/** * 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 {@link * 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 {@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 * * @param string|array $args Optional. Override default arguments. * @return string HTML content only if 'echo' argument is 0. */ function avh_wp_list_categories($args = '', $selectedonly) { $mywalker = new AVHEC_Walker_Category(); $defaults = array('show_option_all' => '', '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, 'walker' => $mywalker); $r = wp_parse_args($args, $defaults); if (!isset($r['pad_counts']) && $r['show_count'] && $r['hierarchical']) { $r['pad_counts'] = true; } 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'] = ''; } extract($r); $categories = get_categories($r); $output = ''; if ($title_li && 'list' == $style) { $output = '<li class="categories">' . $r['title_li'] . '<ul>'; } if (empty($categories)) { if ('list' == $style) { $output .= '<li>' . __("No categories") . '</li>'; } else { $output .= __("No categories"); } } else { global $wp_query; if (!empty($show_option_all)) { if ('list' == $style) { $output .= '<li><a href="' . get_bloginfo('url') . '">' . $show_option_all . '</a></li>'; } else { $output .= '<a href="' . get_bloginfo('url') . '">' . $show_option_all . '</a>'; } } if (empty($r['current_category']) && is_category()) { $r['current_category'] = $wp_query->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); if ($echo) { echo $output; } else { return $output; } }
/** * 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 {@link * 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 {@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 * * @param string|array $args Optional. Override default arguments. * @return 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', '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="' . $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 { global $wp_query; if (!empty($show_option_all)) { if ('list' == $style) { $output .= '<li><a href="' . get_bloginfo('url') . '">' . $show_option_all . '</a></li>'; } else { $output .= '<a href="' . get_bloginfo('url') . '">' . $show_option_all . '</a>'; } } if (empty($r['current_category']) && (is_category() || is_tax())) { $r['current_category'] = $wp_query->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; } }
/** * Display or retrieve the HTML list of categories. * * @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. * * @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 $orderby The column to use for ordering categories. Default 'ID'. * @type string $order Which direction to order categories. Accepts 'ASC' or 'DESC'. * Default 'ASC'. * @type bool|int $show_count Whether to show how many posts are in the category. Default 0. * @type bool|int $hide_empty Whether to hide categories that don't have any posts attached to them. * Default 1. * @type bool|int $use_desc_for_title Whether to use the category description as the title attribute. * Default 1. * @type string $feed Text to use for the feed link. Default 'Feed for all posts filed * under [cat name]'. * @type string $feed_type Feed type. Used to build feed link. See {@link get_term_feed_link()}. * Default empty string (default feed). * @type string $feed_image URL of an image to use for the feed link. Default empty string. * @type int $child_of Term ID to retrieve child terms of. See {@link get_terms()}. Default 0. * @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 {@link 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 {@link get_terms()}. Default empty * string. * @type bool|int $echo True to echo markup, false to return it. Default 1. * @type int|array $current_category ID of category, or array of IDs of categories, that should get the * 'current-cat' class. Default 0. * @type bool $hierarchical Whether to include terms that have non-empty descendants. * See {@link get_terms()}. Default true. * @type string $title_li Text to use for the list title `<li>` element. Pass an empty string * to disable. Default 'Categories'. * @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 int $depth Category depth. Used for tab indentation. Default 0. * @type string $taxonomy Taxonomy name. Default 'category'. * @type string $separator Separator between links. Default '<br />'. * } * @return false|string HTML content only if 'echo' argument is 0. */ public function avh_wp_list_categories($args = '') { $mywalker = new AVHEC_Walker_Category(); $defaults = array('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' => '<br />', 'show_count' => 0, 'show_last_update' => 0, 'show_option_all' => '', 'show_option_none' => __('No categories'), 'style' => 'list', 'taxonomy' => 'category', 'title_li' => __('Categories'), 'use_desc_for_title' => 1, 'walker' => $mywalker); $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']) { $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'] = ''; } if (!isset($r['class'])) { $r['class'] = 'category' == $r['taxonomy'] ? 'categories' : $r['taxonomy']; } if (!taxonomy_exists($r['taxonomy'])) { return false; } $show_option_all = $r['show_option_all']; $show_option_none = $r['show_option_none']; $categories = get_categories($r); $output = ''; if ($r['title_li'] && 'list' == $r['style'] && (!empty($categories) || !$r['hide_title_if_empty'])) { $output = '<li class="' . esc_attr($r['class']) . '">' . $r['title_li'] . '<ul>'; } if (empty($categories)) { if (!empty($show_option_none)) { if ('list' == $r['style']) { $output .= '<li class="cat-item-none">' . __("No categories") . '</li>'; } else { $output .= $show_option_none; } } } else { if (!empty($show_option_all)) { $posts_page = ''; $taxonomy_object = get_taxonomy($r['taxonomy']); if (!in_array('post', $taxonomy_object->object_type) && !in_array('page', $taxonomy_object->object_type)) { foreach ($taxonomy_object->object_type as $object_type) { $_object_type = get_post_type_object($object_type); // Grab the first one. if (!empty($_object_type->has_archive)) { $posts_page = get_post_type_archive_link($object_type); break; } } } // Fallback for the 'All' link is the posts page. if (!$posts_page) { if ('page' == get_option('show_on_front') && get_option('page_for_posts')) { $posts_page = get_permalink(get_option('page_for_posts')); } else { $posts_page = home_url('/'); } } $posts_page = esc_url($posts_page); if ('list' == $r['style']) { $output .= '<li class="cat-item-all"><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 ($current_term_object && $r['taxonomy'] === $current_term_object->taxonomy) { $r['current_category'] = get_queried_object_id(); } } if ($r['hierarchical']) { $depth = $r['depth']; } else { $depth = -1; // Flat. } $output .= walk_category_tree($categories, $depth, $r); } if ($r['title_li'] && 'list' == $r['style']) { $output .= '</ul></li>'; } $html = apply_filters('wp_list_categories', $output, $args); if ($r['echo']) { echo $html; } else { return $html; } return; }
function wp_list_categories_for_posts($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'); $r = wp_parse_args($args, $defaults); if (!isset($r['pad_counts']) && $r['show_count'] && $r['hierarchical']) { $r['pad_counts'] = true; } if (true == $r['hierarchical']) { $r['exclude_tree'] = $r['exclude']; $r['exclude'] = ''; } if (!isset($r['class'])) { $r['class'] = 'category' == $r['taxonomy'] ? 'categories' : $r['taxonomy']; } if (!taxonomy_exists($r['taxonomy'])) { return false; } $show_option_all = $r['show_option_all']; $show_option_none = $r['show_option_none']; $categories = get_categories($r); foreach ($categories as $key => $category) { add_filter('posts_where', 'related_posts_where'); $rPosts = new WP_Query(array('post_type' => array('post'), 'posts_per_page' => -1, 'is_single' => true, 'no_found_rows' => true, 'post_status' => array('publish'), 'ignore_sticky_posts' => true, 'cat' => $category->cat_ID)); // If no posts found, ... if ($rPosts->post_count == 0) { unset($categories[$key]); } else { $categories[$key]->count = $rPosts->post_count; } } $output = ''; if ($r['title_li'] && 'list' == $r['style']) { $output = '<li class="' . esc_attr($r['class']) . '">' . $r['title_li'] . '<ul>'; } if (empty($categories)) { if (!empty($show_option_none)) { if ('list' == $r['style']) { $output .= '<li class="cat-item-none">' . $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' == $r['style']) { $output .= "<li class='cat-item-all'><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 ($current_term_object && $r['taxonomy'] === $current_term_object->taxonomy) { $r['current_category'] = get_queried_object_id(); } } if ($r['hierarchical']) { $depth = $r['depth']; } else { $depth = -1; // Flat. } $output .= walk_category_tree($categories, $depth, $r); } if ($r['title_li'] && 'list' == $r['style']) { $output .= '</ul></li>'; } /** * Filter the HTML output of a taxonomy list. * * @since 2.1.0 * * @param string $output HTML output. * @param array $args An array of taxonomy-listing arguments. */ $html = apply_filters('wp_list_categories', $output, $args); wp_reset_postdata(); if ($r['echo']) { echo $html; } else { return $html; } }