apply_filters(…)实际上在WordPress中做了什么?
我试图了解WordPress的一些function,但是我无法理解apply_filters(…)实际上做了什么。
有人能够用几个例子为我解决这个问题吗?
apply_filters($tag, $value)
将'value'parameter passing给每个函数'hooked'(使用add_filter
)到指定的filter'tag'中。 每个函数对该值执行一些处理,并返回一个修改后的值,以传递给序列中的下一个函数。
例如,默认情况下(在WordPress 2.9中), the_content
filter通过以下函数序列传递值:
- wptexturize
- convert_smilies
- convert_chars
- wpautop
- shortcode_unautop
- prepend_attachment
- do_shortcode
迟到的答案
简短的解释
apply_filters()
与global $wp_filters
数组交互。 基本上它只是检查数组,如果当前filter(或挂钩)有一个动作(/callback函数)附加,然后调用它。
很长的解释
当您将callback/操作附加到筛选器或挂钩时,只需将callback名称添加到全局筛选器arrays即可。 然后,在代码中(例如模板,核心或插件文件)发生对do_action()
或apply_filters()
的调用,然后WordPress通过数组search并调用callbackapply_filters()
。 filter比钩子更特别的是,它返回的值(进一步处理),而不是只发射callback。 所以总结一下:钩子是要插入数据的,而filter是要修改数据的。
以下是我在收集最受欢迎的答案和其他资源时收集的内容:
- $标签似乎是钩子名称的同义词。 (这对我来说不是特别直观。)
- the_content是“filter”types的钩子的一个例子。
- the_content挂钩由多个filter组成。
- filter修改数据。 他们基本上过滤数据库,在用户查看之前更改数据。
- 例如,apply_filters()的一个常见用法是将$ contentfilter应用到$ content。 在这种情况下,双重返回将转换为
<p>
标签,笑脸将转换为图标等。 - “the_content”是一个钩子,而“the_content()”是一个函数。
在最基本的术语中,apply_filters用于初始化一个filter钩子… add_filter为已经创build的钩子分配一个新的函数。