Adăugare coloană personalizată la lista postărilor personalizate în backend
Am un tip de postare personalizată numit evenimente. În backend/administrare pot lista toate aceste postări personalizate, adică evenimente:
După cum poți vedea, există trei coloane în această listă: Titlu, Etichete și Dată. Fiecare dintre aceste evenimente are un câmp personalizat numit eventDate.
Întrebarea mea este acum, cum pot adăuga o coloană sortabilă eventDate în lista de evenimente (prezentată mai sus)?
Bine, am găsit singur un răspuns. Pentru a ajuta oamenii care vor citi asta în viitor, iată ce am făcut:
1) Aici este explicat cum să adaugi o coloană: http://www.deluxeblogtips.com/add-custom-column/
2) Aici este explicat cum să adaugi o coloană sortabilă: https://wordpress.org/support/topic/admin-column-sorting/

Hook-urile pentru a crea coloane personalizate și datele asociate pentru un tip de postare personalizat sunt manage_{$post_type}_posts_columns și manage_{$post_type}_posts_custom_column, unde {$post_type} este numele tipului de postare personalizat.
Acest exemplu din documentație elimină coloana autorului și adaugă o coloană pentru taxonomie și metadate:
// Adaugă coloanele personalizate la tipul de postare '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'] = __( 'Editor', 'your_text_domain' );
return $columns;
}
// Adaugă datele în coloanele personalizate pentru tipul de postare '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( 'Nu s-au putut obține autor(i)', 'your_text_domain' );
break;
case 'publisher' :
echo get_post_meta( $post_id , 'publisher' , true );
break;
}
}
Copiat din răspunsul existent.

Iată întregul cod pentru aceasta:
add_filter('manage_edit-video_columns', 'my_columns');
function my_columns($columns) {
$columns['eventDate'] = 'Data Evenimentului';
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 Evenimentului';
return $columns;
}
Mulțumesc
