How to Add a Post Featured Image Column in WordPress Admin

Quick Summary

  • Add a Featured Image column with post thumbnails to the admin posts list, so posts missing one are easy to spot.
  • manage_posts_columns adds the column, and manage_posts_custom_column prints each post's featured image at thumbnail size, leaving posts without one blank.
  • Pages need manage_pages_columns and manage_pages_custom_column, and passing array( 60, 60 ) instead of thumbnail keeps rows shorter.

The posts list in the WordPress admin doesn’t show featured images, so it’s hard to spot which posts are missing one. This snippet adds a Featured Image column with a thumbnail for each post. Add it to your child theme’s functions.php or a small custom plugin.

PHP
add_filter('manage_posts_columns', 'add_img_column');
add_filter('manage_posts_custom_column', 'manage_img_column', 10, 2);

function add_img_column($columns) {
    $columns['img'] = 'Featured Image';
    return $columns;
}

function manage_img_column($column_name, $post_id) {
    if( $column_name == 'img' ) {
        echo get_the_post_thumbnail($post_id, 'thumbnail');
    }
    return $column_name;
}
  • The manage_posts_columns filter passes in the list of columns. add_img_column() adds one with the key img and the heading Featured Image, at the end of the table.
  • manage_posts_custom_column runs for each row and custom column. For the img column, manage_img_column() prints the post’s featured image at the thumbnail size. Posts without one get an empty cell.
  • The second function is registered with add_filter() although the hook is an action. WordPress accepts that, and the returned value is simply ignored (see how action and filter hooks differ).

These hooks cover posts and non-hierarchical custom post types. Pages use manage_pages_columns and manage_pages_custom_column, so hook the same two functions there if you want the column on pages too.

The thumbnail size is set under Settings > Media (150 × 150 pixels by default), which makes the rows fairly tall. To show a smaller image, pass a size array such as array( 60, 60 ) instead of 'thumbnail'.

Share on X (opens in a new tab) Share on LinkedIn (opens in a new tab) Share on Facebook (opens in a new tab)

ChatGPT (opens in a new tab) Claude (opens in a new tab) Gemini (opens in a new tab) Perplexity (opens in a new tab) Grok (opens in a new tab)

More Insights

See More