You need to change orderby
value to meta_value
in event_date_column_orderby
, also I am not sure about the get('event_date')
you are using, so I have replaced it in the code below to get_post_meta
.
I have just tested the code below and it sorts by dates just fine.
// Register a new column in the admin Post area
function event_date_column_register( $columns ) {
$columns['event_date'] = __( 'Event Date', 'my-plugin' );
return $columns;
}
add_filter('manage_edit-post_columns', 'event_date_column_register');
// Display the column content
function event_date_column_display( $column_name, $post_id ) {
if ( 'event_date' != $column_name )
return;
$event_date = get_post_meta( $post_id, 'event_date', true );
echo $event_date;
}
add_action( 'manage_posts_custom_column', 'event_date_column_display', 10, 2 );
// Register the column as sortable
function event_date_column_register_sortable( $columns ) {
$columns['event_date'] = 'event_date';
return $columns;
}
add_filter( 'manage_edit-post_sortable_columns', 'event_date_column_register_sortable' );
function event_date_column_orderby( $vars ) {
if ( isset( $vars['orderby'] ) && 'event_date' == $vars['orderby'] ) {
$vars = array_merge( $vars, array(
'meta_key' => 'event_date',
'orderby' => 'meta_value'
) );
}
return $vars;
}
add_filter( 'request', 'event_date_column_orderby' );