删除并恢复一个短码

时间:2016-06-18 作者:Simone Nigro

我会暂时删除一个短代码,制作一些东西并恢复它。。。有可能吗?

// 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;
}
问题是如何正确还原它。。。

原始短代码位于类中,例如:

class foo {

    function __construct(){
        add_shortcode(\'some_shortcode\', array($this, \'get_some_shortcode\'));
    }

    public function get_some_shortcode(){
        return \'bar\';
    }
}

1 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

另一个老问题没有答案。希望对将来的人有用。

WordPress在$shortcode_tags. 我会这样做的。

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;
}

相关推荐

我可以将参数传递给Add_ShortCode()函数吗?

正如标题所述,我需要向add_shortcode() 作用换句话说,我传递的那些参数将在的回调函数中使用add_shortcode(). 我该怎么做?请注意,这些与以下结构无关[shortcode 1 2 3] 哪里1, 2, 和3 是用户传递的参数。在我的情况下,参数仅用于编程目的,不应由用户负责。谢谢