web-dev-qa-db-fra.com

Quel crochet d'action utiliser pour la fonction?

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;
}
1
jrcollins

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' );
1
cjbj

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é.

1
jrcollins