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
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,
)
);
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;
}
}