以下是该方案:
if( apply_filters( 'example_filter', false, $type ) ) {
// do something
}
我想在$type
块内提供// do something
或从callback_function
传递。
$type = 'select';
function callback_function( $bool, $type ) {
return true;
}
add_filter( 'example_filter', 'callback_function', 10, 2 );
如何通过callback_function
范围内apply_filters
范围内的争论?
答案 0 :(得分:0)
不幸的是,您无法从WordPress中的apply_filters
函数(参考与否)传递其他变量,但是,有几种解决方法。如果您的代码是为处理它而设计的,那么您的第二个参数(从apply_filters
调用返回的过滤器名称之后的参数)可以更改为非布尔值或全局变量(不推荐):
$type = 'select';
if( false !== ($type = apply_filters( 'example_filter', false, $type )) ) {
// Returned $type available here (if it is not boolean false)
}
定义:
function callback_function( $type ) {
if( /* is valid conditional */ ) {
return $type; // Default value
} else if ( /* another valid condition */ ) {
return 'radio';
}
// else not valid
return false;
}
add_filter( 'example_filter', 'callback_function', 10 );
另一种方法是使用全局变量(不推荐):
$GLOBALS['type'] = 'select';
if( apply_filters( 'example_filter', false ) ) {
// $GLOBALS['type'] available here
}
定义:
function callback_function( $bool ) {
global $type;
$type = 'radio';
return true;
}
add_filter( 'example_filter', 'callback_function', 10 );
参考:https://www.geeklab.info/2010/04/wordpress-pass-variables-by-reference-with-apply_filter/