OBTENGA el extracto por ID
-
-
¿Quéesexactamente "parte" del contenido?what exactly is "some" of the content?
- 0
- 2011-03-19
- kaiser
-
Lafunción deextractoen wordpress devuelveelextracto de unapublicación.Si lapublicaciónnotiene unextracto,devuelve un ciertonúmero de caracteres del contenido seguido de '...' o 'leermás' o lo queproporcione laplantillaThe excerpt function in wordpress returns the excerpt of a post. If the post does not have an excerpt it returns a certain number of characters of the content followed by '...' or 'read more' or whatever the template provides
- 0
- 2011-03-19
- Robin I Knight
-
No ser un PITA,pero las reglas de la comunidadnopermitenfirmas y cierresestándar.Para cumplir con las reglas yevitar que [Jeff Atwood] (http://stackexchange.com/about/management) leenvíe unmensaje severo después deeditartodas suspreguntas,deje de usar * "Marvelous" * como cierre.* (Yporfavor,no dispares almensajero) *Not to be a PITA but community rules disallow signatures and standard closings. So as to abide by the rules and avoid having [Jeff Atwood](http://stackexchange.com/about/management) send you a stern message after editing all your questions, please stop using *"Marvellous"* as a closing. *(And please don't shoot the messenger)*
- 1
- 2011-03-19
- MikeSchinkel
-
10 respuestas
- votos
-
- 2011-03-19
Hola @Robin I. Knight:
Veo
get_the_excerpt()
como unafunción con diseño heredado.Amedida queel uso de WordPress ha crecido,haymuchos casos de usonuevosen los quenoencaja,pero sí lo hacen lasfuncionesmásnuevaspara obtener datos diferentes.Unejemploesel uso ahorafrecuente de unamatriz$args
de opciones defunción.Peroesfácil de solucionarpara susnecesidades.Aquí hay unafunción alternativa quepuede usar y quepuede colocaren cualquier lugar del archivo
functions.php
de sutema:function robins_get_the_excerpt($post_id) { global $post; $save_post = $post; $post = get_post($post_id); $output = get_the_excerpt(); $post = $save_post; return $output; }
No lo heprobado,peroestoybastante seguro de que lo hicebien.Siestono satisface susnecesidades,porfavorexplique ytal vezpueda hacer otras sugerencias.
Hi @Robin I. Knight:
I view
get_the_excerpt()
as a function with legacy design. As WordPress usage has grown there are many newer use-cases where it doesn't fit but where the newer functions for getting different data do. One example is the now frequent use of an$args
array of function options.But it's easy to fix for your needs. Here's an alternative function you can use which you can put anywhere in your theme's
functions.php
file:function robins_get_the_excerpt($post_id) { global $post; $save_post = $post; $post = get_post($post_id); $output = get_the_excerpt(); $post = $save_post; return $output; }
I've not tested it but am pretty sure I got it right. If this doesn't meet your needs please elaborate and maybe I can make other suggestions.
-
Funciona.Algo así como.Resultadosmuyextraños.Definitivamenteestá cumpliendo sufunción,pero los resultados sonextraños.Loestoy usandojunto con GET_Posts y,por alguna razón,las 2publicaciones de obtenciónprincipales son siempre lasmismas.Aquí hay unenlace y verás a quéme refiero.Mire las 4publicacionesen el lado derecho.http://www.divethegap.com/update/community/feedback/2010/06/steve-riches/It works. Sort of. Very odd results. It is definitely performing its function but the results are odd. I am using it in conjunction with GET_Posts and for some reason the top 2 get posts are always the same. Here is a link and you will see what I mean. Look at the 4 posts on the right hand side. http://www.divethegap.com/update/community/feedback/2010/06/steve-riches/
- 0
- 2011-03-19
- Robin I Knight
-
@Robin I Knight:publique su códigofuente debucle como una actualización de supregunta;esmuy difícil depurar código sin verlo.Tambiénesposible que sea un complementoel queestá causandoelproblema;intente desactivarlos uno a la vez.@Robin I Knight: Please post your loop source code as an update to your question; it's very hard to debug code without seeing code. It's also possibly a plugin that is causing the problem; try disabling them one at a time.
- 0
- 2011-03-19
- MikeSchinkel
-
Códigofuente debucleen cuestión arriba ^^Loop source code in question above ^^
- 0
- 2011-03-19
- Robin I Knight
-
Por cierto,cambiéelnombre de lafunción aget_the_excerpt_id ($post_id)BTW I changed the name of the function to get_the_excerpt_id($post_id)
- 0
- 2011-03-20
- Robin I Knight
-
@Robin I Knight:no veonadaen subucle,peropuedeintentar llamar a `setup_postdata ($post)` al comienzo de subucle,como sugiere @Rarst.Siesonofunciona,esposible que deba deshabilitar un complemento;hasprobadoeso?Yprobablementeno quieras llamarlo `get_the_excerpt_id ()`porque WordPresspodría agregaresafunciónen elfuturo y rompertu sitio.Yprobablementepodríaprescindir de lafunciónen su ciclo usando `foreach ($ stories as $ story):global $post;$publicación=$ historia; `en su lugar.@Robin I Knight - I don't see anything in your loop, but you might try calling `setup_postdata($post)` at the beginning of your loop, as @Rarst suggests. If that doesn't work it might be a plugin you need to disable; have you tried that? And you probably don't want to call it `get_the_excerpt_id()` because WordPress could add that function in the future and break your site. And you could probably do without the function in your loop by using `foreach($stories as $story): global $post; $post = $story;` instead.
- 0
- 2011-03-20
- MikeSchinkel
-
- 2011-03-20
Lamecánica delextractoesextremadamente confusa.Noes una respuestaprecisa a supregunta,peroen general,sinecesita crearetiquetas deplantilla,específicaspara Loop,trabajar con lamatriz devueltapor
get_posts()
,puedeemular Loop deestamanera:$stories = get_posts(); foreach ($stories as $post) { setup_postdata($post); // stuff } wp_reset_postdata();
The mechanics of excerpt are extremely confusing. It is not precise answer to your question but in general if you need to make template tags, specific to Loop, work with array returned by
get_posts()
you can emulate Loop like this:$stories = get_posts(); foreach ($stories as $post) { setup_postdata($post); // stuff } wp_reset_postdata();
-
¿quépasa con wp_reset_query ();?what about wp_reset_query(); ?
- 0
- 2012-01-27
- cwd
-
@cwd si solo se usa `setup_postdata ()` la consultaglobalno se ve afectada y solo se deben restablecer los datos depublicación.@cwd if only using `setup_postdata()` global query is not affected and only post data needs to be reset.
- 1
- 2012-01-27
- Rarst
-
Esta soluciónes una aleaciónmás limpia que almacenar lapublicaciónen otra var y requerir otrapublicación solopara que seaglobal.+1This solution is allot cleaner than storing the post in another var and requering another post just to get it global. +1
- 0
- 2013-04-10
- Barry Kooij
-
Gracias @Rarst queme ayudó.Añadiendo setup_postdata ($publicación);resolviómisproblemasThanks @Rarst that helped me out. Adding setup_postdata($post); resolved my issues
- 0
- 2014-11-14
- Simon
-
- 2012-01-14
Hay unanuevafunción desde la 3.3.0: wp_trim_words
Loestoy usandofuera del ciclo de la siguientemanera:
<?php if ( $post_id ) { $post = get_post( $post_id ); if ( $post ) { ?> <h2><?php echo $post->post_title; ?></h2> <p><em><?php echo wp_trim_words( $post->post_content ); ?></em></p> <p><strong>This article can only be read by subscribers.</strong></p> <?php } } ?>
Estono debe confundirse con wp_trim_excerpt que aparentemente solofunciona dentro del ciclo,ya que llama athe_content ()internamente.
There is a new function since 3.3.0: wp_trim_words
I'm using it outside the loop as follows:
<?php if ( $post_id ) { $post = get_post( $post_id ); if ( $post ) { ?> <h2><?php echo $post->post_title; ?></h2> <p><em><?php echo wp_trim_words( $post->post_content ); ?></em></p> <p><strong>This article can only be read by subscribers.</strong></p> <?php } } ?>
This is not to be confused with wp_trim_excerpt that apparently only works within the loop, since it calls the_content() internally.
-
- 2013-08-30
Solopara agregar algo a la respuesta de MikeSchinkel,quepor alguna razónnofuncionaríaparamí.Tuve que agregar la línea setup_postdatapara quefuncione.
function get_the_excerpt( $post_id ){ global $post; $save_post = $post; $post = get_post($post_id); setup_postdata( $post ); // hello $output = get_the_excerpt(); $post = $save_post; return $output;
}
Supongo que siestá usandoestofuera del ciclo,entoncesno deberíainterferir con otros setup_postdata.
Saludos
Just to add to MikeSchinkel's answer, which for some reason wouldn't work for me. I had to add the setup_postdata line to make it work.
function get_the_excerpt( $post_id ){ global $post; $save_post = $post; $post = get_post($post_id); setup_postdata( $post ); // hello $output = get_the_excerpt(); $post = $save_post; return $output;
}
I'm assuming if you're using this outside the loop then it shouldn't interfere with other setup_postdata going on.
Cheers
-
Probé la respuesta de MikeSchinkel ynofuncionóparamí.La configuración de los datos de lapublicaciónfuncionó.Enmi caso,sin 'setup_postdata',lafunción devolvióeltítulo +extracto de lapublicaciónprincipal.I tried MikeSchinkel's answer and it did not work for me. Setting up post data did the trick. In my case without the 'setup_postdata' the function returned the title+excerpt of the parent post.
- 0
- 2016-09-25
- turzifer
-
- 2013-05-02
Basándoseen la respuesta de @ Maxime,¿funcionaríaesto?
$post = get_post( $id ); $excerpt = ( $post->post_excerpt ) ? $post->post_excerpt : $post->post_content;
Meparecebastante sencillo,perome pregunto sime estoyperdiendo algo.
Building on @Maxime's answer, would this work?
$post = get_post( $id ); $excerpt = ( $post->post_excerpt ) ? $post->post_excerpt : $post->post_content;
It seems straight forward enough to me, but I'm wondering if I'm missing something.
-
- 2011-07-11
Si TODAS tuspublicacionestienen laetiqueta
<!--more-->
,entoncespuedes usar lo siguiente contu código anterior:$sjc_excerpt = explode( '<!--more-->', $post->post_content); echo wpautop( $sjc_excerpt[0] );
Por supuesto,sitienespublicaciones quenotienen laetiqueta
<!--more-->
,semostraránen sutotalidad.Funcionaen mi situación,peronoparatodos ...If ALL your posts have the
<!--more-->
tag, then you can use the following with your code above:$sjc_excerpt = explode( '<!--more-->', $post->post_content); echo wpautop( $sjc_excerpt[0] );
Of course if you have any posts that don't have the
<!--more-->
tag, they'll be shown in their entirety. Works in my situation, but not for all... -
- 2016-04-19
Veo
get_the_excerpt()
como unafunción con diseño heredado.Amedida queel uso de WordPress ha crecido,haymuchos casos de usonuevosen los quenoencaja,pero sí lo hacen lasfuncionesmásnuevaspara obtener datos diferentes.Unejemploesel uso ahorafrecuente de unamatriz$args
de opciones defunción.Peroesfácil de solucionarpara susnecesidades.Aquí hay unafunción alternativa quepuede usar y quepuede colocaren cualquier lugar del archivo
functions.php
de sutema:function robins_get_the_excerpt($post_id) { global $post; $save_post = $post; $post = get_post($post_id); $output = get_the_excerpt(); $post = $save_post; return $output; }
Solopara agregar algo a la respuesta de MikeSchinkel,quepor alguna razónnofuncionaríaparamí.Tuve que agregar la línea setup_postdatapara quefuncione.
I view
get_the_excerpt()
as a function with legacy design. As WordPress usage has grown there are many newer use-cases where it doesn't fit but where the newer functions for getting different data do. One example is the now frequent use of an$args
array of function options.But it's easy to fix for your needs. Here's an alternative function you can use which you can put anywhere in your theme's
functions.php
file:function robins_get_the_excerpt($post_id) { global $post; $save_post = $post; $post = get_post($post_id); $output = get_the_excerpt(); $post = $save_post; return $output; }
Just to add to MikeSchinkel's answer, which for some reason wouldn't work for me. I had to add the setup_postdata line to make it work.
-
¿Estonecesita `wp_reset_postdata ()`parafuncionar dentro del ciclo?Does this need `wp_reset_post_data()` to work inside the loop?
- 0
- 2017-07-10
- Chris Pink
-
Aparentemente (después de recorreresta casaen particular) ahoraesparte delnúcleo.Apparently (after going around this particular house) it's now part of core.
- 0
- 2017-07-10
- Chris Pink
-
- 2016-06-08
Estees unpequeñoesquema de dos líneas que usomucho utilizando wp_trim_words . Constantementeme encuentronecesitando la abreviatura y leomásfuncionalidadesfuera del ciclo. Alguienmáspuedeencontraresto útil. Entoncesestoes lo que usopara:
- Obtengaelextractopor ID de POST
- Obtener contenido de lapublicación sino se ha configuradoningúnextracto,
- Establecer la longitud de lapalabra delextracto
- Elijael contenidopara Leermás (enlace/texto)
Pongoestoen línea,directamenteen laplantillapersonalizada queestoyeditando.
//Get Post Object $dapost = get_post(POST_ID); //Get the Execerpt $my_excerpt = wp_trim_words( apply_filters( "the_excerpt", get_the_excerpt($dapost) ? get_the_excerpt($dapost) : $dapost->post_content ), "20", "<a href='$dapost->guid'> ".__('Get More Stuff', 'translation')."</a>" );
Desglose
1.El contenido delextracto
Obtengaelextractopor ID depublicación,pero obtengael contenido de lapublicación sino se ha configuradoningúnextracto.
Estoy usando la abreviatura de PHP If/Else .
$dapost = get_post(POST_ID); apply_filters( "the_excerpt", get_the_excerpt($dapost) ? get_the_excerpt($dapost) : $dapost->post_content
2. Longitud de lapalabra
Establezca la cantidad depalabrasen elextractoen 20×
"20"
3. Elija Leermás contenido (enlace/texto)
"<a href='$dapost->guid'> ".__('Get More Stuff', 'translation')."</a>"
Usé
$dapost->guid
para obtener la URL,porquenonecesitaba URL amigables y queríaevitar otra llamada a labase de datos. Siemprepuedes usarget_the_permalink.Consulte wp_trim_words en la documentación de Wordpress.
This is a little two-liner I use a lot utilizing wp_trim_words. I constantly finding myself needing the abbreviation and read more functionalities outside of the loop. Some one else may find this useful. So this is what I use to:
- Get the Excerpt by POST ID
- Get Post Content If no Excerpt has been set,
- Set the Word length of the Excerpt
- Choose the Content for the Read More(Link/Text)
I put this inline, directly in the custom template I am editing.
//Get Post Object $dapost = get_post(POST_ID); //Get the Execerpt $my_excerpt = wp_trim_words( apply_filters( "the_excerpt", get_the_excerpt($dapost) ? get_the_excerpt($dapost) : $dapost->post_content ), "20", "<a href='$dapost->guid'> ".__('Get More Stuff', 'translation')."</a>" );
Break Down
1.The excerpt content
Get the Excerpt by Post ID but, get Post Content If no Excerpt has been set.
I am using If/Else PHP shorthand.
$dapost = get_post(POST_ID); apply_filters( "the_excerpt", get_the_excerpt($dapost) ? get_the_excerpt($dapost) : $dapost->post_content
2. Word length
Set the amount of words in the Excerpt to 20
"20"
3. Choose ReadMore Content(Link/Text)
"<a href='$dapost->guid'> ".__('Get More Stuff', 'translation')."</a>"
I used
$dapost->guid
to get the URL, because I did not need friendly URLs, and wanted to avoid another call to the DB. You could always use get_the_permalink.See wp_trim_words in the Wordpress Documentation.
-
-
- 2018-09-07
Desde WP 4.5.0esposible usarel ID depublicación comoparámetro
get_the_excerpt( $post->ID )
Fuente: https://developer.wordpress.org/reference/functions/get_the_excerpt/
From WP 4.5.0 is possible use the post ID as parameter
get_the_excerpt( $post->ID )
Source:https://developer.wordpress.org/reference/functions/get_the_excerpt/
¿Por quéno sepuede obtenerelextractopor ID como coneltítulo y lamayoría de los otroselementos?
p.ej.get_the_excerpt (ID). Sé cómo usarlo con lafunción $post->post_excerptperoesono devuelveparte del contenido sino seingresó unextracto,simplementeno devuelvenada.
Entonces,lo queestoytratando de haceres obtenerelextractopor ID si hay unextracto,y sino hay unextracto conesa IDpero hay algo de contenido,obtenerparte del contenidoen su lugar.
¿Cómo se haríaeso?
Algunaidea,
Maravilloso ...
EDITAR -
Códigofuente debucle según lo solicitado.