web-dev-qa-db-fra.com

l'ajout de la catégorie à la colonne admin pour un type de message personnalisé?

J'ai créé un type d'article personnalisé appelé article et les informations données sur l'écran de résumé de l'administrateur sont rares. J'ai été en mesure d'ajouter la vignette de publication d'image sélectionnée à l'aide de http://codex.wordpress.org/Plugin_API/Action_Reference/manage_posts_custom_column à partir d'un tutoriel.

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

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

11
Jonathan Beech

La fonction register_taxonomy possède un paramètre appelé show_admin_column qui gérera l'ajout d'une colonne. Avez-vous essayé ça?

par exemple:

register_taxonomy(
    'my_tax, 
    'post_type', 
    array(
        'label'             => 'My Taxonomy',
        'show_admin_column' => true,
        )
);
14
darrinb

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

Les colonnes sont créées avec le filtre, puis la colonne est renseignée avec l'action. Je suppose que des colonnes supplémentaires pourraient être ajoutées et remplies assez facilement en utilisant les idées présentées dans 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;
}
}
6
Jonathan Beech