我想停止分析中的短代码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 );
所以,我想禁用
autoembed
和
do_shortcode
并让WordPress将其显示为纯文本。有可能吗?我正在使用
wp
钩住主插件的PHP文件。
最合适的回答,由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;
}