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']);

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 )
.

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.
