Skip to content

Instantly share code, notes, and snippets.

@simongcc
Last active March 30, 2021 06:39
Show Gist options
  • Save simongcc/8395576 to your computer and use it in GitHub Desktop.
Save simongcc/8395576 to your computer and use it in GitHub Desktop.
Adding custom column displaying in Wordpress Manage Category/Custom Taxonomy editing page
/*
Purpose: add custom column header and custom column content to respective custom header in Manage Category Editing Page
Version Tested: 3.8
Story:
Because I found no explanation nor documents in Wordpress.org, I tried to trace the code in wp-admin folder
after understanding the operation of apply_filter(), add_action() and add_filter()
Logic:
The table list in edit_tag.php is based on
wp-admin/includes/class-wp-list-table.php and
wp-admin/includes/class-wp-terms-list-table.php
Note: actually class-wp-terms-list-table.php is creating a class extend the basic table list class in class-wp-list-table.php
Reference:
http://wordpress.stackexchange.com/questions/6883/how-can-i-add-a-custom-column-to-the-manage-categories-table/129545#129545
*/
// Example
// 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['order_unit'] = 'Order Unit';
return $columns;
}
add_filter( "manage_edit-shop-subcategory_columns", 'custom_column_header', 10);
// 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);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment