首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从wordpress短代码输出中删除筛选器

如何从wordpress短代码输出中删除筛选器
EN

WordPress Development用户
提问于 2013-05-27 12:53:09
回答 1查看 2.5K关注 0票数 2

推特网址插件将过滤器添加到the_content中。这个过滤器扰乱了我的插件短代码输出的输出。因此,我希望只为我的短代码输出删除此筛选器。

代码语言:javascript
运行
复制
add_filter('the_content', 'twitter_url');

我知道这可以用下面的过滤器删除

代码语言:javascript
运行
复制
remove_filter('the_content', 'twitter_url');

但是,如何将此筛选器仅应用于我的短代码输出。

我的短代码

代码语言:javascript
运行
复制
add_shortcode('xxx', 'func_xxx');

短码回调函数

代码语言:javascript
运行
复制
function func_xxx(){

 return 'xxx';
}

所以请引导我做这件事!

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2013-05-27 16:04:59

the_content上的过滤器不是在“每个短代码”的基础上应用的。将Post内容传递给第一个过滤器,然后将修改后的post内容传递给第二个过滤器,然后将前两个过滤器更改的内容传递给第三个过滤器,依此类推。

您不能只为您的短代码删除the_content过滤器,因为过滤器不是这样应用的。

有时,您可以通过操作注册筛选器的优先级来避免筛选问题。

代码语言:javascript
运行
复制
add_filter('the_content', 'twitter_url',1); // run the filter very early
add_filter('the_content', 'twitter_url',100); // run the filter late

但是,在你的例子中,这两个过滤器--添加twitter_urldo_shortcodes的过滤器--不是由您添加的,所以它更复杂,更容易出错。

您可以在do_shortcodes运行的地方使用插件服务器。

代码语言:javascript
运行
复制
remove_filter('the_content', 'do_shortcode', 11); 
add_filter('the_content', 'do_shortcode', 100); 

这也许能帮你解决这个问题。我在我维护的网站上做过这件事。值得关注的是,您的插件正在改变由Core注册的内容。这可能会给主题或其他插件带来麻烦。

这个答案(可能)是正确的,它不可能像你发布的虚拟代码那样构造,也不能确切解释Twitter插件对你的代码做了什么,那就是找出你的短代码发生了什么,以及为什么,并找到一种方法从插件内部或短代码本身中保护该短代码的内容。小的重构可能可以解决这个问题,但这意味着需要查看实际的代码,而不是一些没有意义的填充代码。

票数 6
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/100874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档