Using WordPress ‘manage_posts_columns’ PHP filter

The manage_posts_columns WordPress PHP filter allows you to modify the columns displayed in the Posts list table.

Usage

add_filter('manage_posts_columns', 'my_custom_columns', 10, 2);

function my_custom_columns($post_columns, $post_type) {
    // your custom code here
    return $post_columns;
}

Parameters

  • $post_columns (array): An associative array of column headings.
  • $post_type (string): The post type slug.

More information

See WordPress Developer Resources: manage_posts_columns

Examples

Add a custom column

Add a new column named “Featured Image” to display the post’s featured image.

add_filter('manage_posts_columns', 'add_featured_image_column', 10, 2);

function add_featured_image_column($post_columns, $post_type) {
    $post_columns['featured_image'] = __('Featured Image', 'textdomain');
    return $post_columns;
}

Remove an existing column

Remove the “Comments” column from the Posts list table.

add_filter('manage_posts_columns', 'remove_comments_column', 10, 2);

function remove_comments_column($post_columns, $post_type) {
    unset($post_columns['comments']);
    return $post_columns;
}

Reorder columns

Change the order of columns in the Posts list table.

add_filter('manage_posts_columns', 'reorder_post_columns', 10, 2);

function reorder_post_columns($post_columns, $post_type) {
    $new_columns = array();
    $new_columns['title'] = $post_columns['title'];
    $new_columns['author'] = $post_columns['author'];
    $new_columns['date'] = $post_columns['date'];
    return $new_columns;
}

Add custom content to a new column

Display custom content, such as a custom field value, in a new “Custom Field” column.

add_filter('manage_posts_columns', 'add_custom_field_column', 10, 2);

function add_custom_field_column($post_columns, $post_type) {
    $post_columns['custom_field'] = __('Custom Field', 'textdomain');
    return $post_columns;
}

add_action('manage_posts_custom_column', 'display_custom_field_column_data', 10, 2);

function display_custom_field_column_data($column, $post_id) {
    if ($column == 'custom_field') {
        $custom_field_value = get_post_meta($post_id, 'custom_field_key', true);
        echo $custom_field_value;
    }
}

Modify column title

Change the title of the “Author” column to “Post Author”.

add_filter('manage_posts_columns', 'change_author_column_title', 10, 2);

function change_author_column_title($post_columns, $post_type) {
    $post_columns['author'] = __('Post Author', 'textdomain');
    return $post_columns;
}