Question

When you click on "Posts" or "Pages", you get a paged listing of your posts or pages with the following columns:

Title | Author | Categories | Tags | Date

I have a plugin which gives an SEO score for each post and page. I would like to add two columns to the list view when viewing posts or pages, one for the post's "seo score" and one for the posts "seo keyword" so that the column listing becomes:

Title | Author | Categories | Tags | Date | SEO Score | SEO Keywords

Was it helpful?

Solution

You add the column using the manage_posts_column filter, where you add two new array elements with a custom key name and the header name as the value.

add_filter('manage_posts_columns', 'wpse_3531_add_seo_columns', 10, 2);
function wpse_3531_add_seo_columns($posts_columns, $post_type)
{
    $posts_columns['seo_score'] = 'SEO score';
    $posts_columns['seo_keyword'] = 'SEO keyword';
    return $posts_columns;
}

The function that displays each row, _post_row(), then fires the manage_posts_custom_column action for each column that it does not know. You hook into this function to display your own data.

add_action('manage_posts_custom_column', 'wpse_3531_display_seo_columns', 10, 2);
function wpse_3531_display_seo_columns($column_name, $post_id)
{
    if ('seo_score' == $column_name) {
        echo 'SEO score for post with ID ' . $post_id;
    }
    if ('seo_keyword' == $column_name) {
        echo 'SEO keyword for post with ID ' . $post_id;
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top