Displaying column for custom taxonomy on custom post type admin page

10,779

Solution 1

I had this issue and found that replacing the WP functions get_the_terms with a custom query worked better - try (where custtype is the name of your custom post type):

// custom columns
add_filter("manage_edit-custtype_columns", "custtype_columns");
add_action("manage_posts_custom_column", "custtype_custom_columns",10,2);

function custtype_columns($columns){
    $columns = array(
        "cb" => "<input type=\"checkbox\" />",
        "title" => "Title",
        "slug" => "URL Slug",
        "custtype-type" => "Custom Taxonomy"
    );
    return $columns;
}

function custtype_custom_columns($column,$id) {
    global $wpdb;
        switch ($column) {
        case 'custtype-type':
            $types = $wpdb->get_results("SELECT name FROM $wpdb->posts LEFT OUTER JOIN $wpdb->term_relationships ON ID = object_id LEFT OUTER JOIN $wpdb->terms ON term_taxonomy_id = term_id WHERE ID = {$id}");
            foreach($types as $loopId => $type) {
                echo $type->name.', ';
            }
            break;
        case 'slug':
            $text = basename(get_post_permalink($id));
            echo $text;
            break;
        default:
            break;
        } // end switch
}

Does that work at all?

Solution 2

From Wordpress 3.5 you can enable it when you registering custom taxonomy by adding this:

'show_ui'           => true,
'show_admin_column' => true,
Share:
10,779
user705100
Author by

user705100

Updated on June 17, 2022

Comments

  • user705100
    user705100 almost 2 years

    I'd like to add a column to my custom post type admin window to display my custom taxonomy.

    This solution provided by @SarthakGupta creates the column for me but echoes neither the taxonomy nor the "No taxonomy set" message: Showing custom taxonomy column in custom posts type listings

    I've seen similar solutions posted elsewhere, with similar complaints about the empty taxonomy column.

    What could be causing the problem? Is it possible this solution does not work with WordPress 3.3?

    Thanks.