Ajout de colonnes personnalisées à des types de publication personnalisés

27

Je l'ai déjà fait mais j'ai oublié le nom du crochet et je ne le trouve nulle part ...

Ce que j'essaie de faire, c'est d'ajouter des colonnes personnalisées dans la liste d'un type de publication personnalisé dans l'administrateur.

Par exemple, dans l'administrateur, cliquez sur les articles , je veux y ajouter une colonne personnalisée.

Chin Leung
la source
j'ai posé (et répondu) la même question (y compris comment les rendre triables): wordpress.stackexchange.com/questions/253680/…
beta

Réponses:

57

Les crochets pour créer des colonnes personnalisées et leurs données associées pour un type de publication personnalisé sont manage_{$post_type}_posts_columnset manage_{$post_type}_posts_custom_columnrespectivement, où {$post_type}est le nom du type de publication personnalisé.

Cet exemple de la documentation supprime la colonne auteur et ajoute une colonne de taxonomie et de métadonnées:

// 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;

    }
}
Dave Romsey
la source
1
Merci pour ce crochet !!! C'est génial !! Il n'y a pas de documentation claire sur stackoverflow !!! : D Cheers mate
Rodrigo Zuluaga
n'y a-t-il pas d'option pour définir le numéro de colonne? comme column_index[2]. Parce que la colonne personnalisée_apparaît à la fin de la colonne.
Dilip Gupta
@DilipGupta $ colonnes est un tableau, vous pouvez réorganiser avant de le renvoyer
fogx
0

Je ne sais pas s'il s'agit de métadonnées personnalisées par défaut que vous souhaitez afficher sous forme de colonnes, mais vous pouvez envisager d'utiliser ce plugin gratuit qui vous permet d'ajouter des colonnes pour afficher des champs personnalisés. https://wordpress.org/plugins/codepress-admin-columns/

La version pro vous permet même d'ajouter du filtrage, du tri et des modifications en ligne à ces colonnes.

DGStefan
la source
NE PAS UTILISER! Va casser votre site: Erreur fatale PHP: Impossible de redéclarer AC () (précédemment déclaré dans [expurgé] \\ wp-content \\ themes \ [expurgé] \\ functions.php: 628) dans [expurgé] \\ wp-content \\ plugins \\ codepress-admin-columns \\ api.php sur la ligne 9
Peter Kionga-Kamau
@ PeterKionga-Kamau c'est un problème de compatibilité avec votre thème spécifique. L'erreur que vous avez publiée n'apparaîtra pas avec un thème WP par défaut (tel que vingt vingt); J'utilise également le plugin avec le thème Divi et le trouve très utile
Philipp
N'y a-t-il pas une sorte d'espacement de noms ou d'utilisation de noms de fonctions moins génériques qui pourraient être utilisés pour éviter cela?
Peter Kionga-Kamau