Cum pot crea un link "Citește mai mult" folosind the_excerpt() pe o pagină statică front page?
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; ?>

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.

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.

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?

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

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.

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