J'ai ajouté une colonne personnalisée à un type de publication personnalisé:
add_filter('manage_posts_columns', 'custom_columns', 10);
add_action('manage_posts_custom_column', 'custom_columns_thumb', 10, 2);
function custom_columns($columns) {
$columns = array(
'cb' => '<input type="checkbox" />',
'title' => 'Title',
'categories' => 'Categories', // not showing
'thumb' => __('Thumb'),
'date' => __( 'Date' )
);
return $columns;
}
function custom_columns_thumb($column_name, $id){
if($column_name === 'thumb') {
echo the_post_thumbnail( 'thumb' );
}
}
La colonne personnalisée "thumb" s'affiche correctement, mais la catégorie n'est plus affichée. S'il vous plaît voir l'image.
Qu'est-ce qui cause ça? Les catégories indiquent si je supprime les colonnes personnalisées.
Ici, j'ai testé ce code et son bon fonctionnement et les étapes ici.
Je crée juste un code factice custom_post_type
ici book
avec le code suivant.
function kv_custom_post_books() {
$args = array(
'public' => true,
'label' => 'Books',
'taxonomies' => array('category', 'post_tag') ,
'supports' => array( 'title', 'editor', 'thumbnail' )
);
register_post_type( 'book', $args );
}
add_action( 'init', 'kv_custom_post_books' );
Ici, je ne suis pas sûr, vous avez utilisé cette ligne. 'taxonomies' => array('category', 'post_tag')
. Celui-ci vous permet d'obtenir les catégories par défaut de votre type de message personnalisé.
Maintenant, nous allons réécrire votre crochet d’action ici. et nous utilisons les mêmes fonctions, pas de changement.
add_filter('manage_edit-book_columns', 'custom_columns', 10);
add_action('manage_posts_custom_column', 'custom_columns_thumb', 10, 2);
function custom_columns($columns) {
$columns = array(
'cb' => '<input type="checkbox" />',
'title' => 'Title',
'categories' => 'Categories', // not showing
'thumb' => __('Thumb'),
'date' => __( 'Date' )
);
return $columns;
}
function custom_columns_thumb($column_name, $id){
if($column_name === 'thumb') {
echo the_post_thumbnail( 'thumb' );
}
}
Remarque:Je viens de modifier une seule ligne de votre code. add_filter('manage_edit-book_columns', 'custom_columns', 10);
. Nous devons spécifier votre type de message personnalisé dans votre crochet d'action. C'est la chose ultime ici. manage_edit-book_columns
Au lieu de celui par défaut, nous devons spécifier ici le nom du type d'article personnalisé.
Ici, j'ai joint une capture d'écran pour vous,
Essayez d’ajouter la colonne Thumb
au lieu de redéfinir l’ensemble des colonnes.
function custom_columns($columns) {
return array_merge( $columns,
array( 'thumb' => __('Thumb', 'mytextdomain' ),
) );
}
De même, assurez-vous que vous avez accidentellement unset
la colonne Catégories lorsque vous avez supprimé les colonnes Tags
, Author
et Comments
.
MODIFIER
Après avoir vu l’étiquette du petit bouton de recherche dans le coin supérieur droit de la deuxième capture d’écran, je constate que vous utilisez bien un type de message personnalisé. Dans ce cas, si vous souhaitez associer les "Catégories" par défaut à votre CPT, utilisez ce morceau de code avec le tableau actuel d'arguments qui enregistre votre CPT:
'taxonomies' => array('category');
Modifiez également vos filtres en manage_post_type_posts_columns
et manage_post_type_posts_columns
. Où post_type
est votre CPT.
Merci à cybmeta et à PieterGoosen pour leurs commentaires.
Si vous souhaitez ajouter de nouvelles colonnes sans vous ruiner, je trouve que le stockage des anciennes valeurs permet d’être sûr de conserver ce qui est là et d’ajouter seulement ce dont vous avez besoin. Si vous voulez voir moins, ajustez avec les options de l'écran.
$post_type = 'posts';
add_filter("manage_${post_type}_posts_columns", 'posts_set_custom_columns', 10);
add_action("manage_${post_type}_posts_custom_column", 'posts_render_custom_columns', 10, 2);
function posts_set_custom_columns ($columns) {
// save existing settings for columns
$before = array(
'cb' => $columns ['cb'],
'title' => $columns ['title'],
'categories' => $columns ['categories'],
);
// remove all the items before our new columns
foreach ($before as $inx => $label) {
unset($columns[$inx]);
}
// Push our new columns to the front
$columns = array_merge(
array(
'thumb' => __('Thumb'),
), $columns);
// put the first items back in the front
$columns = array_merge($before, $columns);
return $columns;
}
function posts_render_custom_columns ($column_name, $id) {
if($column_name === 'thumb') {
$size = 'thumbnail';
// display the image or a mark to let us know it's missing
if ( has_post_thumbnail( $id ))
the_post_thumbnail( $size );
else
echo "-";
}
}
slider pour changer le nom de votre message et slider_category pour changer le nom de votre catégorie de taxonomie
<?php
/** Manage column Function */
add_filter("manage_edit-slider_columns", "slider_edit_columns");
add_action("manage_posts_custom_column", "slider_custom_columns");
function slider_edit_columns($columns) {
$columns = array(
"cb" => "<input type=\"checkbox\" />",
"title" => "Title",
"slider_category" => "Categories",
"date" => "Date",
);
return $columns;
}
function slider_custom_columns($column) {
global $post;
switch ($column) {
case 'thumb':
echo the_post_thumbnail( 'thumb' );
break;
case "slider_category":
echo $cat = strip_tags(get_the_term_list($post->ID, 'slider_category', '', ', ',''));
break;
default:
break;
}
}