Come posso creare un link "Leggi altro" usando the_excerpt() su una pagina statica principale?
Sto lavorando su un sito web che utilizza una pagina statica come homepage. Mostra anche il post del blog più recente. Questo è stato ottenuto creando una pagina e utilizzando un template personalizzato.
A volte, il post del blog è troppo lungo, quindi voglio usare the_excerpt per accorciarlo automaticamente senza la necessità di un tag more.
Fin qui tutto bene. Ma the_excerpt non crea effettivamente un link "leggi altro". Questo è un problema abbastanza comune, quindi ho aggiunto:
<?php
function new_excerpt_more($more) {
global $post;
return '... <a href="'. get_permalink($post->ID) . '">continua a leggere</a>.';
}
add_filter('excerpt_more', 'new_excerpt_more');
?>
al mio file functions.php.
Ho già utilizzato questo codice senza problemi su un altro sito, ma per qualche motivo, non funziona in questo caso. La mia ipotesi iniziale era che fosse dovuto al fatto che viene chiamato su una pagina statica.
Il sito web è http://stuandjessproductions.com. Il tema è Central di QODE, e sto usando un tema child personalizzato.
MODIFICA
Aggiungo il codice dalla pagina template, come richiesto. Questo non è l'intero file, ma solo la parte rilevante per il post delle news:
<?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">Latest News</div>
<h4><a href="<?php the_permalink();?>"><?php the_title(); ?></a></h4>
<?php the_excerpt(); ?>
<?php endwhile; ?>
<?php endif; ?>

Nella pagina di modifica di un articolo, se si riempie la casella Riassunto con qualsiasi testo, la funzione the_excerpt()
non aggiunge il collegamento "leggi tutto"
o ...
alla fine della breve descrizione nel frontend. Il collegamento "leggi tutto" viene incluso solo se il Riassunto è lasciato vuoto. Questo non è un bug, ma un comportamento predefinito.
La soluzione consiste nell'evitare che il filtro excerpt_more
restituisca il collegamento "leggi tutto"
, e utilizzare invece l'hook the_excerpt
per aggiungere il collegamento "leggi tutto".
// excerpt_more dovrebbe essere impostato come vuoto.
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() ),
__( 'continua a leggere' )
);
return $excerpt;
}
add_filter( 'the_excerpt', 'wpse_134143_excerpt_more_link', 21 );
Il codice sopra può essere inserito nel file functions.php del tuo tema.

Non ho aggiunto nulla al campo di testo Excerpt nel post, né ho intenzione di farlo. Come ho detto, l'idea è di rendere le cose il più possibile a bassa manutenzione per il cliente. Il codice attuale tronca effettivamente il post a 55 parole, o qualunque sia il valore predefinito, e aggiunge i puntini di sospensione. Il problema è che il mio metodo normale per trasformare quei puntini in un link "Leggi tutto" non sembra funzionare.

Quindi, ho provato il tuo codice e sembra funzionare. L'unico problema è che ottengo dei puntini di sospensione doppi. È live su http://stuandjessproductions.com in questo momento, se vuoi vedere. Hai qualche idea?

Dovrei aggiungere che ho rimosso il mio codice originale da functions.php.

Ho contrassegnato questa domanda come risposta, ma la soluzione continua a iniettare due tag "leggi tutto". Ho semplicemente rimosso i puntini di sospensione dal secondo tag, il che per me funziona, ma non è proprio perfetto.

@NavnishBhardwaj - 21 è la priorità del filtro qui. Puoi usare qualsiasi numero positivo maggiore di 0.
