Wordpress - How can I add a custom column to the "Manage Categories" table?

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.


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.


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.