Mostrare solo il contenuto prima del tag more
Sto utilizzando il Template Siren. In homepage.php questo codice viene usato per visualizzare il contenuto del portfolio
print_excerpt(200);
Ma ho bisogno di mostrare solo il contenuto prima del tag <!--more-->
Ho provato con questo:
the_content( $more_link_text, FALSE);
ma non funziona. Mostra tutto il contenuto
Puoi utilizzare la funzione di WordPress get_extended per recuperare le diverse parti di una stringa (la parte prima e la parte dopo il tag <!--more-->). get_extended restituisce un array con tre chiavi, di cui le chiavi main e extended sono importanti: $arr['main'] contiene la parte prima del tag more, e $arr['extended'] la parte dopo il tag more.
Questo produrrebbe qualcosa come:
// Recupera il contenuto del post
$content = get_post_field( 'post_content', get_the_ID() );
// Ottieni le parti del contenuto
$content_parts = get_extended( $content );
// Mostra la parte prima del tag <!--more-->
echo $content_parts['main'];
Piccolo miglioramento per essere coerenti con la funzione the_content(): echo apply_filters('the_content', $content_parts['main']);
long
Ho avuto problemi con i filtri dei blocchi che non venivano applicati correttamente a $content_parts['extended'], anche utilizzando apply_filters('the_content', $content_parts['extended']). La soluzione è stata prima eseguire $filtered_content = apply_filters('the_content', $content) e poi $content_parts = get_extended( $filtered_content ).
Bence Szalai
Sfortunatamente sembra che tutte le funzioni in WordPress che dovrebbero generare l'estratto (get_extended, get_extended) non applicano i tag HTML né convertono i ritorni a capo in paragrafi come ci si aspetterebbe.
Se hai bisogno di visualizzare l'estratto con la formattazione, ti consiglio di utilizzare questo codice:
global $more;
$more_backup = $more;
$more = 0;
the_content('');
$more = $more_backup;
Con questo stratagemma stai dicendo alla funzione the_content() che si trova all'interno di un loop, ottenendo così il contenuto prima del tag more.