web-dev-qa-db-fra.com

Quand appelle-t-on wp_trim_excerpt ()?

Il ne semble pas y avoir de référence à wp_trim_excerpt () en dehors de sa déclaration - j'ai vérifié le Trac et le Xref - quand fonctionne-t-il sa magie?

3
user13296

Si vous avez déjà regardé dans XRef, vous avez vu ce commentaire en haut du bloc doc:

/**
  * Generates an excerpt from the content, if needed.

Donc, il n'est pas utilisé dans le noyau, mais est disponible pour vous si vous en avez besoin.

Mettre à jour

Laissez-moi vous expliquer un peu ce qui se passe:

excerpt_length et excerpt_more sont dans wp_trim_excerpt, et leur modification change en fait the_excerpt et get_the_excerpt. Donc, wp_trim_excerpt doit faire quelque chose quelque part.

Oui et non. excerpt_length et excerpt_more sont générés par des filtres. Voici l'intérieur de la fonction wp_trim_excerpt():

$excerpt_length = apply_filters('excerpt_length', 55);
$excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');

Par défaut, $excerpt_length sera défini sur 55 et $excerpt_more sera défini sur [...]. Cependant, vous pouvez changer cela dans les thèmes et les plugins. Disons que je voulais envoyer la longueur des extraits découpés à 70 caractères. J'utiliserais le code suivant:

function set_new_trim_length( $excerpt_length ) {
    return 70;
}
add_filter( 'excerpt_length', 'set_new_trim_length' );

Lorsque j'appelle wp_trim_excerpt() plus tard, WordPress passera cette valeur par défaut de 55 à ma fonction de filtrage. Ma fonction de filtre passera alors 70 en retour et wp_trim_excerpt() l'utilisera à la place.

wp_trim_excerpt() ne définit ni ne change excerpt_length ni excerpt_more lorsque vous l'appelez. La fonction utilise simplement les filtres que vous avez déjà définis pour ces variables.

Mise à jour supplémentaire

Mais lorsque vous appelez the_excerpt ou get_the_excerpt, ils sont modifiés par ces filtres. Ce que je veux savoir, c'est "quand" ils sont modifiés par ces filtres.

Tout dépend de la manière dont vous créez le contenu. Un filtre appliqué à get_the_excerpt() transmet le contenu généré à à la fonction wp_trim_excerpt().

Donc, si vous écrivez à la main un extrait, le contenu écrit à la main sera transmis sans modification.

Si vous n'écrivez pas d'extrait ($post->post_excerpt = ''), le contenu de la publication est transmis via wp_trim_excerpt() insted, raccourci et renvoyé.

Pour référence, ce filtre est ajouté sur ligne 147 de /wp-includes/default-filters.php:

add_filter( 'get_the_excerpt', 'wp_trim_excerpt'  );
2
EAMann