Aggiungere una colonna personalizzata alla panoramica dei custom post type nel backend
Ho un custom post type chiamato eventi. Nel backend/amministrazione posso elencare tutti questi custom post type, cioè gli eventi:
Come puoi vedere, ci sono tre colonne in questa panoramica: Titolo, Tag e Data. Ognuno di questi eventi ha un custom field chiamato eventDate.
La mia domanda ora è: come posso aggiungere una colonna ordinabile eventDate alla panoramica degli eventi (mostrata nell'immagine sopra)?
Ok, ho trovato una risposta da solo. Per aiutare le persone che leggeranno questo in futuro, ecco cosa ho fatto:
1) Questo spiega come aggiungere una colonna: http://www.deluxeblogtips.com/add-custom-column/
2) Questo spiega come aggiungere una colonna ordinabile: https://wordpress.org/support/topic/admin-column-sorting/

Gli hook per creare colonne personalizzate e i loro dati associati per un tipo di post personalizzato sono manage_{$post_type}_posts_columns e manage_{$post_type}_posts_custom_column rispettivamente, dove {$post_type} è il nome del tipo di post personalizzato.
Questo esempio dalla documentazione rimuove la colonna dell'autore e aggiunge una colonna per la tassonomia e i metadati:
// Aggiunge le colonne personalizzate al tipo di post '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'] = __( 'Autore', 'your_text_domain' );
$columns['publisher'] = __( 'Editore', 'your_text_domain' );
return $columns;
}
// Aggiunge i dati alle colonne personalizzate per il tipo di post '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( 'Impossibile ottenere l\'autore/i', 'your_text_domain' );
break;
case 'publisher' :
echo get_post_meta( $post_id , 'publisher' , true );
break;
}
}
Copiato da una risposta esistente.

Ecco l'intero codice per questo:
add_filter('manage_edit-video_columns', 'my_columns');
function my_columns($columns) {
$columns['eventDate'] = 'Data Evento';
return $columns;
}
add_action('manage_posts_custom_column', 'my_show_columns');
function my_show_columns($name) {
global $post;
switch ($name) {
case 'eventDate':
$eventDate = get_post_meta($post->ID, 'eventDate', true);
echo $eventDate;
}
}
add_filter( 'manage_edit-video_sortable_columns', 'my_sortable_date_column' );
function my_sortable_date_column( $columns ) {
$columns['eventDate'] = 'Data Evento';
return $columns;
}
Grazie
