Agregar columna personalizada al resumen de tipo de publicación personalizada en el backend
Tengo un tipo de publicación personalizada llamado eventos. En el backend/administración puedo listar todos estos tipos de publicaciones personalizadas, es decir, los eventos:
Como puedes ver, hay tres columnas en este resumen: Título, Etiquetas y Fecha. Cada uno de estos eventos tiene un campo personalizado llamado eventDate.
Mi pregunta ahora es, ¿cómo puedo agregar una columna ordenable eventDate al resumen de eventos (mostrado arriba)?
Vale, encontré una respuesta por mi cuenta. Para ayudar a las personas que lean esto en el futuro, esto es lo que hice:
1) Esto explica cómo añadir una columna: http://www.deluxeblogtips.com/add-custom-column/
2) Esto explica cómo añadir una columna ordenable: https://wordpress.org/support/topic/admin-column-sorting/

Los hooks para crear columnas personalizadas y sus datos asociados para un tipo de contenido personalizado son manage_{$post_type}_posts_columns y manage_{$post_type}_posts_custom_column respectivamente, donde {$post_type} es el nombre del tipo de contenido personalizado.
Este ejemplo de la documentación elimina la columna de autor y añade columnas para taxonomía y metadatos:
// Añadir columnas personalizadas al tipo de contenido 'book':
add_filter( 'manage_book_posts_columns', 'set_custom_edit_book_columns' );
function set_custom_edit_book_columns($columns) {
unset( $columns['author'] );
$columns['book_author'] = __( 'Autor', 'your_text_domain' );
$columns['publisher'] = __( 'Editorial', 'your_text_domain' );
return $columns;
}
// Añadir los datos a las columnas personalizadas para el tipo de contenido 'book':
add_action( 'manage_book_posts_custom_column' , 'custom_book_column', 10, 2 );
function custom_book_column( $column, $post_id ) {
switch ( $column ) {
case 'book_author' :
$terms = get_the_term_list( $post_id , 'book_author' , '' , ',' , '' );
if ( is_string( $terms ) )
echo $terms;
else
_e( 'No se pueden obtener los autores', 'your_text_domain' );
break;
case 'publisher' :
echo get_post_meta( $post_id , 'publisher' , true );
break;
}
}
Copiado de una respuesta existente.

Aquí está el código completo para esto:
// Agregar columna personalizada 'Fecha del Evento' a la lista de videos
add_filter('manage_edit-video_columns', 'mis_columnas');
function mis_columnas($columnas) {
$columnas['eventDate'] = 'Fecha del Evento';
return $columnas;
}
// Mostrar el valor de la columna personalizada
add_action('manage_posts_custom_column', 'mostrar_mis_columnas');
function mostrar_mis_columnas($nombre) {
global $post;
switch ($nombre) {
case 'eventDate':
$fechaEvento = get_post_meta($post->ID, 'eventDate', true);
echo $fechaEvento;
}
}
// Hacer que la columna sea ordenable
add_filter( 'manage_edit-video_sortable_columns', 'mi_columna_fecha_ordenable' );
function mi_columna_fecha_ordenable( $columnas ) {
$columnas['eventDate'] = 'Fecha del Evento';
return $columnas;
}
Gracias
