Come recuperare solo il testo da wp_content() e non da wp_excerpt()?
Sto sviluppando un sito web con WordPress 3.5 e ho bisogno di recuperare il Testo del Post (Solo testo, senza immagini) nella Pagina Archivio. Posso recuperarlo con il metodo wp_excerpt()
senza problemi. Ma il problema principale per me è che non riesco a ottenere l'esatto layout del testo. Il metodo wp_excerpt()
restituisce il testo ignorando tutti gli spazi extra e i ritorni a capo. Cosa dovrei fare? Penso che potrei ottenere il Solo Testo del Post con Layout Esatto se potessi recuperarlo dal metodo wp_content()
. Grazie in anticipo per il vostro aiuto!
O ancora più semplice:
echo wp_strip_all_tags( get_the_content() );
Utilizzando:
Recupera il contenuto del post. (Deve essere utilizzato all'interno di un Loop)
Un'importante differenza rispetto a
the_content()
è cheget_the_content()
non passa il contenuto attraverso il filtro 'the_content
'. Ciò significa cheget_the_content()
non incorporerà automaticamente video o espanderà shortcode, tra le altre cose.
Rimuove correttamente tutti i tag HTML inclusi script e style.

Non esiste una funzione nativa di WordPress per recuperare solo il testo, ma puoi utilizzare i filtri di WordPress e il codice regex per risolvere questo specifico problema.
Per ottenere il testo non formattato, usa la funzione get_the_content(). Per applicare tutti i filtri, usala in questo modo (vedi codex: http://codex.wordpress.org/Function_Reference/the_content#Alternative_Usage):
$content = get_the_content();
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
Prima di applicare i filtri, c'è spazio per le tue modifiche personalizzate, ad esempio rimuovere le immagini. In questo modo:
$content = get_the_content();
$content = preg_replace('/(<)([img])(\w+)([^>]*>)/', "", $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
Fonte del codice preg_replace: http://www.phpzag.com/php-remove-image-tags-from-a-html-string-with-preg_replace/
Potresti aver bisogno di rimuovere anche gli shortcode, se presenti. Questo può essere fatto anche tramite preg_replace e sono sicuro che ne troverai alcuni su Google.

Grazie mille per la tua risposta e mi scuso per il mio ritardo nel rispondere. Ho provato così. $content = get_the_content(); $content = preg_replace('/(<)([gallery])(\w+)([^>]*>)/', ”, $content); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); echo $content;
Ma non ha funzionato. Nessuna immagine viene rimossa e non riesco a vedere il testo che mi aspetto.

Ho combinato i risultati delle altre risposte su questo post per rimuovere immagini e audio ecc., ma mantenendo la formattazione. Prima ottenendo il contenuto con get_the_content
, poi passandolo attraverso il filtro "the_content" per aggiungere formattazione ecc., e infine utilizzando la funzione strip_tags
di PHP per consentire solo un numero limitato di tag.
strip_tags(apply_filters('the_content',get_the_content()),"<p><a><br><b><u><i><strong><span><div>");

Il seguente codice funziona perfettamente per me. Aggiungi semplicemente questo al tuo file functions.php
nel tuo tema:
// Hook: per ottenere il contenuto senza immagini
add_filter('the_content', 'wpse_get_content_without_images');
function wpse_get_content_without_images() {
$content = get_the_content();
$content = preg_replace( '/<img[^>]+./', '', $content );
echo $content;
}
Successivamente, ottieni il contenuto del tuo post nel modo standard utilizzando echo the_content();
.

Ecco il codice per rimuovere il contenuto della galleria e avere solo il contenuto.
$content = get_the_content();
$content = preg_replace('/\[gallery.*ids=.(.*).\]/', "", $content);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
