it-swarm.com.de

Wie kann der Filter excerpt_more auf den aktuellen Post-Auszug angewendet werden?

In der folgenden Funktion get_blog_excerpt () funktioniert der Filter excerpt_more einwandfrei, wenn der Beitragsauszug nicht vorhanden ist. Wenn der Beitrag jedoch einen Auszug enthält, wird der Link "Read More" nicht angezeigt.

Ich verstehe, dass the_excerpt zuerst prüft, ob ein Post-Auszug vorhanden ist, was in Ordnung ist, aber ich möchte, dass der Link read more auch darauf angewendet wird.

Was muss ich ändern, damit der Auszug_mehr in allen Fällen zutrifft?

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>';
}

Der obige Code befindet sich in functions.php

Der folgende Code befindet sich in 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();
    }
} ?>    
1
Scott B

Ich gehe davon aus, dass Sie in Ihrer Vorlage irgendwo get_blog_excerpt() aufrufen?

Wenn ja, was passiert, wenn Sie einfach the_excerpt() aufrufen und dann die beiden add_filter()-Aufrufe aus der Containerfunktion ziehen? d.h. functions.php würde einfach so aussehen:

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');

Und in Ihrer Vorlage würden Sie einfach the_excerpt() aufrufen.

Wenn das funktioniert, besteht das Problem vermutlich darin, dass Ihre Filter nicht angewendet werden - wahrscheinlich, weil sie in die Containerfunktion eingebunden sind.

1
Chip Bennett