应用内容筛选器,但阻止其他挂钩操作

时间:2014-07-02 作者:EHerman

我有一个插件,在将\\u内容过滤器应用到文本块后,它会在站点前端显示一些内容。我这样做是为了格式化和维护链接和图像等。

当我在网站的前端显示我的内容时,与\\u内容挂钩的其他插件会导致冲突。例如,sharedaddy by jetpack挂接到\\u内容中,并在使用\\u内容的任何位置显示共享按钮。

我可以通过删除过滤器手动禁用它,但这并不理想,因为我确定不是所有用户都在使用sharedaddy。因此,与其为sharedaddy添加remove\\u过滤器,是否有一种方法可以简单地删除连接到我的特定插件的\\u内容中的所有过滤器?

我正在这样显示我的内容:

<?php echo apply_filters(\'the_content\' , $this->optionVal[\'custom-message\']); ?>

1 个回复
SO网友:Eric Holmes

如果这仅适用于某些内容区域,请创建自己的过滤器,并以原始过滤器为基础the_content 滤器

把这个放进你的functions.php (位于wp-includes/default-filters.php)

add_filter( \'se152488_the_content\', \'wptexturize\'        );
add_filter( \'se152488_the_content\', \'convert_smilies\'    );
add_filter( \'se152488_the_content\', \'convert_chars\'      );
add_filter( \'se152488_the_content\', \'wpautop\'            );
add_filter( \'se152488_the_content\', \'shortcode_unautop\'  );
add_filter( \'se152488_the_content\', \'prepend_attachment\' );
然后使用相同的过滤器。可以随意重命名它,但要给它一个前缀,这样就不会有冲突。

<?php 
   echo apply_filters(\'se152488_the_content\' , $this->optionVal[\'custom-message\']); 
?>
对于这类东西,您必须是包含的,或者是独占的,所以如果您想从插件中获得其他过滤器,那么您也必须手动添加它们。

结束

相关推荐

为什么Apply_Filters在循环内部和外部的行为不同?

What I want: 通过创建$query = new WP_Query($args);Why: 以json格式返回特定内容,作为一种API请求,准备在另一个站点上显示What I tried first:foreach($query->posts as $post) { $post->post_content = apply_filters(\'the_content\', $post->post_content); }; 这执行了autop 和do