J'ai créé un modèle de catégorie personnalisé pour afficher les catégories enfants de la catégorie actuelle au lieu de publications. Les catégories enfants sont affichées via une vignette personnalisée, un titre et une description de la catégorie.
J'ai ajouté une fonction permettant de réduire la description de la catégorie à un nombre prédéfini de caractères, mais je ne suis pas sûr de savoir quelle action hook utiliser.
Voici la fonction:
function trim_text($input, $length, $ellipses = true, $strip_html = true) {
//strip tags, if desired
if ($strip_html) {
$input = strip_tags($input);
}
//no need to trim, already shorter than trim length
if (strlen($input) <= $length) {
return $input;
}
//find last space within length
$last_space = strrpos(substr($input, 0, $length), ' ');
$trimmed_text = substr($input, 0, $last_space);
//add ellipses (...)
if ($ellipses) {
$trimmed_text .= '...';
}
return $trimmed_text;
}
Vous n'avez pas besoin d'une action, mais d'un filtre, car vous voulez faire quelque chose avec le résultat d'une fonction. Comme il était prévisible, le filtre s'appelle category_description
. De cette manière (ne l’a pas testé cependant):
function wpse236947_trim_category_desc ( $desc, $cat_id ) {
// do your thing
return $desc;
}
add_filter( 'category_description', 'wpse236947_trim_category_desc' );
En posant la question, je ne connaissais pas la fonction wp_trim_words () () qui fait exactement ce que je veux. Après avoir supprimé la fonction personnalisée de mon fichier functions.php, tout ce que je devais faire était d’ajouter <?php echo wp_trim_words( $child->description, 15, '...' ); ?>
à mon modèle de catégorie personnalisé.