Stop parsing shortcodes

时间:2013-09-22 作者:Paul

我想停止分析中的短代码the_content 但我正在努力寻找正确的过滤器。这不起作用:

remove_filter( \'the_content\', \'do_shortcode\', 40 );
remove_filter( \'the_content\', \'run_shortcode\', 40 );
remove_filter( \'the_content\', \'wpautop\', 40 );
remove_filter( \'the_content\', \'autoembed\', 40 );
remove_filter( \'the_content\', \'prepend_attachment\', 40 );
这起到了作用(但也禁用了所有其他有用的过滤器):

remove_all_filters( \'the_content\', 40 );
所以,我想禁用autoembeddo_shortcode 并让WordPress将其显示为纯文本。有可能吗?我正在使用wp 钩住主插件的PHP文件。

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

正确的方法是呼叫remove_filter 使用与添加挂钩相同的优先级:

remove_filter( \'the_content\', \'do_shortcode\', 11 );
某些插件更改此筛选器的优先级,因此您可以临时清除已注册短代码的全局列表:

add_filter( \'the_content\', \'toggle_shortcodes\', -1 );
add_filter( \'the_content\', \'toggle_shortcodes\', PHP_INT_MAX );

function toggle_shortcodes( $content )
{
    static $original_shortcodes = array();

    if ( empty ( $original_shortcodes ) )
    {
        $original_shortcodes = $GLOBALS[\'shortcode_tags\'];
        $GLOBALS[\'shortcode_tags\'] = array();
    }
    else
    {
        $GLOBALS[\'shortcode_tags\'] = $original_shortcodes;
    }

    return $content;
}

结束

相关推荐

如何覆盖Shortcodes.php核心文件?

我想覆盖/更新核心短代码。php文件。构建一个数组并向其他函数发送不同的数据,但我的问题是如何在不编辑核心文件的情况下做到这一点?是否有覆盖核心文件和/或函数的最佳做法?