Aggiunta di colonne personalizzate ai tipi di post personalizzati


27

L'ho già fatto in precedenza, ma ho dimenticato il nome del gancio e non riesco a trovarlo da nessuna parte ...

Quello che sto cercando di fare è aggiungere alcune colonne personalizzate nell'elenco di un tipo di post personalizzato nell'amministratore.

Ad esempio, nell'amministratore, fai clic sugli articoli , voglio aggiungere lì una colonna personalizzata.


ho posto (e risposto) la stessa domanda (incluso come renderli ordinabili): wordpress.stackexchange.com/questions/253680/…
beta

Risposte:


57

Gli hook per creare colonne personalizzate e i relativi dati associati per un tipo di post personalizzato sono manage_{$post_type}_posts_columnse manage_{$post_type}_posts_custom_column, rispettivamente, dove si {$post_type}trova il nome del tipo di post personalizzato.

Questo esempio dalla documentazione rimuove la colonna dell'autore e aggiunge una colonna di tassonomia e metadati:

// Add the custom columns to the book post type:
add_filter( 'manage_book_posts_columns', 'set_custom_edit_book_columns' );
function set_custom_edit_book_columns($columns) {
    unset( $columns['author'] );
    $columns['book_author'] = __( 'Author', 'your_text_domain' );
    $columns['publisher'] = __( 'Publisher', 'your_text_domain' );

    return $columns;
}

// Add the data to the custom columns for the book post type:
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( 'Unable to get author(s)', 'your_text_domain' );
            break;

        case 'publisher' :
            echo get_post_meta( $post_id , 'publisher' , true ); 
            break;

    }
}

1
Grazie per questo gancio !!! È brillante!! Non esiste una documentazione chiara su StackOverflow !!! : D Saluti compagno
Rodrigo Zuluaga,

non c'è alcuna opzione per impostare il numero di colonna? come column_index[2]. Perché custom_column appare alla fine della colonna.
Dilip Gupta,

@DilipGupta $ colonne è un array, puoi riordinarlo prima di restituirlo
fogx

0

Non sono sicuro che si tratti di metadati personalizzati predefiniti che si desidera mostrare come colonne, ma si potrebbe considerare di utilizzare questo plug-in gratuito che consente di aggiungere colonne per visualizzare campi personalizzati. https://wordpress.org/plugins/codepress-admin-columns/

La versione pro consente anche di aggiungere filtri, ordinamento e modifica in linea a quelle colonne.


NON USARE! Romperà il tuo sito: Errore irreversibile PHP: Impossibile ripetere AC () (precedentemente dichiarato in [redatto] \\ contenuto wp \\ temi \ [redatto] \\ funzioni.php: 628) in [redatto] \\ contenuto wp \\ plugin \\ codepress-admin-colonne \\ api.php sulla linea 9
Peter Kionga-Kamau

@ PeterKionga-Kamau questo è un problema di compatibilità con il tuo tema specifico. L'errore che hai pubblicato non verrà visualizzato con un tema WP predefinito (come venti venti); Uso anche il plugin con il tema Divi e lo trovo abbastanza utile
Philipp

Non esiste una sorta di spaziatura dei nomi o l'uso di nomi di funzioni meno generici che potrebbero essere utilizzati per evitarlo?
Peter Kionga-Kamau,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.