I have a custom post type and trying to set custom columns, the date column is there by default, and it appears right after the title. Do I have to unset the date first and then re-apply it, or is there a more elegant way of achieving this:

function custom_columns($columns) {
    unset( $columns['date'] );

    $columns = array_merge($columns, array(
        'title'     => 'Alert Title',
        'region'    => 'Region',
        'date'      => 'Date',

    return $columns;
  • 1
    I'd say there's nothing wrong with this approach... What problem do you have with it, sortable columns?
    – brasofilo
    Commented Feb 6, 2013 at 23:49
  • I don't have a problem with it, I was just wondering if there was a better way of doing it. Seems 'hacky' to be unsetting it just to set it in a different spot
    – keeg
    Commented Feb 7, 2013 at 3:23
  • It's just array manipulation, I've done hackier things ;)
    – brasofilo
    Commented Feb 7, 2013 at 3:27
  • lol, k. I thought maybe there was a menu_position type of thing...
    – keeg
    Commented Feb 7, 2013 at 3:30

1 Answer 1


That's the only thing there is to do: array manipulation.

The filter manage_edit-CPT_columns is fired in class-wp-list-table.php:

add_filter( "manage_{$this->screen->id}_columns", array( &$this, 'get_columns' ), 0 );

Which in turn dispatches the function get_columns() in the sub-class class-wp-posts-list-table.php.

And, inside it, one filter for taxonomies, and others for post/page/cpt columns.
And all of them dealing with array elements.
Maybe a one line solution exists with some PHP function, but two lines is valid code too.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.