This quick tip explains how to add a Custom Column in the Manage Screens of your WordPress blog.
Here are some code snippets you can use to customize the columns in your Manage Screens.
You can copy and paste them into your theme's functions.php file, or download the plugin attached to this post.
Step 1 Define Column Functions
First, let's define some helper functions that we will hook into WordPress later. The first two add the new column (or two columns, or remove a default one), while the others display the column content. In these examples we assume that you have already activated a movie Custom Post Type and a genre Custom Taxonomy. You can read about creating custom post types and taxonomies in a previous article.
function ST4_columns_head($defaults) { $defaults['first_column'] = 'First Column'; /* ADD ANOTHER COLUMN (OPTIONAL) */ // $defaults['second_column'] = 'Second Column'; /* REMOVE DEFAULT CATEGORY COLUMN (OPTIONAL) */ // unset($defaults['categories']); /* TO GET DEFAULTS COLUMN NAMES: */ // print_r($defaults); return $defaults; } // ONLY FOR movie CUSTOM POST TYPE function ST4_columns_head_movies($defaults) { $defaults['my_movie_column'] = 'MY MOVIE COLUMN'; return $defaults; } // GENERAL PURPOSE function ST4_columns_content($column_name, $post_ID) { if ($column_name == 'first_column') { // DO STUFF FOR first_column COLUMN echo 'The post ID is: ' . $post_ID; } /* IF YOU NEED ANOTHER COLUMN - UNCOMMENT ALSO $defaults['second_column'] = 'Second Column'; in ST4_columns_head() */ /* if ($column_name == 'second_column') { // DO STUFF FOR second_column COLUMN } */ } // TAXONOMIES: CATEGORIES (POSTS AND LINKS), TAGS AND CUSTOM TAXONOMIES function ST4_columns_content_taxonomy($c, $column_name, $term_id) { if ($column_name == 'first_column') { echo 'The term ID is: ' . $term_id; } } // USERS function ST4_columns_content_users($c, $column_name, $user_id) { if ($column_name == 'first_column') { $output .= 'The user ID is: ' . $user_id; } if ($column_name == 'second_column') { $output .= 'This is the second column content'; } return $output; } // CUSTOM POSTS function ST4_columns_content_movies($column_name, $movie_ID) { if ($column_name == 'my_movie_column') { echo 'The movie ID is: ' . $movie_ID; } }
Step 2 Hook the Column Functions to WordPress
Now, let's hook the functions into WordPress Manage Screens:
Posts and Post Types, Except Pages
add_filter('manage_posts_columns', 'ST4_columns_head'); add_filter('manage_posts_custom_column', 'ST4_columns_content', 10, 2);
Only WordPress Default Posts
add_filter('manage_post_posts_columns', 'ST4_columns_head', 10); add_action('manage_post_posts_custom_column', 'ST4_columns_content', 10, 2);
Only WordPress Default Pages
add_filter('manage_page_posts_columns', 'ST4_columns_head', 10); add_action('manage_page_posts_custom_column', 'ST4_columns_content', 10, 2);
Only Movie Custom Post Type
add_filter('manage_movie_posts_columns', 'ST4_columns_head_movies', 10); add_action('manage_movie_posts_custom_column', 'ST4_columns_content_movies', 10, 2);
Post Categories
add_filter('manage_edit-category_columns', 'ST4_columns_head'); add_filter('manage_category_custom_column', 'ST4_columns_content_taxonomy', 10, 2);
Only Genre Custom Taxonomy
add_filter('manage_edit-genre_columns', 'ST4_columns_head'); add_filter('manage_genre_custom_column', 'ST4_columns_content_taxonomy', 10, 2);
Post Tags
add_filter('manage_edit-post_tag_columns', 'ST4_columns_head'); add_filter('manage_post_tag_custom_column', 'ST4_columns_content_taxonomy', 10, 2);
Link Categories
add_filter('manage_edit-link_category_columns', 'ST4_columns_head'); add_filter('manage_link_category_custom_column', 'ST4_columns_content_taxonomy', 10, 2);
Media Library
add_filter('manage_media_columns', 'ST4_columns_head'); add_filter('manage_media_custom_column', 'ST4_columns_content', 10, 2);
Users
add_filter('manage_users_columns', 'ST4_columns_head'); add_filter('manage_users_custom_column', 'ST4_columns_content_users', 10, 2);
Final Notes
Two final notes: if a Manage Screen has no items, for example there are no Tags yet, the content of the new column is not displayed.
The ST4_columns_content_users
function it's slightly different from the others, since it returns a PHP variable containing the HTML, instead of printing the column content on the fly.
Comments