List Categories for Custom Post Types – WordPress

I’m using custom post types in WordPress 3.0 (now 3.0.1) to setup a custom directory system, but can’t seem to find how to list out the categories under the custom taxonomy similar to how you’d use the wp_list_categories for normal posts. Anyone know how you’d do this on a page? Thanks!

I’ve seen suggestions for options like the following, but have had no luck when popping them in there:

<?php
    //list terms in a given taxonomy using wp_list_categories  (also useful as a widget)
    $orderby = 'name';
    $show_count = 0; // 1 for yes, 0 for no
    $pad_counts = 0; // 1 for yes, 0 for no
    $hierarchical = 1; // 1 for yes, 0 for no
    $taxonomy = 'genre';
    $title = '';

    $args = array(
        'orderby' => $orderby,
        'show_count' => $show_count,
        'pad_counts' => $pad_counts,
        'hierarchical' => $hierarchical,
        'taxonomy' => $taxonomy,
        'title_li' => $title
    );
?>
<ul>
<?php wp_list_categories($args); ?>
</ul>

Related posts

Leave a Reply

4 comments

  1. Are you sure you called register_taxonomy before you called wp_list_categories? register_taxonomy should be called in the init action hook, your template code (I assume you use it there) after that.

  2. as per below code my custom taxonomy name is “eventcategory” , change this as per yours and add below code and enjoy , it will create select list of custom taxonomy terms (Note : Add custom taxonomy terms in admin )

    Add below code in functions.php file

    <?php 
    if ( ! function_exists( 'get_terms_dropdown_ministry' ) ) :
    function get_terms_dropdown_ministry($taxonomies, $args){
        $myterms = get_terms($taxonomies, $args);
        $output ="<select name='eventcategory'>";
        $output .="<option value='ministries'>".esc_attr(__('Filter by ministry'))."</option>";
    
           $queried_object = get_queried_object();
           $term_id = $queried_object->term_id;
           $mterm = get_term( $term_id , $taxonomy );
           $tslug = $mterm->slug;
     //exit;
    
        foreach($myterms as $term){
            $root_url = get_bloginfo('url');
            $term_taxonomy=$term->taxonomy;
            $term_slug=$term->slug;
            if($tslug == $term_slug){
                $selected = "selected='selected'";
            }else{
                $selected = "";
            }
            $term_name =$term->name;
            $link = $term_slug;
            $output .="<option value='".$link."' $selected>".$term_name."</option>";
        }
        $output .="</select>";
    return $output;
    }
    endif;
    ?>
    

    Add below code in template where you want to list.

    <?php
      $event_cat_term = 'eventcategory'; 
      ?>  
      <form action="<?php bloginfo('url'); ?>" method="get">
            <?php
            $taxonomies = array($event_cat_term);
            $args = array('orderby'=>'name','hide_empty'=>true);
            $select = get_terms_dropdown_ministry($taxonomies, $args);
    
            $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select);
            echo $select;
            ?>
                <noscript><input type="submit" value="View" /></noscript>
      </form>