Eliminar el texto más o [...] de una entrada corta

21 sept 2014, 14:24:29
Vistas: 54.3K
Votos: 14

Uso un tema que tiene un límite de caracteres para entradas cortas y muestra [...] al final del límite de caracteres.

Quiero eliminar esto, así que busco the_excerpt(); y lo reemplazo con the_content();

El problema se resuelve con el contenido normal pero aún tengo problemas con el tipo de entrada de imagen y hay un <?php the_excerpt(); ?> que cuando lo cambio, mi entrada corta actúa como una entrada completa y no está relacionado con la longitud de la entrada.

Intenté abrir todos los archivos PHP en el tema y buscar palabras clave como: limit, length, excerpt para encontrar dónde está el código que define la longitud de la entrada corta, incluso busqué "[...]" en todos los archivos e idiomas pero no sé de dónde viene.

Todo lo que encontré es algunas líneas de código en function.php

if ( ! function_exists( 'string_limit_words' ) ) :
function string_limit_words($str, $limit = 18 , $need_end = false) {
    // Divide la cadena en palabras con el límite especificado
    $words = explode(' ', $str, ($limit + 1));
    if(count($words) > $limit) {
        array_pop($words);
        array_push($words,'...');
    }
    return implode(' ', $words);
}
endif;

¡Y cuando aumento el 18 nada cambia!

¿Qué código debo buscar?

0
Todas las respuestas a la pregunta 6
5
28

El codex es tu amigo y debería ser tu primera parada :-)

El [...] es añadido por the_excerpt(). Existe un filtro llamado excerpt_more que está específicamente incluido para personalizar el texto "leer más" después del extracto.

Para eliminar el [...] después del texto del extracto, puedes hacer lo siguiente:

function new_excerpt_more( $more ) {
    return '';
}
add_filter('excerpt_more', 'new_excerpt_more');
21 sept 2014 15:17:02
Comentarios

gracias por responder

tu código funciona bien para eliminar [...], pero los posts cortos aún están limitados y las palabras se cortan después de ciertos caracteres

Quiero que funcione normal (que muestre todo lo que está antes de la etiqueta "leer más" en mis posts cortos)

Arioman Arioman
21 sept 2014 18:00:13

Otra pregunta solo por curiosidad, ¿cómo puedo cambiar los [...] por algo diferente, por ejemplo [ más... ]

Arioman Arioman
21 sept 2014 18:00:58

Deberías leer este post. He cubierto casi todo en ese post. Espero que te ayude :-). Recuerda aceptar mi respuesta si te ayudó a resolver tu problema.

Pieter Goosen Pieter Goosen
21 sept 2014 18:04:21

esto parece solo eliminar el enlace "leer más". El [...] sigue ahí.

Jules Jules
21 sept 2017 11:02:24

Genial, esto también funciona para el bloque de extracto de Query loop en el editor Gutenberg.

Iggy Iggy
25 sept 2022 03:20:42
0

Como otros ya han señalado, usar el gancho de filtro excerpt_more es la forma correcta de proceder.

Solo quería agregar que no necesitas escribir una función que devuelva una cadena vacía. WordPress tiene algunas funciones integradas para devolver verdadero, falso, cero, nulo, cadena vacía o arreglo vacío.

En este caso necesitamos __return_empty_string()

Puedes agregar este código a tu plugin o al archivo functions.php de tu tema:

<?php 
// Esto agregará un filtro en `excerpt_more` que devuelve una cadena vacía.
add_filter( 'excerpt_more', '__return_empty_string' ); 
?>
23 mar 2019 15:14:43
6

Debes agregar esto a tu archivo functions.php

    function custom_excerpt_more( $more ) {
    return '';//puedes cambiar esto por lo que desees
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );

Además, usar the_excerpt tiene la ventaja de que limpia automáticamente el contenido y elimina todas las imágenes y otras etiquetas HTML.

Puedes leer más aquí

Si también deseas modificar la longitud del extracto, puedes agregar este fragmento de código a tu functions.php:

function custom_excerpt_length( $length ) {
    return 20;//cambia el número por la longitud que desees
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

Puedes leer más sobre esto aquí

21 sept 2014 15:15:58
Comentarios

¿A qué versiones apuntas, es decir anteriores a la 2.9 :-)

Pieter Goosen Pieter Goosen
21 sept 2014 15:17:58

@PieterGoosen, supongo que a la incorrecta.

Tomás Cot Tomás Cot
21 sept 2014 15:20:14

tu código funciona bien cambiando la longitud pero cuando quito [...] se ve feo cuando parece que falta parte de un párrafo

¡Sería genial si de alguna manera detectara un párrafo completo en lugar de por longitud!

// otro problema con el extracto es acerca de los shortcodes, no puedo poner un reproductor de video o slideshow en mis publicaciones cortas

Arioman Arioman
21 sept 2014 18:14:24

@Arioman, puedes cambiar el [...] con un enlace que diga "Continuar leyendo", o lo que prefieras. Ahora, si quieres que los shortcodes funcionen, the_excerpt no es lo que buscas, deberías añadir eso a la pregunta, ya que las respuestas cambiarán.

Tomás Cot Tomás Cot
21 sept 2014 18:26:12

@TomásCot gracias por esta fantástica guía. Puse todos los códigos (código completo) en mi function.php y eliminé $wpse_excerpt = strip_tags($wpse_excerpt, wpse_allowedtags()); para aceptar todas las etiquetas. Uso un reproductor de video en streaming para insertar videos y genera shortcodes como: [stream flv=http://***/clip/shad.m4v embed=false share=false width=640 height=360 dock=true controlbar=over bandwidth=high autostart=false responsive=16:9 /] pero aún obtengo un texto: Video: mi video en lugar de mostrar mi reproductor de video en el shortpost ¿Dónde está mi problema?

Arioman Arioman
22 sept 2014 09:34:38

¿Puedes añadir el código a la pregunta?

Tomás Cot Tomás Cot
23 sept 2014 02:18:46
Mostrar los 1 comentarios restantes
0

¡eso funciona para mí!

function change_excerpt( $text )
{
    $pos = strrpos( $text, '[');
    if ($pos === false)
    {
        return $text;
    }

    return rtrim (substr($text, 0, $pos) );
}
add_filter('get_the_excerpt', 'change_excerpt');
21 feb 2017 07:29:41
0

'excerpt_more' es un hook de WordPress. Devuelve el extracto del contenido.

Para eliminar los [...] después del texto del extracto, puedes devolver una cadena vacía como se muestra a continuación o según tus requisitos personalizados. Usa este código en el archivo functions.php

function custom_excerpt_more( $excerpt ) {
    return '';
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );
13 jun 2019 12:00:35
0

Intenta crear una nueva función en tu archivo functions.php:

function custom_excerpt() {
 $text=preg_replace( "/\\[&hellip;\\]/",'coloca aquí lo que quieras reemplazar',get_the_excerpt());
echo '<p>'.$text.'</p>';
}

Luego utiliza la nueva función en tu página.

16 jun 2016 14:13:37