¿Cómo puedo limitar la longitud de los caracteres en un extracto?
2 respuestas
- votos
-
- 2012-10-30
agregueestas líneasen el archivofunction.php
function custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
add these lines in function.php file
function custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
-
Esto limitaelnúmero depalabras a 20,no los caracteres.This limits the number of words to 20, not the characters.
- 9
- 2016-12-07
- Ionut
-
¿Por qué hemos agregadoelnúmero 999 aquí?Why we have added number 999 here?
- 0
- 2018-04-11
- Navnish Bhardwaj
-
@NavnishBhardwaj 999es laprioridadpara que se cargueelfiltro.consulte aquípara obtenermás detalles. https://developer.wordpress.org/reference/functions/add_filter/@NavnishBhardwaj 999 is the priority for the filter to be loaded. refer here for more details. https://developer.wordpress.org/reference/functions/add_filter/
- 1
- 2018-04-18
- Annapurna
-
- 2012-10-30
Además delgancho defiltro anteriorproporcionadopor la respuesta de Deepa,aquí hay unafunción adicional quepuede ayudarlo aextenderel uso de
the_excerpt
de dosmaneras,Tepermite ...
Limiteelextractoporelnúmero de caracterespero NOtrunque la últimapalabra. Esto lepermitirá devolver unnúmeromáximo de caracteres,pero conservará laspalabras completas,por lo que solo se devolverán laspalabras quepueden caber dentro del límite denúmeroespecificado y lepermitiráespecificar lafuente de donde vendráelextracto.
function get_excerpt($limit, $source = null){ $excerpt = $source == "content" ? get_the_content() : get_the_excerpt(); $excerpt = preg_replace(" (\[.*?\])",'',$excerpt); $excerpt = strip_shortcodes($excerpt); $excerpt = strip_tags($excerpt); $excerpt = substr($excerpt, 0, $limit); $excerpt = substr($excerpt, 0, strripos($excerpt, " ")); $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt)); $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>'; return $excerpt; } /* Sample... Lorem ipsum habitant morbi (26 characters total) Returns first three words which is exactly 21 characters including spaces Example.. echo get_excerpt(21); Result... Lorem ipsum habitant Returns same as above, not enough characters in limit to return last word Example.. echo get_excerpt(24); Result... Lorem ipsum habitant Returns all 26 chars of our content, 30 char limit given, only 26 characters needed. Example.. echo get_excerpt(30); Result... Lorem ipsum habitant morbi */
Estafunción sepuede utilizar varias vecesen los archivos detema,cada uno con diferentes límites de caracteresespecificados.
Estafuncióntiene la capacidad de recuperar unextracto de
the_content
the_excerpt
Porejemplo,sitiene publicaciones que contienentextoen el cuadro_excerpten lapantalla deleditor depublicaciones,pero deseaextraer unextracto del cuerpo del_contenten su lugarpara un caso de usoespecial que lo haría;
get_excerpt(140, 'the_content'); //excerpt is grabbed from get_the_content
Esto le dice a lafunción que desea losprimeros 140 caracteres de
the_content
,independientemente de si unextractoestá configuradoen el cuadrothe_excerpt
.get_excerpt(140); //excerpt is grabbed from get_the_excerpt
Esto le dice a lafunción que desea losprimeros 140 caracteres de
the_excerpt
primero y sinoexisteningúnextracto,the_content
se usará como respaldo.Lafunciónpuedemejorarsepara que seamáseficiente oincorporarse conel uso defiltros de WordPresstantopara
the_content
othe_excerpt
o simplemente usarsetal cualen situaciones donde noes una alternativa adecuada a la API de WordPressincorporada.In addition to the above filter hook supplied by Deepa's answer here is one additional function that can help you extend the use of
the_excerpt
in two ways,Allows you to...
Limit the excerpt by number of characters but do NOT truncate the last word. This will allow you to return a maximum number of characters but preserve full words, so only the words that can fit within the specified number limit are returned and allow you to specify the source of where the excerpt will come from.
function get_excerpt($limit, $source = null){ $excerpt = $source == "content" ? get_the_content() : get_the_excerpt(); $excerpt = preg_replace(" (\[.*?\])",'',$excerpt); $excerpt = strip_shortcodes($excerpt); $excerpt = strip_tags($excerpt); $excerpt = substr($excerpt, 0, $limit); $excerpt = substr($excerpt, 0, strripos($excerpt, " ")); $excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt)); $excerpt = $excerpt.'... <a href="'.get_permalink($post->ID).'">more</a>'; return $excerpt; } /* Sample... Lorem ipsum habitant morbi (26 characters total) Returns first three words which is exactly 21 characters including spaces Example.. echo get_excerpt(21); Result... Lorem ipsum habitant Returns same as above, not enough characters in limit to return last word Example.. echo get_excerpt(24); Result... Lorem ipsum habitant Returns all 26 chars of our content, 30 char limit given, only 26 characters needed. Example.. echo get_excerpt(30); Result... Lorem ipsum habitant morbi */
This function can be used multiple times through out theme files, each with different character limits specified.
This function has the ability to retrieve an excerpt from either,
the_content
the_excerpt
For example, if you have posts that contain text in the_excerpt box on the post editor screen, but want to pull an excerpt from the_content body instead for a special use case you would instead do;
get_excerpt(140, 'the_content'); //excerpt is grabbed from get_the_content
This tells the function that you want the first 140 characters from
the_content
, regardless of whether an excerpt is set inthe_excerpt
box.get_excerpt(140); //excerpt is grabbed from get_the_excerpt
This tells the function that you want the first 140 characters from
the_excerpt
first and if no excerpt exists,the_content
will be used as a fallback.The function can be improved to be made more efficient and or incorporated with the use of WordPress filters for both
the_content
orthe_excerpt
or simply used as is in situations where there is no suitable, in-built WordPress API alternative.-
¡Hola!¡Gracias atodospor la respuestaproporcionada!Megustaríapreguntar,¿cómo hacer quefuncione con ...en lugar de [...] alfinal delextracto?Hi! Thanks for all for the answer provided! I would like to ask, how to make it work with ... instead of [...] at the end of excerpt?
- 0
- 2012-11-02
- Jornes
-
La última línea,`$excerpt=$excerpt .'... More '; `es lo quepuede usarpara definir suenlace "leermás"por así decirlo.Puede ver que agregapuntos suspensivos,peropuede agregar lo que quiera.The last line, `$excerpt = $excerpt.'... more';` is what you can use to define your "read more" link so to speak. You can see there it adds an ellipsis but you can add whatever you like.
- 0
- 2012-11-02
- Adam
-
@Jornes,quizás 6 añostarde,pero aquíestáel código HTMLpara lospuntos suspensivos `& hellip;`@Jornes it maybe 6 years late, but here is the HTML code for the ellipsis `…`
- 1
- 2018-07-20
- AlbertSamuel
-
@AlbertSamuel Graciaspor la respuesta.:)@AlbertSamuel Thank you for the answer. :)
- 1
- 2019-05-10
- Jornes
Tengo unapregunta después de leerestapublicación ( Cómo resaltar labúsquedatérminos sin complemento ).Megustamuchoestafunción (término debúsqueda sin complemento)pero la longitud de los caractereses demasiado larga.¿Qué códigophp debo agregarpara acortarelextracto?Agradecería que alguienpudiera sugerirlo.¡Gracias!