2012-02-25 15 views
5

Voglio rimuovere solo gli shortcode [gallery] nei post del mio blog. L'unica soluzione che ho trovato è un filtro che ho aggiunto alle mie funzioni.Wordpress strip single shortcode da post

function remove_gallery($content) { 
    if (is_single()) { 
    $content = strip_shortcodes($content); 
    } 
    return $content; 
} 
add_filter('the_content', 'remove_gallery'); 

Rimuove tutti i codici brevi tra cui [caption] cui ho bisogno per le immagini. Come posso specificare un singolo shortcode da escludere o includere?

+0

Potete fornire un esempio di uno shortcode o due? –

risposta

13

Per rimuovere solo la galleria shortcode, registrare una funzione di callback che restituisce una stringa vuota:

add_shortcode('gallery', '__return_false'); 

Ma questo funziona solo con i callback. Per farlo in modo statico, è possibile modificare temporaneamente lo stato globale di wordpress per ingannare esso:

/** 
* @param string $code name of the shortcode 
* @param string $content 
* @return string content with shortcode striped 
*/ 
function strip_shortcode($code, $content) 
{ 
    global $shortcode_tags; 

    $stack = $shortcode_tags; 
    $shortcode_tags = array($code => 1); 

    $content = strip_shortcodes($content); 

    $shortcode_tags = $stack; 
    return $content; 
} 

Usage:

$content = strip_shortcode('gallery', $content); 
+1

Bello, ma è necessario restituire altri cortocircuiti, non dimenticare echo do_shortcode ($ content) in seguito. – Benn

-1

Se si desidera ottenere solo il contenuto, escluse eventuali codici brevi, provare qualcosa di simile che

global $post; 
$postContentStr = apply_filters('the_content', strip_shortcodes($post->post_content)); 
echo $postContentStr; 
Problemi correlati