Remova e restaure um código curto

Gostaria de remover temporariamente um código curto, fazer algo e restaurá-lo … é possível?

// override default wordpress "the_content" hook remove_filter('the_content', 'do_shortcode', 11); add_filter('the_content', 'my_the_content', 11); function my_the_content($content) { remove_shortcode('some_shortcode'); $content = do_shortcode($content); // restore the shortcode add_shortcode('some_shortcode', '?????????????????????????????'); return $content; } 

O problema é como restaurá-lo corretamente …

O shortcode original está em uma class, por exemplo:

 class foo { function __construct(){ add_shortcode('some_shortcode', array($this, 'get_some_shortcode')); } public function get_some_shortcode(){ return 'bar'; } } 

Solutions Collecting From Web of "Remova e restaure um código curto"

Outra velha pergunta não respondida. Espero que seja útil para alguém no futuro.

O WordPress armazena tags de código curto e callbacks no $shortcode_tags . É assim que eu faria isso.

 function my_the_content( $content ) { global $shortcode_tags; $tag= 'some_shortcode'; //* Make sure it's actually a valid shortcode if( ! isset( $shortcode_tags[ $tag ] ) ) { return $content; } $func = $shortcode_tags[ $tag ]; remove_shortcode( $tag ); //* Do something useful //* Restore the shortcode add_shortcode( $tag, $func ); return $content; }