scottb
  • 0
Гуру

Как сделать так, чтобы фильтр excerpt_more применялся к фактическому отрывку поста?

  • 0

В приведенной ниже функции 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">&nbsp;</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();
    }
} ?>    
Share
  1. Где get_blog_excerpt() называется (или зацепил)?

    • 0
  2. Я собираюсь предположить, что вы где-то вызываете 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) . '">Read More</a>';
    }
    add_filter('excerpt_more', 'ce4_excerpt_more');
    

    И в вашем шаблоне вы просто вызовете the_excerpt() .

    Если это сработает, то я подозреваю, что проблема в том, что ваши фильтры не применяются — возможно, из-за того, что они включены в функцию контейнера.

    • 0

Оставить ответ

You must login to add an answer.