Last active
March 30, 2021 06:39
-
-
Save simongcc/8395576 to your computer and use it in GitHub Desktop.
Adding custom column displaying in Wordpress Manage Category/Custom Taxonomy editing page
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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