Apply_Filters函数及其变量的说明

时间:2011-05-06 作者:Ash

我正在学习如何使用PHP构建html表单,方法是以“simplr表单注册”插件为例。

我正在查看以下代码:

$form .= apply_filters(\'simplr-reg-instructions\', __(\'Please fill out this form to sign up for this site\', \'simplr-reg\'));
您能解释一下这里发生了什么吗?函数的作用是什么,为什么需要“simpr reg指令”和“simpr reg”?

为什么这句话不能简单地说:

$form .= \'Please fill out this form to sign up for this site\' ;
我已经阅读了函数引用,但仍然无法理解它。

2 个回复
SO网友:John P Bloch

该行使用两个不同的函数,需要两个单独的解释。

__()

这是一个转换函数。如果设置正确,它将转换预转换字符串列表中的第一个参数。如果安装有一个带有编译翻译的文件供此函数使用,它将使用它。当然,插件必须打包自己的翻译,因此是第二个参数。simplr-reg 说明__() 字符串的翻译\'Please fill out this form to sign up for this site\' 应位于与关联的翻译文件中\'simplr-reg\' (这是在插件的前面通过load_plugin_textdomain() 函数)。

然后,函数返回翻译。如果没有要返回的翻译(例如,当前语言没有编译的翻译,字符串没有该包的编译翻译等),则返回原始输入。

所以对于一个英文的WordPress网站,__( \'This\', \'simplr-reg\' ) 在功能上与\'This\'. 要了解有关l10n(本地化)的更多信息,请阅读法典:

http://codex.wordpress.org/I18n_for_WordPress_Developers

apply\\u filters()

此函数允许您根据需要过滤插件使用的值。这是插件开发人员需要掌握的主要概念之一。WordPress通过钩子进行扩展,钩子基本上是访问点,允许您计时插件操作的执行和/或操作WordPress使用的信息/数据等。

要操作数据,如您询问的代码片段,可以使用函数add_filter(). 下面是一个基本的示例,说明了这是如何工作的:

add_filter( \'simplr-reg-instructions\', \'wpse16573_my_filter\' );
你可能会认出第一个论点。这和add_filter 在上面这是挂钩名称。第二个参数是过滤器回调。它必须是对函数的有效回调(read more about callbacks here). 这行代码说“当\'simplr-reg-instructions\' 执行hook后,使用我提供的回调运行函数。“”apply_filters() 执行在其第一个参数中找到的钩子,本质上意味着“执行为该钩子注册的所有函数”apply_filters 然后传递所有其他参数(在本例中,\'Please fill out this form to sign up for this site\') 到该筛选器上的函数。因此,我在上面使用的回调应该如下所示:

function wpse16573_my_filter( $text ){
  $text = "<strong>$text</strong>";
  return $text;
}
WordPress中有两种挂钩:过滤器(我们在这里使用的那种)和操作。这两者之间的主要区别在于,过滤器期望您返回某些内容,而操作则不期望您返回。因此,对于这个过滤器,我上面的示例添加了一些html\'Please fill out this form to sign up for this site\' 并将其返回。

在此处阅读有关操作和挂钩的更多信息:

http://codex.wordpress.org/Plugin_API

SO网友:Bainternet

这里有两个不同的函数apply_filters__()

apply\\u filters函数是一种WordPress方式,允许您使用自己的回调函数和add_filter 作用它接受了许多论点,但重要的是前两个:

$something = apply_filters( $tag, $value, $var ... );
$标记是中使用的筛选器挂钩的名称add_filter 例如:

add_filter($tag,callback_function);
$值是您可以更改或编辑的实际值。

$var是回调函数可以使用的一个或多个变量。

__() 函数用于翻译:

__($message,$text_domain);
$消息是要翻译的实际消息。

$text\\u domain是用于加载插件或主题翻译的文本域标记load_plugin_textdomain()

what it does?

它在本地化模块中搜索$消息的翻译,并将翻译传递给PHP返回语句。如果找不到$message的翻译,它只返回$message。

因此,现在案例中的两个函数以相同的方式工作,apply\\u过滤器将发送与simplr-reg-instructions 筛选挂钩使用的文本域“请填写此表单以注册此网站”的翻译值(如果存在)simplr-reg

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴