apply_filters(…)在WordPress中实际上是做什么的?


122

我试图了解WordPress中的某些功能,但是我无法理解apply_filters(...)的实际作用。

有人可以通过几个例子为我解决这个问题吗?



一张纸条,上面apply_filters()是功能的令人难以置信的误导性名称,因为它同时适用于过滤器动作挂在目标函数
cameronjonesweb

@NabilKadimi,很好的建议,dev.themeblvd.com / tutorial / filters /#highlighter_604585,但是当此函数不接受任何参数时(请单击链接查看我在说哪个函数),$ output变量将如何更改,正如他在下一个代码部分中所述?
Ramesh Pareek

@RameshPareek您的链接似乎无法正常工作,请使用Github的要诀。
Nabil Kadimi

抱歉!请向下滚动至该页面上的示例1:基础知识
Ramesh Pareek

Answers:


104

apply_filters($tag, $value)将“值”参数传递给每个使用“挂钩”功能(使用add_filter)到指定的过滤器“标签”中。每个函数都会对该值执行一些处理,然后返回修改后的值,以将其传递给序列中的下一个函数。

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

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode

还记得回声任何您没有使用价值的东西,如果它似乎apply_filters($value)正在抹去价值……
MrMesees

32

迟来的答案

简短说明

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

详细说明

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


19

考虑最流行的答案和其他资源后,我正在收集以下内容:

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

1

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


3
抱歉,这是错误的处理方法:apply_filters()调用已初始化的过滤器挂钩,而add_filter()是创建过滤器挂钩的调用。我知道您实际上是在说这个,但是您的功能却以错误的方式出现!
Brian C

apply_filters($ tag,$ value); 允许您在代码中创建一个位置,然后可以使用add_filter()将传递的$ value挂接到并进行修改;
Styledev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.