How can I add a custom column to the “Manage Categories” table?

I’ve done this with posts, but I can’t find the proper way to reference the category table’s columns.

I’m trying to add a column titled “Image” to the table, so that when the table grid of categories is displayed, if there is a category image assigned to the category, it will appear in the grid.

Read More

The first step for me is to determine the proper filter to address in order to insert the columb into the table.

I’ve tried each of these to no avail…

add_filter('manage_categories_columns', 'myFunction', 10, 2);
add_filter('manage_category_columns', 'myFunction', 10, 2);

function myFunction($cat_columns)
{
    $cat_columns['cat_image_thumb'] = 'Image';
    return $cat_columns;
}

Related posts

Leave a Reply

3 comments

  1. The filter is manage_{$screen->id}_columns, and $screen->id is edit-category, giving you manage_edit-category_columns.

    I found this by placing a var_dump() in get_column_headers(), which is called by print_column_headers(), which is called in wp-admin/edit-tags.php, the page where you edit the category items.

  2. Adding the column name

    function manage_my_category_columns($columns)
    {
     // add 'My Column'
     $columns['my_column'] = 'My Column';
    
     return $columns;
    }
    add_filter('manage_edit-category_columns','manage_my_category_columns');
    

    Next we want to put the data in it:

    function manage_category_custom_fields($deprecated,$column_name,$term_id)
    {
     if ($column_name == 'my_column') {
       echo 'test';
     }
    }
    add_filter ('manage_category_custom_column', 'manage_category_custom_fields', 10,3);
    

    I hope this was useful.

  3. In addition to @LeoDang’s example, the custom_column is applied to custom taxonomy based on the following filters.

    Tested and validated in WordPress 3.8

    1.Adding Custom Column header

    // these filters will only affect custom column, the default column will not be affected
    // filter: manage_edit-{$taxonomy}_columns
    function custom_column_header( $columns ){
        $columns['header_name'] = 'Header Name for Display'; 
    
        return $columns;
    }
    add_filter( "manage_edit-shop-subcategory_columns", 'custom_column_header', 10);
    

    2.Adding Custom Column Data to corresponding Column Header

    // parm order: value_to_display, $column_name, $tag->term_id
    // filter: manage_{$taxonomy}_custom_column
    function custom_column_content( $value, $column_name, $tax_id ){
        // var_dump( $column_name );
        // var_dump( $value );
        // var_dump( $tax_id );
    
        // for multiple custom column, you may consider using the column name to distinguish
    
        // although If clause is working, Switch is a more generic and well structured approach for multiple columns
        // if ($column_name === 'header_name') {
            // echo '1234';
        // }
        switch( $column_name ) {
              case 'header_name1':
                   // your code here
                   $value = 'header name 1';
              break;
    
              case 'header_name2':
                   // your code here
                   $value = 'header name 2';
              break;
    
              // ... similarly for more columns
              default:
              break;
        } 
    
        return $value; // this is the display value
    }
    add_action( "manage_shop-subcategory_custom_column", 'custom_column_content', 10, 3);
    

    You may also refer to the gist code shared online for any update and additional notes.