Aggiungere una colonna personalizzata alla panoramica dei custom post type nel backend

23 gen 2017, 22:05:21
Visualizzazioni: 14.6K
Voti: 2

Ho un custom post type chiamato eventi. Nel backend/amministrazione posso elencare tutti questi custom post type, cioè gli eventi:

Schermata della panoramica degli eventi nel backend di WordPress

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)?

1
Commenti

ok, ho appena trovato questo link: http://www.deluxeblogtips.com/add-custom-column/ MA come posso rendere la colonna ordinabile?

beta beta
23 gen 2017 22:16:57
Tutte le risposte alla domanda 3
0

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/

23 gen 2017 22:49:31
2

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.

10 ott 2017 13:56:19
Commenti

la colonna è ordinabile?

beta beta
10 ott 2017 14:35:55

no, queste colonne non sono ordinabili... devi renderle ordinabili...

Pravin Work Pravin Work
11 ott 2017 10:47:03
0

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

10 ott 2017 15:06:10