Cum să faci ca filtrul excerpt_more să se aplice și la excerpt-ul efectiv al postării?

17 iun. 2011, 22:26:51
Vizualizări: 5.8K
Voturi: 1

În funcția get_blog_excerpt() de mai jos, filtrul excerpt_more funcționează perfect când excerpt-ul postării nu există, dar când postarea are un excerpt, nu primesc link-ul "Citește mai mult".

Înțeleg că the_excerpt verifică mai întâi dacă există un excerpt pentru postare, ceea ce este în regulă, dar vreau ca link-ul "Citește mai mult" să se aplice și în acest caz.

Ce trebuie să modific pentru ca excerpt_more să se aplice în toate cazurile?

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) . '">Citește mai mult</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>';
}

Codul de mai sus se află în fișierul functions.php

Codul de mai jos se află în fișierul 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();
    }
} ?>    
4
Comentarii

Unde este apelată (sau conectată) funcția get_blog_excerpt()?

Chip Bennett Chip Bennett
17 iun. 2011 22:33:25

Din interiorul unei funcții în fișierul functions.php

Scott B Scott B
17 iun. 2011 23:23:58

Poate fi cauzată de un plugin. Tocmai am avut exact aceeași problemă, codul meu din functions.php pentru a schimba lungimea și aspectul rezumatului este corect (testat într-o instalare curată WordPress) dar a fost "omorât" de un plugin, 'Event Calendar 3.1.4' în cazul meu. Totul funcționează bine dacă dezactivez pluginul. Încearcă să verifici în această direcție.

kevin kevin
21 iul. 2011 18:53:59

Am rezolvat problema folosind acest plugin: http://wordpress.org/extend/plugins/advanced-excerpt/

kevin kevin
21 iul. 2011 19:00:56
Toate răspunsurile la întrebare 1
3

Presupun că apelezi get_blog_excerpt() undeva în șablonul tău?

Dacă da, ce se întâmplă dacă apelezi simplu the_excerpt(), și apoi scoți cele două apeluri add_filter() din funcția container? Adică functions.php ar arăta astfel:

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) . '">Citește mai mult</a>';
}
add_filter('excerpt_more', 'ce4_excerpt_more');

Și în șablonul tău, ai apela simplu the_excerpt().

Dacă funcționează, atunci bănuiesc că problema este că filtrele tale nu se aplică - probabil din cauză că sunt încapsulate în funcția container.

17 iun. 2011 22:38:07
Comentarii

Chip, mulțumesc pentru pont. Dar mutarea filtrelor în afara containerului nu pare să aibă vreun efect asupra scriptului. Acesta a funcționat la fel indiferent.

Scott B Scott B
17 iun. 2011 23:29:23

get_blog_excerpt este apelat dintr-o funcție din interiorul functions.php, care la rândul ei este apelată dintr-o funcție în afara buclei în archive.php

Scott B Scott B
17 iun. 2011 23:30:32

Deci, ai încercat doar să apelezi the_excerpt()?

Chip Bennett Chip Bennett
18 iun. 2011 00:20:57