J'ai l'impression que je dois manquer quelque chose d'assez évident, ici, mais je n'arrive pas à faire coopérer WordPress.
Je génère des balises Facebook OG avec une fonction. Tout fonctionne bien, sauf l'extrait.
Depuis la dépréciation de get_the_excerpt($post->ID)
, existe-t-il une autre façon de créer un extrait sans avoir à créer une toute nouvelle boucle? Cela me semble excessif.
Mon premier réflexe a été d'utiliser apply_filters()
:
$description = apply_filters('the_excerpt', get_post($post->ID)->post_content);
Cela me donne le message complet, avec un contenu au format HTML. D'accord, ça doit être faux. J'ai donc essayé la prochaine idée logique:
$description = apply_filters('get_the_excerpt', get_post($post->ID)->post_content);
Pas de dé. Maintenant, il n'y a pas de code HTML, mais c'est toujours l'article complet (ce qui est vraiment déroutant).
OK pas de problème. Sautons toutes les choses fantaisistes et allons simplement pour l'entrée coupée:
$description = wp_trim_excerpt(get_post($post->ID)->post_content);
Pas de changement.
Donc, ma question est la suivante: que diable se passe-t-il? Y a-t-il quelque chose qui me manque ici?
Je suis entré dans le noyau WP pour trouver comment cela the_excerpt()
fonctionne, et il semble être identique à mon appel:
/**
* Display the post excerpt.
*
* @since 0.71
* @uses apply_filters() Calls 'the_excerpt' hook on post excerpt.
*/
function the_excerpt() {
echo apply_filters('the_excerpt', get_the_excerpt());
}
J'ai quelques questions basées sur mes conclusions:
- Pourquoi le filtre ne s'applique-t-il pas comme prévu?
- Existe-t-il un moyen d'extraire l'extrait de la boucle sans créer de nouvelle boucle?
- Suis-je fou?
Merci d'avance pour avoir regardé. Je suis assez perplexe, ici.
get_the_excerpt()
n'est plus obsolète, seul le paramètre supplémentaire qui lui était transmis n'est plus utilisé.Réponses:
Il s'avère que la réponse était
wp_trim_excerpt()
.Il est défini dans
wp-includes/functions.php:1879
:Ainsi, tout texte transmis n'est pas traité; cela ne fonctionne que s'il est appelé avec un paramètre vide.
Pour résoudre ce problème, j'ai ajouté un filtre rapide à mon thème qui résout le problème:
C'est un peu redondant, mais je l'aime mieux que d'ouvrir de nouvelles boucles chaque fois que je veux générer un extrait.
la source
get_the_title($post->ID)
disponibles. La dernière ligne de code était$description = wp_trim_excerpt(get_post($post->ID)->post_content);
$content = apply_filters( 'rw_trim_excerpt', $content );
et à mesure$content = rw_trim_excerpt($content);
, mais aucun de ceux-ci n'a fonctionné (l'ancien n'a pas coupé la sortie et le dernier a produit une erreur).get_the_excerpt
manipulation à mimerthe_excerpt
, de sorte que vous pouvez appeler:apply_filters('get_the_excerpt', $content);
.Essayer:
Voir:
get_post
Codex pour tous les membres de retour disponibles.la source
get_the_excerpt()
ne mime pas que, vérifiez la source, il accède uniquement à la variable membre$post
dont estpost_excerpt
. Voir aussi le lien codex dans la réponse.the_excerpt
: "il affichera un extrait automatique qui fait référence aux 55 premiers mots du contenu de l'article." Je cherche à imiter ce comportement en dehors de la boucle.Vous pouvez utiliser ma fonction personnalisée pour filtrer le contenu (il s'agit de NARGA Framework )
Découpage automatique de shortcode, code HTML, suppression [...], ajout de texte "Lire la suite" (traduisible)
la source