Je travaille avec une taxonomie où les termes ont de longues descriptions. Le panneau d'administration a l'air vraiment moche quand WordPress essaie d'afficher ces descriptions pour 10 catégories. J'essaie de trouver un moyen de limiter le nombre de mots ou de caractères affichés dans la colonne Description de la catégorie/terme, mais je ne parviens pas à trouver le bon raccord pour accéder à la description de la catégorie telle qu'elle est affichée. J'utilise cette liste de crochets comme guide, et les deux crochets qui semblent pointer dans la bonne direction sont les suivants:
filtre: manage_taxonomies_for_{$post_type}_columns
function funcy_test($empty = '', $column, $term_id)
{
return '';
}
add_filter('manage_taxonomies_for_cpt_products_columns', 'funcy_test', 10, 3);
Je m'attendais à ce qu'il renvoie des colonnes vides tout autour mais je n'ai pas vu de résultat. Une solution possible consiste à supprimer complètement la catégorie Description et à utiliser le crochet custom_columns
pour ajouter ma propre colonne de description, mais cela semble trop compliqué.
Existe-t-il un moyen de limiter les mots/caractères pour une description de terme dans le panneau d'administration?
Ok, j'ai revisité cela et révisé ma réponse.
Mais comme je l'ai dit auparavant:
le crochet que vous (essayez) d'utiliser ne fonctionnera pas/ne fonctionnera pas dans le but que vous visez, tout simplement parce que sa seule occurrence est
class-wp-posts-list-table.php
, nom qui est au moins utilisé pour afficher la liste des publications, le bon endroit devrait êtreclass-wp-terms-list-table.php
.
1. Ce que vous pouvez faire est le suivant:
Utilisation du crochet admin_head-$hook_suffix
et get_terms
add_action(
'admin_head-edit-tags.php',
'wpse152619_edit_tags_trim_description'
);
function wpse152619_edit_tags_trim_description() {
add_filter(
'get_terms',
'wpse152619_trim_description_callback',
100,
2
);
}
function wpse152619_trim_description_callback( $terms, $taxonomies ) {
// print_r($taxonomies);
if( 'category' == $taxonomies[ 0 ] ) {
foreach( $terms as $key => $term ) {
$terms[ $key ]->description =
wp_trim_words(
$term->description,
12,
' [...]'
);
}
}
return $terms;
}
Cela réduit la description à un nombre de mots spécifié.
2. Une autre possibilité souvent trouvée consiste à supprimer la colonne par défaut et à en créer une nouvelle:
Utilisation du crochet manage_{$this->screen->taxonomy}_custom_column
et manage_{$this->screen->id}_columns
function wpse152619_create_new_description_column( $columns ) {
if ( $_GET[ 'taxonomy' ] == 'category' ) {
// uncomment next line to remove default description column
//unset( $columns[ 'description' ] );
// create new description column
$columns[ 'new_description' ] = 'New Description';
return $columns;
}
return $columns;
}
add_filter(
'manage_edit-category_columns',
'wpse152619_create_new_description_column'
);
function wpse152619_new_description_column_content(
$deprecated,
$column_name,
$term_id
) {
if ( $column_name == 'new_description' ) {
$new_description =
wp_trim_words(
term_description(
$term_id,
$_GET[ 'taxonomy' ]
),
12,
' [...]'
);
echo $new_description;
}
}
add_filter(
'manage_category_custom_column',
'wpse152619_new_description_column_content',
10,
3
);
3. Aussi possible serait:
WP_List_Table
vous-même, comme WP_Terms_List_Table
c'est le cas;column_description
;edit-tags.php
, mais utilisant votre classe nouvellement créée;Je suis sûr que ce qui précède devrait résoudre votre problème. Notez que j'ai fait les exemples pour la page d'édition de catégorie, mais la façon de procéder pour les taxonomies personnalisées devrait être évidente. En fonction des besoins, une approche simple ou élaborée peut être choisie. Dans votre cas, le premier devrait très bien se passer.
Enfin, la fonction suivante est pratique pour obtenir les informations dont vous avez besoin:
add_action( 'admin_head', 'wpse152619_dbg_dev' );
function wpse152619_dbg_dev() {
global $pagenow;
print_r( $pagenow );
echo '<br>';
print_r( $_GET[ 'taxonomy' ] );
echo '<br>';
$current_screen = get_current_screen();
print_r( $current_screen->id );
}