¿Cómo puedo crear un enlace "Leer Más" usando the_excerpt() en una página estática de inicio?
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; ?>

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.

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 sí 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.

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?

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.

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