Obtenga un extracto usando get_the_excerpt fuera de un bucle
-
-
ok,lo obtuve usando `my_excerpt ($post->post_content,get_the_excerpt ())` y usando lafunción `my_excerpt ()` de http://wordpress.stackexchange.com/questions/6961/using-wp-trim-excerpt-para-obtener-el-extracto-fuera-del-ciclook, 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
-
Agregue la solución que se le ocurrió como respuesta,para queestonopersiga al sitio como unapregunta sin respuesta.:)Please add solution you came up with as an answer, so this doesn't haunt site as unanswered question. :)
- 3
- 2011-09-11
- Rarst
-
Simplemente use lafunción `the_post ()` (tambiénfuncionaen unaplantilla depublicación única) antes de llamar a `get_the_excerpt ()` y configurará los datosnecesariospara usted.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 respuestas
- votos
-
- 2011-09-13
lo obtuve usando
my_excerpt($post->post_content, get_the_excerpt())
y usando lafunciónmy_excerpt()
de Utilizando wp_trim_excerptpara obtenerthe_excerpt ()fuera del ciclogot 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-
Las respuestas de soloenlaceno sonbuenas.Copieel código relevante aquí.Cuandoeseenlaceestá roto,ese sitioestá caído/desaparecido,entoncesesta respuestanotiene valor.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
-
¡Funcionóperfectamenteparamí!It worked perfectly for me!
- 0
- 2017-07-24
- Saikat
-
- 2014-06-18
Encontréestapregunta cuandobuscaba cómo haceresto sin el objeto depublicación.
Miinvestigación adicional dio como resultadoestatécnicaingeniosa:
$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));
-
Esto debe aceptarse como respuesta,ya quees laforma recomendada deextraer datosfuera del ciclo.Tampoco requiereningunafunciónpersonalizadani anular la variableglobal `$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
-
devuelve una cadena vacía.it return empty string.
- 4
- 2016-01-20
- Kyaw Tun
-
@KyawTun -funciona,siempre que seestablezca `$post_id` (¿cuálesel valor de` $post_id`? Y `$post_id`es una ID depublicación válida y legítima.@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 Gracias.Utilizo la consultaget_posts y obtengo laidentificación de lamatriz resultante.El objeto depublicacióntiene post_title,post_content,ID,etc. Peronofunciona.@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
-
Sinecesita SOLO laetiqueta TEXT yno laetiqueta
que seincluye conelfiltro_excerpt,utiliceelfiltro "get_the_excerpt",para queelfiltro anterior se conviertaen: $text=apply_filters ('get_the_excerpt',get_post_field ('post_excerpt',$post_id));esto le dará soloeltexto RAW quepuedeinsertaren cualquier lugar de supropiomarcado.
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
-
Tampocofuncionaparamí.Recuerde: "elextracto de lapublicación. Estees unextractoproporcionadoporel usuario,que se devuelve sin cambios,o una versión recortada del contenido completo de lapublicacióngenerada automáticamenteporel recuento depalabras".¿Podríafuncionarparaelproporcionadoporel usuario?Estababuscandoelextractogenerado automáticamente.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
Comoparece que yatiene el objeto depublicaciónparael quenecesitaelextracto,puedeforzar que las cosasfuncionen:
setup_postdata( $post ); $excerpt = get_the_excerpt();
Lafunción
setup_postdata()
globalizaráel objeto$post
y lo hará disponiblepara lafunción debucle antiguonormal.Cuandoestás dentro del ciclo,llamas athe_post()
y configura las cosasparati ...fuera del ciclonecesitasforzarlomanualmente.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.-
Estofuncionapero: "Debespasar una referencia a la variableglobal` $post`,de lo contrariofunciones como `the_title ()`nofuncionan correctamente ". `global $post; $post=$post_object; setup_postdata ($post); $extracto=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 ($publicación);` FTW !!!!`setup_postdata($post);` FTW!!!!
- 0
- 2017-04-30
- squarecandy
-
- 2012-06-08
Pruebeesto:
Cree unanuevafunciónen functions.php y luego llámela desde cualquier lugar.
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; }
-
Excelenteencontrar ami amigo.Nunca heentendidopor qué WordPress habría desaprobado unafuncióntan crítica.Estoefectivamente loestá reconstruyendo desde cero,perofunciona.Dada lafrecuencia con la que usamoselextractofuera del ciclo con características como complementospara compartiren redes sociales,probablemente debería haberpermanecido comoparte delnúcleo.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 respuesta de EAMannes unenfoquemuchomejorparaesteproblema,y debe considerarse lamejorpráctica.Esteenfoque consistebásicamenteen duplicar los componentesinternos de Coreen lugar de utilizar la 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
Ahorapuede simplemente usar
get_the_excerpt( $postID )
función. Desde: WordPress 4.5.0introdujoelparámetro$post
.Now you can simply use the
get_the_excerpt( $postID )
function. Since: WordPress 4.5.0 introduced the$post
parameter.-
Esta debería ser unanueva respuesta aceptada ya queestamosen laera WP 4.5 +.This should be new accepted answer since we are in WP 4.5 + era.
- 1
- 2016-06-13
- Matija Mrkaic
-
Estonofuncionará sielextractoestá vacío ya queelfiltro `wp_trim_excerpt` devolveráelextracto de lapublicación actual.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
-
Consulte https://core.trac.wordpress.org/ticket/36934para obtener detalles sobre lo que dijo @DylanSee https://core.trac.wordpress.org/ticket/36934 for details on what @Dylan said
- 9
- 2016-09-14
- kraftner
-
- 2012-11-25
En caso de quenotengael objeto depublicación,aquí hay unafunción corta como la 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; }
-
Peroel autor de lapreguntatiene un objeto depublicación como seindicaen lapregunta.But the asker has a post object as stated in the question.
- 0
- 2012-11-25
- fuxia
-
Corrígeme sime equivoco,estemétodo devolveráelextractomanualpero **no **generará uno siesnecesarioCorrect 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
Estoespara cuando desee utilizar
get_the_excerpt()
fuera del ciclo: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; }
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; }
-
Estaes laformamás directa de hacerlo ... Aunquenoestoy seguro de que sea ungran rendimiento.Todavíatienesmi +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 deseagenerarelextracto automáticamente apartir del contenidoen una línea,puede usar
wp_trim_words
función comoesta:// 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);
-
-
** [edite] su respuesta ** y agregue unaexplicación: ** ¿por qué **estopodría resolverelproblema?Please **[edit] your answer**, and add an explanation: **why** could that solve the problem?
- 0
- 2018-03-14
- fuxia
-
Tengo un código que llama a
get_the_title()
yfunciona,peroget_the_excerpt()
regresa vacío.¿Cómopuedo hacer quefuncione?Este códigoestá dentro de un complemento llamado "Protocolo WP Facebook Open Graph".Aquíestá laparte que quiero cambiar:
Aquí,
has_excerpt
siemprefalla,yget_the_excerpt($post->ID)
yanofunciona (obsoleto).Entonces,¿cómopuedomostrarelextracto allí?
pd:tambiénestoy usandoel complemento "Extracto avanzado"