ajouter la catégorie à la colonne admin pour un type de publication personnalisé?

13

J'ai créé un type de publication personnalisé appelé article et les informations fournies sur l'écran de résumé d'administration sont rares. J'ai pu ajouter l'image miniature de l'article en vedette à l'aide du http://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column d'un tutoriel.

Cependant, j'aimerais pouvoir avoir un aperçu des catégories et sous-catégories que ces messages leur ont attribuées sur la page d'administration. c'est-à-dire l'ajout d'une colonne pour cette partie?

Voici le code que j'ai utilisé pour enregistrer la taxonomie dans le code des types de messages personnalisés

Jonathan Beech
la source
Vous pouvez utiliser un plugin comme Codepress Admin Columns
fregante

Réponses:

18

La fonction register_taxonomy a un paramètre appelé show_admin_columnqui gérera l'ajout d'une colonne. As-tu essayé ça?

par exemple:

register_taxonomy(
    'my_tax, 
    'post_type', 
    array(
        'label'             => 'My Taxonomy',
        'show_admin_column' => true,
        )
);
darrinb
la source
1
Veuillez ajouter du code et expliquer comment son utilisation répond à la question. Si vous voulez simplement demander quelque chose au PO, utilisez les commentaires.
cybmeta
6

Après quelques recherches, j'ai trouvé une solution en utilisant le manage_edit-${post_type}_columnsfiltre et l' manage_${post_type}_posts_custom_columnaction.

Les colonnes sont créées avec le filtre, puis la colonne est remplie avec l'action. Je suppose que des colonnes supplémentaires pourraient être ajoutées et remplies assez facilement en utilisant les idées de ce lien http://justintadlock.com/archives/2011/06/27/custom-columns-for-custom-post-types

add_filter('manage_edit-article_columns', 'my_columns');
function my_columns($columns) {
    $columns['article_category'] = 'Category';
return $columns;
}

add_action( 'manage_article_posts_custom_column', 'my_manage_article_columns', 10, 2 );

function my_manage_article_columns( $column, $post_id ) {
global $post;

switch( $column ) {

    /* If displaying the 'article_category' column. */
    case 'article_category' :

        /* Get the genres for the post. */
        $terms = get_the_terms( $post_id, 'article_category' );

        /* If terms were found. */
        if ( !empty( $terms ) ) {

            $out = array();

            /* Loop through each term, linking to the 'edit posts' page for the specific term. */
            foreach ( $terms as $term ) {
                $out[] = sprintf( '<a href="%s">%s</a>',
                    esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'article_category' => $term->slug ), 'edit.php' ) ),
                    esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, 'article_category', 'display' ) )
                );
            }

            /* Join the terms, separating them with a comma. */
            echo join( ', ', $out );
        }

        /* If no terms were found, output a default message. */
        else {
            _e( 'No Articles' );
        }

        break;

    /* Just break out of the switch statement for everything else. */
    default :
        break;
}
}
Jonathan Beech
la source