2015-06-07 7 views
7

Ho un sito Wordpress e voglio rimuovere le citazioni dei blocchi dal post e inserire solo il testo normale. (Voglio anche rimuovere le immagini che sono nel testo, voglio solo il testo normale)rimozione citazione blocco da testo postale - Wordpress

Questo codice fa l'OPPOSTO di ciò che voglio - prende le virgolette del blocco e pubblica quello. Voglio che pubblichi l'altro testo e NON la citazione del blocco.

<?php 
     // get the content 
     $block = get_the_content(); 

     // check and retrieve blockquote 
     if(preg_match('~<blockquote>([\s\S]+?)</blockquote>~', $block, $matches)) 

     // output blockquote 
     echo $matches[1]; 
?> 

risposta

1

Quello che vi serve è un filtro dei contenuti. Aggiungi il seguente al tuo file functions.php

add_filter('the_content', 'rm_quotes_and_images'); 
function rm_quotes_and_images($content) 
{ 
    $content = preg_replace("~<blockquote>([\s\S]+?)</blockquote>~", "", $content); 
    $content = preg_replace("/<img[^>]+>/i", "", $content);   
    return $content; 
} 
+0

Ho ricevuto molti commenti dicendo che l'utilizzo di preg_replace è una cattiva pratica e non è ottimale – user3550879

+0

Dipende dalla definizione di "ottimale". Se si desidera rimuovere permanentemente citazioni di blocco e immagini, è consigliabile eseguire una query di database una tantum per rimuoverle. Ma se si desidera un filtro per rimuoverli quando si stampa la pagina, la soluzione preg_replace che ho postato sopra è il modo elegante per farlo. – Nadav

0

Prova questa

add_filter('the_content', 'block_the_content_filter'); 
function block_the_content_filter($content) { 

$content = preg_replace("~<blockquote>([\s\S]+?)</blockquote>~", "", $content); 

return $content; 

} 
+0

che non restituisce nulla? – user3550879

0

Basta aggiungere questo codice:

$content = preg_replace("~<blockquote>([\s\S]+?)</blockquote>~", "", $content); 
$content = strip_tags($content, '<img>'); 

echo $content; 

Il modo wali Hassan Sayed è quello di aggiungere codice seguente al vostro function.php:

 add_filter('the_content', 'block_the_content_filter'); 
    function block_the_content_filter($content) { 

    $content = preg_replace("~<blockquote>([\s\S]+?)</blockquote>~", "", $content); 
$content = strip_tags($content, '<img>'); 

    return $content; 

    } 

Sostituisce il valore predefinito "the_conte nt()" la funzione in modo da in voi modello di pagina è sufficiente chiamare:

the_content();