apply_filters(...)实际上在WordPress中做了什么?

时间:2010-02-16 06:06:26

标签: wordpress function

我正在尝试理解WordPress中的一些功能,但我无法理解apply_filters(...)实际上的功能。

是否有人能够通过几个例子为我解决这个问题?

4 个答案:

答案 0 :(得分:101)

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

答案 1 :(得分:26)

迟到的回答

简短说明

apply_filters()global $wp_filters数组进行交互。基本上它只是检查当前过滤器(或挂钩)是否附加了一个动作(/回调函数),然后调用它。

长解释

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

答案 2 :(得分:18)

考虑到最受欢迎的答案和其他资源,以下是我正在收集的内容:

  • $ tag似乎是钩子名称的同义词。 (这对我来说不是特别直观。)
  • the_content是“过滤器”类型的钩子的示例。
  • the_content hook由多个过滤器组成。
  • 过滤修改数据。它们基本上过滤数据库,在用户查看数据之前更改数据。
  • 例如,apply_filters()的一个常见用途是将the_content过滤器应用于$ content。在这种情况下,双倍返回将转换为<p>标签,笑脸将转换为图标等。
  • “the_content”是一个钩子,而“the_content()”是一个函数。

答案 3 :(得分:1)

在最基本的术语中,apply_filters用于初始化过滤器钩子... add_filter为已经创建的钩子分配一个新函数。