Cum pot crea un link "Citește mai mult" folosind the_excerpt() pe o pagină statică front page?

11 feb. 2014, 05:50:07
Vizualizări: 46.8K
Voturi: 10

Lucrez la un site web care folosește o pagină statică front page. De asemenea, afișează cel mai recent articol de blog. Acest lucru a fost realizat prin crearea unei pagini și folosirea unui șablon personalizat de pagină.

Uneori, articolul de blog este prea lung, așa că vreau să folosesc the_excerpt pentru a-l scurta automat fără a avea nevoie de un tag more.

Până aici totul e bine. Dar, the_excerpt nu creează de fapt un link "citește mai mult". Aceasta este o problemă destul de comună, așa că am adăugat:

<?php
function new_excerpt_more($more) {
    global $post;
    return '... <a href="'. get_permalink($post->ID) . '">continuă să citești</a>.';
}
add_filter('excerpt_more', 'new_excerpt_more');
?>

în fișierul meu functions.php.

Am folosit de fapt acest cod fără probleme pe un alt site, dar din anumite motive, nu funcționează în acest caz. Presupunerea mea inițială a fost că este din cauză că este apelat pe o pagină statică.

Website-ul este http://stuandjessproductions.com. Tema este Central de la QODE, și folosesc o temă child personalizată.

EDITARE

Adaug codul din pagina șablon, conform solicitării. Acesta nu este întregul cod al paginii, ci doar partea relevantă pentru articolul de știri:

<?php $query = "showposts=1&orderby='date'"; query_posts($query);?>
<?php if(have_posts()) : while ( have_posts() ) : the_post(); ?>
    <a href="<?php the_permalink();?>"><?php the_post_thumbnail('home'); ?></a>
    <div class="overlay">Ultimele Știri</div>
    <h4><a href="<?php the_permalink();?>"><?php the_title(); ?></a></h4>
    <?php the_excerpt(); ?>
<?php endwhile; ?>
<?php endif; ?>
2
Comentarii

care este codul șablonului paginii?

Michael Michael
11 feb. 2014 11:50:27

Am adăugat o parte din codul din șablonul paginii (partea relevantă). Dacă vrei să vezi totul, pot să-l postez... dar e cam lung.

convoke convoke
11 feb. 2014 15:55:17
Toate răspunsurile la întrebare 1
8
18

Pe pagina de editare a articolului, dacă completezi caseta Rezumat (Excerpt) cu orice text, funcția the_excerpt() nu adaugă linkul "citește mai mult" sau ... la sfârșitul descrierii scurte în partea frontală. Linkul "citește mai mult" este inclus doar dacă Rezumatul este lăsat gol. Acesta nu este un bug, ci o comportare implicită.

Soluția este să evităm ca filtrul excerpt_more să returneze linkul "citește mai mult", și să folosim hook-ul the_excerpt pentru a adăuga linkul manual.

// excerpt_more trebuie setat să returneze un șir gol.
add_filter( 'excerpt_more', '__return_empty_string', 21 );

function wpse_134143_excerpt_more_link( $excerpt ) {
    $excerpt .= sprintf( 
            '... <a href="%s">%s</a>.',
            esc_url( get_permalink() ),
            __( 'continuă lectura' )
    );
    return $excerpt;
}
add_filter( 'the_excerpt', 'wpse_134143_excerpt_more_link', 21 );

Codul de mai sus poate fi adăugat în fișierul functions.php al temei tale.

11 feb. 2014 06:03:04
Comentarii

Nu am adăugat nimic în câmpul de text Excerpt al articolului și nici nu intenționez să o fac. Cum am spus, ideea este să fac lucrurile cât mai ușor de întreținut pentru client. Codul actual trunchiază articolul la 55 de cuvinte, sau orice este valoarea implicită, și adaugă punctele de suspensie. Problema este că metoda mea obișnuită de a transforma acele puncte de suspensie într-un link "Citește mai mult" nu pare să funcționeze.

convoke convoke
11 feb. 2014 15:53:20

Deci, am încercat codul tău și pare să funcționeze. Singura problemă este că apar puncte de suspensie duble. Este live pe http://stuandjessproductions.com acum, dacă vrei să vezi. Ai vreo idee?

convoke convoke
11 feb. 2014 18:28:47

Ar trebui să adaug că am eliminat codul meu original din functions.php.

convoke convoke
11 feb. 2014 18:30:41

Am marcat această întrebare ca răspuns, dar soluția încă injectează două tag-uri "read more". Am eliminat doar punctele de suspensie din al doilea tag, ceea ce funcționează pentru mine, dar nu este chiar perfect.

convoke convoke
13 feb. 2014 21:49:22

Încearcă codul actualizat.

Shazzad Shazzad
13 feb. 2014 22:15:29

De ce am adăugat 21 în el?

Navnish Bhardwaj Navnish Bhardwaj
11 apr. 2018 10:48:10

@NavnishBhardwaj - 21 este prioritatea filtrului aici. Poți folosi orice număr pozitiv mai mare decât 0.

Shazzad Shazzad
11 apr. 2018 16:36:10

Mulțumesc @Shazzad. După multă căutare, în sfârșit am înțeles cum funcționează Read More cu Excerpt.

Pooja Mistry Pooja Mistry
10 iun. 2020 12:48:01
Arată celelalte 3 comentarii