Come recuperare solo il testo da wp_content() e non da wp_excerpt()?

22 feb 2013, 10:15:45
Visualizzazioni: 54.6K
Voti: 14

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!

0
Tutte le risposte alla domanda 5
2
22

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() è che get_the_content() non passa il contenuto attraverso il filtro 'the_content'. Ciò significa che get_the_content() non incorporerà automaticamente video o espanderà shortcode, tra le altre cose.

Rimuove correttamente tutti i tag HTML inclusi script e style.

30 set 2015 17:57:22
Commenti

Questa dovrebbe essere approvata come risposta.

AlbertSamuel AlbertSamuel
9 apr 2018 02:44:18

Inoltre non copre gli shortcode, avvolgilo in strip_shortcodes()

Ostap Brehin Ostap Brehin
25 mag 2020 20:29:06
1

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(']]>', ']]&gt;', $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.

22 feb 2013 12:24:20
Commenti

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.

Thiha Maung Thiha Maung
24 feb 2013 13:08:16
0

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>");

10 giu 2018 19:50:18
0

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

16 nov 2017 21:06:20
1

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(']]>', ']]&gt;', $content);
        echo $content;
2 gen 2019 05:17:48
Commenti

Non è esattamente quello che hanno detto alcune delle altre risposte, solo con meno spiegazioni?

Matthew Brown aka Lord Matt Matthew Brown aka Lord Matt
4 set 2019 08:26:04