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

Tim*_*Tim 112 wordpress function

我试图理解WordPress中的一些功能,但我无法理解apply_filters(...)实际上做了些什么.

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

Ric*_*d M 104

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


kai*_*ser 29

迟到的答案

简短说明

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

很长的解释

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


小智 18

在考虑最受欢迎的答案和其他资源后,我正在收集这些内容:

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