问题描述
我正在尝试了解 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。