使用Apply_Filters()的要点

时间:2018-05-12 作者:Simo Patrek

当我试图开发一个插件时,我试图看到其他插件也能完成我的插件将要实现的功能,然后我看到开发人员在大多数功能中使用该功能apply_filters() 我不明白为什么。下面是一个示例:

public static function myFunction() {
    return apply_filters( \'du/class/method\' array(
        \'index\'    => \'value\',
        \'index\'    => \'value\',
        \'index\'    => \'value\',
        \'index\'    => \'value\',
    ) );
}
正如您在函数的第一个参数中所看到的apply_filters() 这里有一个字符串参数,无论我在哪里看到这个函数,我总是看到类似的东西du/class/method .

请解释一下。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

关键是允许开发人员定制主题或插件的各个方面。

呼叫时apply_filters() 您提供了希望开发人员能够筛选的名称和值。

例如:

$array = apply_filters( \'du/class/method\' array(
    \'index\'    => \'value\',
    \'index\'    => \'value\',
    \'index\'    => \'value\',
    \'index\'    => \'value\',
) );
开发人员现在可以更改$array 在插件中使用du/class/method 使用筛选add_filter(). 要添加项目,请执行以下操作:

function wpse_303378_filter( $array ) {
    $array[] = \'New item\';

    return $array;
}
add_filter( \'du/class/method\', \'wpse_303378_filter\' );
在本例中,筛选器的名称du/class/method 可以是您想要的任何插件,但许多开发人员会将其命名为“名称空间”,这样它就不会与任何其他插件冲突。例如,高级自定义字段在其所有挂钩前面加上acf/. 您的示例意味着过滤器名称使用它所在的类和方法对相关过滤器进行分组,但这取决于插件。

您可以阅读有关筛选器的更多信息here.

结束

相关推荐

无法使用deactive_plugins()自停用插件

我有这些插件文件:我的插件/我的插件。php我的插件/我的插件类。php中my-plugin.php 我有以下几行:register_activation_hook( __FILE__, array( $my_plugin_object, \'on_activate_my_plugin\' ) ); 在中my-plugin-class.php 我有以下方法:public function on_activate_my_plugin() { if ( // Some validat