这很简单-在触发上述过滤器后,您无法从内容内部删除对内容触发的过滤器。在模式上,您正在尝试这样做(为了简单起见,没有确切的名称):
|- wp_core_fires_its_functions_and_plugins
|-- wp_core_gets_raw_content
|--- wp_core_runs_filters_on_fetched_content (execution of shortcodes is done here)
|---- [mimo] - is fired inside filtered content and tries to remove filters which are already applied
所有这些都是实现过滤器删除的错误方法。
我建议以其他方式删除此类过滤器-创建一个带有字段的设置页面,以应用帖子id数组,并检查帖子/页面id是否位于模板文件中的该数组中,如下所示:
$fetched_posts_array=explode(\',\', get_option(\'posts_array_to_unfilter\'), \'\'); //get_option gets some string like \'99,566,435,2345\'
if(in_array($post->ID, $fetched_posts_array){
apply_filter(\'the_content\', $post->post_content);
} else {
echo $post->post_content;
}