Cómo hacer que el filtro excerpt_more se aplique al extracto real del post
En la función get_blog_excerpt() a continuación, el filtro excerpt_more funciona perfectamente cuando el extracto del post no está presente, sin embargo, cuando el post tiene un extracto, no obtengo el enlace "Leer más".
Entiendo que the_excerpt primero verifica si hay un extracto del post presente, lo cual está bien, pero quiero que el enlace "Leer más" también se aplique en este caso.
¿Qué necesito cambiar para que excerpt_more se aplique en todos los casos?
function get_blog_excerpt(){
add_filter('excerpt_length', 'ce4_excerpt_length');
add_filter('excerpt_more', 'ce4_excerpt_more');
return the_excerpt();
}
function ce4_excerpt_length($length) {
return 150;
}
function ce4_excerpt_more($more) {
global $post;
return '...<a href="'. get_permalink($post->ID) . '">Leer más</a>'; // Traducido "Read More" a "Leer más"
}
function get_blog_links(){
global $post;
setup_postdata($post);
$myposts = get_posts($args);echo '<div id="menuFooterRecent" class="blog">';
echo '<ul>';
foreach($myposts as $idx=>$post){ ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php
echo get_blog_excerpt();
echo '<div style="clear:both"> </div>';?></li>
<?php } echo '</ul></div>';
}
El código anterior está dentro de functions.php
El código a continuación está dentro de archive.php
<?php
if(is_category()){
if (get_query_var('cat') == get_category_by_slug('blog')->term_id){
get_blog_links();
}
else
{
get_category_links();
}
} ?>

Voy a asumir que estás llamando a get_blog_excerpt()
en tu plantilla en algún lugar.
Si es así, ¿qué pasa si simplemente llamas a the_excerpt()
, y luego sacas las dos llamadas add_filter()
de la función contenedora? Es decir, functions.php
se vería así:
function ce4_excerpt_length($length) {
return 150;
}
add_filter('excerpt_length', 'ce4_excerpt_length');
function ce4_excerpt_more($more) {
global $post;
return '...<a href="'. get_permalink($post->ID) . '">Leer más</a>';
}
add_filter('excerpt_more', 'ce4_excerpt_more');
Y en tu plantilla, simplemente llamarías a the_excerpt()
.
Si eso funciona, entonces sospecho que el problema es que tus filtros no se están aplicando - probablemente porque están envueltos en la función contenedora.

Chip, gracias por el consejo. Pero mover los filtros fuera del contenedor no parece tener efecto en el script. Funcionó igual independientemente.

get_blog_excerpt es llamado desde una función dentro de functions.php, que a su vez es llamado desde una función fuera del bucle en archive.php
