Je construis un thème qui va montrer des extraits sur la page d'accueil pour potentiellement des dizaines de messages. Je n'ai pas d'extraits manuels sur tous mes messages, il $post->post_excerpt
est donc vide pour de nombreux messages. Dans le cas où il n'y a pas d'extrait manuel, je voudrais utiliser la fonction intégrée get_the_excerpt (), mais elle n'est pas disponible en dehors de la boucle.
En recherchant la fonction, il semble qu'elle utilise wp_trim_excerpt de wp-includes / formating.php pour créer des extraits à la volée. Je l'appelle comme dans mon code wp_trim_excerpt( $item->post_content )
, mais il renvoie simplement le contenu complet. Est-ce que je fais quelque chose de mal?
Je sais que je peux créer ma propre fonction pour créer un extrait, mais j'aime utiliser des fonctions intégrées dans la mesure du possible, en gardant mon code compatible avec d'autres plugins / filtres potentiels.
http://adambrown.info/p/wp_hooks/hook/wp_trim_excerpt?version=3.0&file=wp-includes/formatting.php
$myvar = apply_filters( 'the_excerpt', $myvar );
Réponses:
Depuis WP 3.3.0,
wp_trim_words()
est utile si vous pouvez obtenir le contenu pour lequel vous souhaitez générer un extrait. J'espère que cela est utile à quelqu'un et qu'il permet de créer votre propre fonction de comptage de mots.http://codex.wordpress.org/Function_Reference/wp_trim_words
la source
wp_trim_excerpt()
a un peu de mécanique curieuse - si quelque chose lui est transmis alors il ne fait rien.Voici la logique de base derrière cela:
get_the_excerpt()
vérifie l'extrait manuel;wp_trim_excerpt()
car il n'y a pas d'extrait manuel et en fait un à partir du contenu ou du teaser.Les deux sont étroitement liés aux variables globales et donc Loop.
En dehors de la boucle, il vaut mieux retirer le code
wp_trim_excerpt()
et écrire votre propre fonction de découpage.la source
Mise à jour:
Voici un dérivé de wp_trim_excerpt () que j'ai utilisé. Marche parfaitement. Dérivé de Wordpress version 3.0.4
la source
Voici mon point de vue sur un "trim_excerpt" qui prend l'objet de publication ou un ID de publication comme paramètre.
Évidemment basé sur ce qui est au cœur. Je ne sais pas pourquoi cela (et get_the_author ()) n'ont pas d'équivalents non-boucle.
la source
+1 à Rast. Il est très étrange qu'il n'y ait rien de tel que get_the_excerpt ($ post-> ID), alors que cela devrait être assez évident. Quoi qu'il en soit, voici wp_trim_excerpt () dans wordpress version 3.0.4:
http://core.trac.wordpress.org/browser/tags/3.0.4/wp-includes/formatting.php
Vous pouvez voir sur la ligne 1826 qu'elle est liée à la variable globale $ post via get_the_contents. Et oui, je n'ai aucune idée de ce qu'ils pensaient. Mais à partir d'ici, remplacez get_the_content par $ text dans votre propre my_excerpt, et il devrait se comporter de la même manière.
la source
La fonction get_the_content () retournerait le contenu complet si $ more! = 0. Vous devez définir la variable globale $ more sur 0 pour vous assurer que la fonction get_the_content () renvoie un extrait.
Fonction wp_trim_excerpt () modifiée:
la source
En utilisant les réponses des autres ci-dessus, voici une réponse plus simple qui semble bien fonctionner:
Je l'utilise dans les
<meta>
balises d'une fonction pour définir des descriptions OpenGraph. Alors j'ajoute juste:la source