WordPress开发函数apply_filters_ref_array()
WordPress开发函数apply_filters_ref_array(),调用已添加到筛选器钩子的回调函数…
WordPress开发函数apply_filters_ref_array(),调用已添加到筛选器钩子的回调函数,并指定数组中的参数。
用法:
apply_filters_ref_array( string $tag, array $args )
描述:
参见also
apply_filters():这个函数是相同的,但是传递给与$tag挂钩的函数的参数是使用数组提供的。
参数
$tag
(string) (必需) 过滤器钩子的名称。
$args
(array) (必需) 提供给与$tag挂钩的函数的参数。
返回
(mixed)所有钩子函数应用到过滤后的值。
更多信息
当你的参数已经在数组中,或者有很多参数要传递时,这个函数会很有用。只是要确保你的论点是在正确的顺序!
在PHP 5.4之前,回调函数传递一个指向数组的引用指针。你的回调函数可以使用这个指针来访问所有的数组元素。添加一个过滤器并声明一个挂钩上述过滤器示例的回调函数,如下所示:
add_filter(‘my_filter’, ‘my_callback’);
function my_callback( $args ) {
//access values with $args[0], $args[1] etc.
}
因为数组是通过引用传递的,所以对数组元素的任何更改都应用于函数范围之外的原始数组。
无论PHP版本如何,你都可以在添加过滤器时指定数组元素的数量,并在回调函数声明的单独参数中接收每个元素,如下所示:
add_action(‘my_filter’, ‘my_callback’, 10, 4 );
function my_callback( $arg1, $arg2, $arg3, $arg4 ) {
//access values with $args1, $args2 etc.
}
因为原始数组是通过引用传递的,所以对数组元素的任何更改都应用于函数范围之外的原始数组。
来源:
文件: wp-includes/plugin.php
function apply_filters_ref_array( $tag, $args ) {
global $wp_filter, $wp_current_filter;
// Do ‘all’ actions first.
if ( isset( $wp_filter[‘all’] ) ) {
$wp_current_filter[] = $tag;
$all_args = func_get_args(); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection
_wp_call_all_hook( $all_args );
}
if ( ! isset( $wp_filter[ $tag ] ) ) {
if ( isset( $wp_filter[‘all’] ) ) {
array_pop( $wp_current_filter );
}
return $args[0];
}
if ( ! isset( $wp_filter[‘all’] ) ) {
$wp_current_filter[] = $tag;
}
$filtered = $wp_filter[ $tag ]->apply_filters( $args[0], $args );
array_pop( $wp_current_filter );
return $filtered;
}
更新日志:
用户贡献的笔记
(由Codex – 5年前贡献)
例子
调用添加的过滤器并传递参数数组:
$args = array( ‘arg_1’, true, ‘foo’, ‘arg_4’ );
apply_filters_ref_array( ‘my_filter’, $args );
这与:
apply_filters( ‘my_filter’, ‘arg_1’, true, ‘foo’, ‘arg_4’ );
(由Codex – 5年前贡献)
请注意
当你的参数已经在数组中,或者有很多参数要传递时,这个函数会很有用。只是要确保你的论点是在正确的顺序!
(由Codex – 5年前贡献)
从PHP 5.4开始,数组不再通过引用传递
在PHP 5.4之前,回调函数传递一个指向数组的引用指针。你的回调函数可以使用这个指针来访问所有的数组元素。添加一个过滤器并声明一个挂钩上述过滤器示例的回调函数,如下所示:
function wpdocs_my_callback( $args ) {
// Access values with $args[0], $args[1] etc.
}
add_filter( ‘my_filter’, ‘wpdocs_my_callback’ );
因为数组是通过引用传递的,所以对数组元素的任何更改都应用于函数范围之外的原始数组。
无论PHP版本如何,你都可以在添加过滤器时指定数组元素的数量,并在回调函数声明的单独参数中接收每个元素,如下所示:
function wpdocs_my_callback( $arg1, $arg2, $arg3, $arg4 ) {
// Access values with $args1, $args2 etc.
}
add_action( ‘my_filter’, ‘wpdocs_my_callback’, 10, 4 );
该方法将数组元素复制到参数变量中。对形参变量的任何更改都不会影响原始数组。
从PHP 5.4开始,数组不再通过引用传递,不管函数名是什么。你甚至不能使用引用符号’ & ‘,因为调用时间通过引用现在抛出一个错误。你可以做的是将引用指针作为数组元素传递。这样做需要添加到过滤器的所有回调函数都需要一个引用指针。这不是你在WordPress操作中看到的东西。此技术仅供参考之用。
apply_filters_ref_array( ‘my_filter’, array( &$args ) );
function wpdocs_my_callback( &$args ) {
//access values with $args[0], $args[1] etc.
}
add_action(‘my_filter’, ‘wpdocs_my_callback’);
因为原始数组是通过引用传递的,所以对数组元素的任何更改都应用于函数范围之外的原始数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!