Récupérer un extrait en utilisant get_the_excerpt en dehors d'une boucle
-
-
ok,je l'ai obtenuen utilisant `my_excerpt ($post->post_content,get_the_excerpt ())`et en utilisant lafonction `my_excerpt ()` de http://wordpress.stackexchange.com/questions/6961/using-wp-trim-excerpt-pour-obtenir-l'extrait-en-dehors-de-la-boucleok, got it using `my_excerpt($post->post_content, get_the_excerpt())` and using the `my_excerpt()` function from http://wordpress.stackexchange.com/questions/6961/using-wp-trim-excerpt-to-get-the-excerpt-outside-the-loop
- 0
- 2011-08-24
- ariel
-
Veuillez ajouter la solution que vous avezproposée comme réponse,afin que celane hantepas le siteen tant que question sans réponse.:)Please add solution you came up with as an answer, so this doesn't haunt site as unanswered question. :)
- 3
- 2011-09-11
- Rarst
-
Utilisez simplement lafonction `the_post ()` (celafonctionne aussi sur unmodèle depublication unique) avant d'appeler `get_the_excerpt ()` cela configurera les donnéesnécessairespour vous.Just use `the_post()` (it works on single post template too) function before you call `get_the_excerpt()` it will setup necessary data for you.
- 0
- 2014-09-18
- Sisir
-
9 réponses
- votes
-
- 2011-09-13
l'a obtenuen utilisant
my_excerpt($post->post_content, get_the_excerpt())
et en utilisant lafonctionmy_excerpt()
de Utilisation de wp_trim_excerptpour sortirthe_excerpt () de labouclegot it using
my_excerpt($post->post_content, get_the_excerpt())
and using themy_excerpt()
function from Using wp_trim_excerpt to get the_excerpt() outside the loop-
Les réponses aux liens uniquementne sontpasbonnes.Copiez le code correspondantici.Lorsque ce lienest rompu,ce siteesten panne/disparu,alors cette réponsen'a aucune valeur.Link-only answers are no good. Copy the relevant code here. When that link is broken, that site is down / gone, then this answer has no value.
- 2
- 2014-06-18
- random_user_name
-
Cela aparfaitementfonctionnépourmoi!It worked perfectly for me!
- 0
- 2017-07-24
- Saikat
-
- 2014-06-18
J'aitrouvé cette questionen cherchant commentfaire cela sans l'objet depublication.
Mes recherches supplémentaires ont révélé cettetechnique astucieuse:
$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
I found this question when looking how to do this without the post object.
My additional research turned up this slick technique:
$text = apply_filters('the_excerpt', get_post_field('post_excerpt', $post_id));
-
Cela devrait être accepté comme réponse car c'est lamanière recommandée d'extraire les données de laboucle.Nenécessitepasnonplus defonctionpersonnaliséeni de remplacement de la variableglobale `$post`.This should be accepted as answer as it's the recommended way to pull data outside the loop. Also doesn't require any custom function or overriding of the `$post` global variable.
- 1
- 2015-06-16
- MacK
-
il renvoie une chaîne vide.it return empty string.
- 4
- 2016-01-20
- Kyaw Tun
-
@KyawTun - celafonctionne,tant que `$post_id`est défini (quelleest la valeur de` $post_id`? ET `$post_id`est unidentifiant depublication valideet légitime.@KyawTun - it works, so long as `$post_id` is set (what is the value of `$post_id`? AND `$post_id` is a valid, legitimate post ID.
- 1
- 2016-01-20
- random_user_name
-
@cale_b Merci.J'utilise la requêteget_postset j'obtiens l'ID dutableau résultant.L'objet depublication apost_title,post_content,ID,etc. Maisne fonctionnepas.@cale_b Thanks. I use get_posts query and get ID from the resulting array. The post object does have post_title, post_content, ID, etc. But not working.
- 2
- 2016-01-21
- Kyaw Tun
-
Si vous avezjustebesoin de labalise TEXTet non de labalise
quiestincluse avec lefiltre_excerpt,utilisez lefiltre "get_the_excerpt",de sorte que lefiltre ci-dessus devienne: $text=apply_filters ('get_the_excerpt',get_post_field ('post_excerpt',$post_id));celane vous donnera que letexte RAW que vouspouvezinsérern'importe où dans votreproprebalisage.
If you need JUST the TEXT and nottag which is included with the_excerpt filter, then use "get_the_excerpt" filter, so that above filter becomes: $text = apply_filters('get_the_excerpt', get_post_field('post_excerpt', $post_id)); this will give you just the RAW text you can insert anywhere in your own markup.
- 0
- 2016-05-20
- Mohsin
-
Celane fonctionnepasnonpluspourmoi.Rappelez-vous: "l'extrait dumessage. Il s'agit soit d'unextraitfournipar l'utilisateur,quiest retournéinchangé,soit d'une version réduite du contenu complet dumessagegénéré automatiquementet comptéparmots."Pourraitfonctionnerpour celuifournipar l'utilisateur?Je cherchais l'extraitgénéré automatiquement.Doesn't work for me either. Remember: "the excerpt of the post. This is either a user-supplied excerpt, that is returned unchanged, or an automatically generated word-counted trimmed-down version of the full post content." Might work for the user-supplied one? I was looking for the automatically-generated excerpt.
- 0
- 2019-03-20
- Fabien Snauwaert
-
- 2012-06-08
Commeil semble que vous avez déjà l'objet depublicationpour lequel vous avezbesoin de l'extrait,vouspouvez simplementforcer les choses àfonctionner:
setup_postdata( $post ); $excerpt = get_the_excerpt();
Lafonction
setup_postdata()
globalisera l'objet$post
et le rendra disponiblepour l'anciennefonction deboucle classique.Lorsque vous êtes dans laboucle,vous appelezthe_post()
et il configure les chosespour vous ...en dehors de laboucle,vous devez leforcermanuellement.Since it seems you already have the post object you need the excerpt for, you can just force things to work:
setup_postdata( $post ); $excerpt = get_the_excerpt();
The
setup_postdata()
function will globalize the$post
object and make it available for regular old loop function. When you're inside the loop, you callthe_post()
and it sets things up for you ... outside of the loop you need to force it manually.-
Celafonctionnemais: "Vous devezpasser une référence à la variableglobale` $post`,sinon desfonctions comme `the_title ()`ne fonctionnentpas correctement. " `global $post; $post=$post_object; setup_postdata ($post); $extrait=get_the_excerpt ();`This works but: "You must pass a reference to the global `$post` variable, otherwise functions like `the_title()` don't work properly." `global $post;$post = $post_object;setup_postdata( $post );$excerpt = get_the_excerpt();`
- 1
- 2017-01-19
- deach
-
`setup_postdata ($post);` FTW !!!!`setup_postdata($post);` FTW!!!!
- 0
- 2017-04-30
- squarecandy
-
- 2012-06-08
Essayez ceci:
Créez unenouvellefonction dansfunctions.php,puis appelez-la den'importe où.
function get_excerpt_by_id($post_id){ $the_post = get_post($post_id); //Gets post ID $the_excerpt = $the_post->post_content; //Gets post_content to be used as a basis for the excerpt $excerpt_length = 35; //Sets excerpt length by word count $the_excerpt = strip_tags(strip_shortcodes($the_excerpt)); //Strips tags and images $words = explode(' ', $the_excerpt, $excerpt_length + 1); if(count($words) > $excerpt_length) : array_pop($words); array_push($words, '…'); $the_excerpt = implode(' ', $words); endif; $the_excerpt = '<p>' . $the_excerpt . '</p>'; return $the_excerpt; }
Try this:
Create a new function in functions.php and then call it from wherever.
function get_excerpt_by_id($post_id){ $the_post = get_post($post_id); //Gets post ID $the_excerpt = $the_post->post_content; //Gets post_content to be used as a basis for the excerpt $excerpt_length = 35; //Sets excerpt length by word count $the_excerpt = strip_tags(strip_shortcodes($the_excerpt)); //Strips tags and images $words = explode(' ', $the_excerpt, $excerpt_length + 1); if(count($words) > $excerpt_length) : array_pop($words); array_push($words, '…'); $the_excerpt = implode(' ', $words); endif; $the_excerpt = '<p>' . $the_excerpt . '</p>'; return $the_excerpt; }
-
Excellenttrouvermon ami.Jen'aijamais comprispourquoi WordPress aurait désapprouvé unefonction aussi critique.Cela le reconstruitefficacement àpartir de zéro,mais celafonctionne.Étant donné lafréquence à laquellenous utilisons l'extraiten dehors de laboucle avec desfonctionnalitéstelles que lesplugins departage social,il auraitprobablement dû rester unepartie dunoyau.Excellent find my friend. I've never understood why WordPress would have deprecated such a critical function. This is effectively rebuilding it from scratch, but it works. Given how often we use the excerpt outside the loop with features like social sharing plugins, it probably should have remained a part of the core.
- 1
- 2014-05-15
- Imperative Ideas
-
La réponse d'EAMannest unebien meilleure approche de ceproblème,et devrait être considérée comme lameilleurepratique.Cette approche dupliqueessentiellement les composantsinternes de Core au lieu d'utiliser l'API.EAMann's answer is a much better approach to this problem, and the should be considered the best practice. This approach is basically duplicating Core's internals instead of using the API.
- 1
- 2015-03-24
- Ian Dunn
-
- 2016-05-20
Vouspouvezmaintenant simplement utiliser
get_the_excerpt( $postID )
fonction. Depuis: WordPress 4.5.0 aintroduit leparamètre$post
.Now you can simply use the
get_the_excerpt( $postID )
function. Since: WordPress 4.5.0 introduced the$post
parameter.-
Cela devrait être unenouvelle réponse acceptéepuisquenous sommes dans l'ère WP 4.5 +.This should be new accepted answer since we are in WP 4.5 + era.
- 1
- 2016-06-13
- Matija Mrkaic
-
Celane fonctionnerapas si l'extraitest vide car lefiltre `wp_trim_excerpt` renverra l'extrait dumessage actuel.This won't work if the excerpt is empty as the `wp_trim_excerpt` filter will return the excerpt for the current post.
- 18
- 2016-08-16
- Dylan
-
Voir https://core.trac.wordpress.org/ticket/36934pourplus de détails sur ce que @Dylan a ditSee https://core.trac.wordpress.org/ticket/36934 for details on what @Dylan said
- 9
- 2016-09-14
- kraftner
-
- 2012-11-25
Si vousn'avezpas l'objet depublication,voici une courtefonction comme celle de Withers.
function get_excerpt_by_id($post_id){ $the_post = get_post($post_id); $the_excerpt = $the_post->post_excerpt; return $the_excerpt; }
In case you don't have the post object, here's a short function like the one from Withers.
function get_excerpt_by_id($post_id){ $the_post = get_post($post_id); $the_excerpt = $the_post->post_excerpt; return $the_excerpt; }
-
Mais le demandeur a un objet depublication commeindiqué dans la question.But the asker has a post object as stated in the question.
- 0
- 2012-11-25
- fuxia
-
Corrigez-moi sije metrompe,cetteméthode renverra l'extraitmanuelmais **n'engénérerapas ** sinécessaireCorrect me if I'm wrong, this method will return the manual excerpt but **won't** generate one if needed
- 3
- 2014-11-07
- Bill
-
- 2014-09-30
function custom_get_excerpt ($post_id) { $temp=$post; $post=get_post ($post_id); setup_postdata ($post); $extrait=get_the_excerpt (); wp_reset_postdata (); $post=$temp; return $extrait; }
This is for when you want to use
get_the_excerpt()
outside the loop:function custom_get_excerpt($post_id) { $temp = $post; $post = get_post($post_id); setup_postdata($post); $excerpt = get_the_excerpt(); wp_reset_postdata(); $post = $temp; return $excerpt; }
-
C'est lafaçon laplus directe de lefaire. Jene suispas sûr que ce soit uneexcellenteperformance.Vous obteneztoujoursmon +1This is the most direct way to do it.. Not sure it's great performance-wise though. You still get my +1
- 0
- 2014-11-07
- Bill
-
- 2017-05-15
Si vous souhaitezgénérer l'extrait automatiquement àpartir du contenu sur une seule ligne,vouspouvez utiliser
wp_trim_words
fonctionne comme ceci:// 30 is the number of words ehere $excerpt = wp_trim_words(get_post_field('post_content', $post_id), 30);
If you'd like to generate the excerpt automatically from the content in one line - you can use
wp_trim_words
function like this:// 30 is the number of words ehere $excerpt = wp_trim_words(get_post_field('post_content', $post_id), 30);
-
-
Veuillez ** [modifier] votre réponse **,et ajouter uneexplication: **pourquoi ** celapourrait-il résoudre leproblème?Please **[edit] your answer**, and add an explanation: **why** could that solve the problem?
- 0
- 2018-03-14
- fuxia
-
J'ai un code qui appelle
get_the_title()
et celafonctionne,maisget_the_excerpt()
renvoie vide.Commentpuis-je lefairefonctionner?Ce codeest à l'intérieur d'unplugin appelé "WP Facebook Open Graphprotocol".Voici lapartie queje souhaitemodifier:
Ici,
has_excerpt
échouetoujours,etget_the_excerpt($post->ID)
ne fonctionneplus (obsolète).Alors,commentpuis-je afficher l'extrait là-bas?
ps: J'utilise également leplugin "Advanced Excerpt"