问题描述

我正在尝试了解 WordPress 中的一些功能,但是我不知道 apply_filters(…)实际上在做什么。

有几个例子,有人能够为我清除这个问题吗?

最佳解决方案

apply_filters($tag, $value)将’value’ 参数传递给’hooked'(使用 add_filter) 到指定的过滤器’tag’ 中。每个函数对该值执行一些处理,并返回一个修改后的值,以传递给序列中的下一个函数。

例如,默认情况下 (在 Wordpress 2.9 中),the_content 过滤器通过以下函数序列传递值:

  • wptexturize

  • convert_smilies

  • convert_chars

  • wpautop

  • shortcode_unautop

  • prepend_attachment

  • do_shortcode

次佳解决方案

迟到的答案

简短解释

apply_filters()global $wp_filters 阵列相互作用。基本上,它只是检查数组,如果当前的过滤器 (或钩子) 有一个动作 (/回调函数) 附加,然后调用它。

很长的解释

当您将回调/操作附加到过滤器或钩子时,您只需将回调名称添加到全局过滤器数组。当时,在代码 (例如模板,核心或插件文件) 中,发生对 do_action()apply_filters()的调用,然后 WordPress 通过数组搜索并调用回调。过滤器比钩子更特别的是它返回值 (进一步处理),而不仅仅是触发回调。所以总结一下:Hooks 要插入数据,而 filter 是要修改数据。

第三种解决方案

这是我正在读书,考虑最流行的答案和额外的资源:

  • $标签似乎是钩子名称的同义词。 (对我来说并不是特别直观。)

  • the_content 是”filter” 类型的挂钩的示例。

  • the_content 挂钩由多个过滤器组成。

  • 过滤器修改数据。他们基本上过滤数据库,在用户查看数据之前更改数据。

  • 例如, apply_filters() 的常见用途是将 the_content 过滤器应用于 $ content 。在这种情况下,双重返回将转换为<p> 标签,笑脸将转换为图标等。

  • “the_content” 是一个钩子,而”the_content()” 是一个功能。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。