2012-02-25 9 views
5

Quiero desnudar solo los [gallery] códigos cortos en las publicaciones de mi blog. La única solución que encontré es un filtro que agregué a mis funciones.Wordpress strip single shortcode de mensajes

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

Elimina todos los códigos cortos incluidos [caption] cual necesito para imágenes. ¿Cómo puedo especificar un solo código abreviado para excluir o incluir?

+0

¿Puede proporcionar un ejemplo de un código corto o dos? –

Respuesta

13

para extirpar sólo la galería de código corto, registrar una función de devolución de llamada que devuelve una cadena vacía:

add_shortcode('gallery', '__return_false'); 

Pero esto sólo funcionará con las devoluciones de llamada. Para hacerlo de forma estática, puede cambiar temporalmente el estado global de wordpress para engañar a ella:

/** 
* @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; 
} 

Uso:

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

Bueno, pero necesita devolver otros códigos cortos, no olvide eco do_shortcode ($ contenido) después. – Benn

-1

Si desea obtener sólo el contenido, con exclusión de los códigos cortos, intente algo como que

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