¿Cómo puedo crear un enlace "Leer Más" usando the_excerpt() en una página estática de inicio?

11 feb 2014, 05:50:07
Vistas: 46.8K
Votos: 10

Estoy trabajando en un sitio web que utiliza una página estática de inicio. También muestra la entrada de blog más reciente. Esto se logró creando una página y utilizando una plantilla de página personalizada.

A veces, la entrada del blog es demasiado larga, por lo que quiero usar the_excerpt para acortarla automáticamente sin necesidad de una etiqueta "more".

Hasta ahora todo bien. Pero, the_excerpt realmente no crea un enlace "leer más". Este es un problema bastante común, así que agregué:

<?php
function new_excerpt_more($more) {
    global $post;
    return '... <a href="'. get_permalink($post->ID) . '">continuar leyendo</a>.';
}
add_filter('excerpt_more', 'new_excerpt_more');
?>

a mi archivo functions.php.

De hecho, he usado este código sin problemas en otro sitio, pero por alguna razón, no está funcionando en este caso. Mi suposición inicial fue que era porque se está llamando en una página estática.

El sitio web es http://stuandjessproductions.com. El tema es Central de QODE, y estoy usando un tema hijo personalizado.

EDICIÓN

Agregando código de la página de plantilla, según lo solicitado. Este no es toda la página, sino solo la parte relevante para la entrada de noticias:

<?php $query = "showposts=1&orderby='date'"; query_posts($query);?>
<?php if(have_posts()) : while ( have_posts() ) : the_post(); ?>
    <a href="<?php the_permalink();?>"><?php the_post_thumbnail('home'); ?></a>
    <div class="overlay">Últimas Noticias</div>
    <h4><a href="<?php the_permalink();?>"><?php the_title(); ?></a></h4>
    <?php the_excerpt(); ?>
<?php endwhile; ?>
<?php endif; ?>
2
Comentarios

¿cuál es el código de la plantilla de página?

Michael Michael
11 feb 2014 11:50:27

He añadido parte del código de la plantilla de página (la parte relevante). Si quieres verlo completo, puedo publicarlo... pero es bastante largo.

convoke convoke
11 feb 2014 15:55:17
Todas las respuestas a la pregunta 1
8
18

En la página de edición de entradas, si llenas el cuadro de Extracto con cualquier texto, la función the_excerpt() no agrega un enlace de leer más o ... al final de la descripción corta en el frontend. El enlace de leer más solo se incluye si el Extracto está vacío. Esto no es un error, es el comportamiento predeterminado.

La solución es evitar que el filtro excerpt_more devuelva el enlace de leer más, y usar el hook the_excerpt para agregar el enlace de leer más.

// excerpt_more debe establecerse como vacío.
add_filter( 'excerpt_more', '__return_empty_string', 21 );

function wpse_134143_excerpt_more_link( $excerpt ) {
    $excerpt .= sprintf( 
            '... <a href="%s">%s</a>.',
            esc_url( get_permalink() ),
            __( 'continuar leyendo' )
    );
    return $excerpt;
}
add_filter( 'the_excerpt', 'wpse_134143_excerpt_more_link', 21 );

El código anterior podría ir en el archivo functions.php de tu tema.

11 feb 2014 06:03:04
Comentarios

No he agregado nada al campo de texto Excerpt en la publicación, ni tengo la intención de hacerlo. Como dije, la idea es hacer las cosas lo más sencillas posible para el cliente. El código actual trunca la publicación a 55 palabras, o lo que sea el valor por defecto, y agrega los puntos suspensivos. El problema es que mi método normal para convertir esos puntos suspensivos en un enlace "Leer más" no parece estar funcionando.

convoke convoke
11 feb 2014 15:53:20

Entonces, probé tu código, y parece funcionar. El único problema es que obtengo puntos suspensivos dobles. Está en vivo en http://stuandjessproductions.com ahora mismo, si quieres verlo. ¿Tienes alguna idea?

convoke convoke
11 feb 2014 18:28:47

Debo agregar que eliminé mi código original de functions.php.

convoke convoke
11 feb 2014 18:30:41

Marqué esta pregunta como respondida, pero la solución sigue inyectando dos etiquetas "leer más". Simplemente eliminé los puntos suspensivos de la segunda etiqueta, lo cual funciona para mí, pero no es perfecto realmente.

convoke convoke
13 feb 2014 21:49:22

Prueba el código actualizado.

Shazzad Shazzad
13 feb 2014 22:15:29

¿Por qué hemos añadido 21 en esto?

Navnish Bhardwaj Navnish Bhardwaj
11 abr 2018 10:48:10

@NavnishBhardwaj - 21 es la prioridad del filtro aquí. Puedes usar cualquier número positivo mayor que 0.

Shazzad Shazzad
11 abr 2018 16:36:10

Gracias @Shazzad. Después de buscar mucho, finalmente entendí cómo funciona Leer más con Extracto.

Pooja Mistry Pooja Mistry
10 jun 2020 12:48:01
Mostrar los 3 comentarios restantes