Как применить фильтр excerpt_more к фактическому отрывку записи?
В функции get_blog_excerpt() ниже, фильтр excerpt_more прекрасно работает, когда отрывок записи отсутствует, однако, когда запись имеет отрывок, я не получаю ссылку "Читать далее".
Я понимаю, что the_excerpt сначала проверяет наличие отрывка записи, что нормально, но я хочу, чтобы ссылка "Читать далее" применялась и в этом случае.
Что мне нужно изменить, чтобы фильтр excerpt_more применялся во всех случаях?
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) . '">Читать далее</a>';
}
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>';
}
Приведенный выше код находится в файле functions.php
Следующий код находится в файле 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();
}
} ?>

Я предполагаю, что вы вызываете get_blog_excerpt()
где-то в вашем шаблоне?
Если это так, что произойдет, если вы просто вызовете the_excerpt()
, а затем вынесете два вызова add_filter()
из функции-обертки? То есть functions.php
будет выглядеть так:
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) . '">Читать далее</a>';
}
add_filter('excerpt_more', 'ce4_excerpt_more');
И в вашем шаблоне вы просто вызываете the_excerpt()
.
Если это сработает, то я подозреваю, что проблема в том, что ваши фильтры не применяются - вероятно, из-за того, что они обернуты в функцию-контейнер.

Chip, спасибо за совет. Но перенос фильтров за пределы контейнера, похоже, не влияет на работу скрипта. Он работает одинаково в обоих случаях.

get_blog_excerpt вызывается из функции внутри functions.php, которая, в свою очередь, вызывается из функции вне цикла в archive.php
