В приведенной ниже функции 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) . '">Read More</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()
называется (или зацепил)?Изнутри функции в functions.php
Может быть вызван плагином. У меня была точно такая же проблема, мой код в functions.php для изменения длины и внешнего вида отрывка в порядке (проверено на чистой установке wp), но он был «убит» плагином «Календарь событий 3.1.4» в моем кейс. Все работает нормально, если отключить плагин. Попробуй посмотреть таким образом.
Решил мою проблему с помощью этого плагина: wordpress.org/extend/plugins/advanced-excerpt
Чип, спасибо за подсказку. Но перемещение фильтров за пределы контейнера, по-видимому, не влияет на скрипт. Он работал одинаково независимо.
get_blog_excerpt вызывается из функции внутри functions.php, которая, в свою очередь, вызывается из функции вне цикла в archive.php
Так ты пробовал просто позвонить
the_excerpt()
?Я собираюсь предположить, что вы где-то вызываете
get_blog_excerpt()
свой шаблон?Если да, то что произойдет, если вы просто вызовете
the_excerpt()
, а затем вытащите дваadd_filter()
вызова из функции-контейнера? то естьfunctions.php
будет выглядеть так:И в вашем шаблоне вы просто вызовете
the_excerpt()
.Если это сработает, то я подозреваю, что проблема в том, что ваши фильтры не применяются — возможно, из-за того, что они включены в функцию контейнера.