Combined with the manage_{$post_type}_posts_columns filter, this allows you to add or remove (unset) custom columns to the list post/page/custom post type pages (which automatically appear in Screen Options). The action described in here works both for built in post types as well as custom post types. manage_{$post_type}_posts_custom_column can be used in WP 3.1 and later for specific custom post types. Note that if the custom post type has 'hierarchical' => true, then the correct action hook to use is manage_pages_custom_column.
The following column filters are already defined and used by WordPress. These can be redefined within a custom filter switch statement. [See Example]
A registered action function is passed the following parameters.
Suppose you have a 'books' custom post type and you want the publish date and book author to show up in the browse page.
add_action( 'manage_posts_custom_column' , 'custom_columns', 10, 2 );
function custom_columns( $column, $post_id ) {
switch ( $column ) {
case 'book_author':
$terms = get_the_term_list( $post_id, 'book_author', '', ',', '' );
if ( is_string( $terms ) ) {
echo $terms;
} else {
_e( 'Unable to get author(s)', 'your_text_domain' );
}
break;
case 'publisher':
echo get_post_meta( $post_id, 'publisher', true );
break;
}
}
Built-in posts can be made sticky. manage_posts_custom_column
can be used to show this in the post list.
/* Display custom column */
function display_posts_stickiness( $column, $post_id ) {
if ($column == 'sticky'){
echo '<input type="checkbox" disabled', ( is_sticky( $post_id ) ? ' checked' : ''), '/>';
}
}
add_action( 'manage_posts_custom_column' , 'display_posts_stickiness', 10, 2 );
/* Add custom column to post list */
function add_sticky_column( $columns ) {
return array_merge( $columns,
array( 'sticky' => __( 'Sticky', 'your_text_domain' ) ) );
}
add_filter( 'manage_posts_columns' , 'add_sticky_column' );
As of WP 3.1, manage_posts_custom_column
is located in wp-admin/includes/class-wp-posts-list-table.php
.