从下划线开始apply_filters()
电话:
return apply_filters( \'theme_options_validate\', $output, $input );
这说明:
筛选器名称为theme_options_validate
过滤器应用于$output
内容$input
传递到验证函数的内容也可以传递到回调,因此,它的工作原理如下:
WordPress通行证$input
, 基本上包含$_POST
数据从设置窗体发送到验证回调验证回调操作$input
, 要对其进行清理/验证,验证回调将存储$input
像$output
验证回调通过$output
通过theme_options_validate
筛选验证回调返回的筛选结果$output
因此,当您编写回调以应用于theme_options_validate
过滤器,该回调接收并应返回$output
. 也就是说:您正在返回对已处理数据的处理:
function example_filter_theme_options_validate( $output ) {
// Do stuff to $output
// return $output
return $output;
}
add_filter( \'theme_options_validate\', \'example_filter_theme_options_validate\' );
如果你想对已经被操纵的数据进行更改,那就太好了;但是,如果要添加数据,则不能仅使用
$output
. 例如,如果您通过子主题添加了一个主题选项,则该选项将无法在默认验证回调中生存,因为该选项不会在回调中被列入白名单。该选项将位于
$input
, 但它不会出现
$output
.
在步骤中apply_filters()
电话:
return apply_filters( \'theme_options_validate\', $output, $input );
通过添加
$input
作为一个附加参数,下划线可以有效地传递
$input
任何想要使用它的回调。因此,与此相反:
function example_filter_theme_options_validate( $output ) {
// Do stuff;
// return $output
return $output;
}
您的函数声明如下所示:
function example_filter_theme_options_validate( $output, $input ) {
// Do stuff;
// return $output
return $output;
}
现在,您的函数可以访问这两个
$output
和$input
, 然后,您可以从$input
, 然后将其添加到$output
, 从而将其列入白名单。请注意,必须通过修改add_filter()
电话:
add_filter( $filter, $callback, $priority, $parameters );
因为现在要传递两个变量,所以必须设置$parameters
到2
(默认值为1
):add_filter( \'theme_options_validate\', \'example_filter_theme_options_validate\', 10, 2 );
总而言之:// this works
function add_validation( $output, $input ) {
if ( isset( $input[\'example\'] ) && !empty( $input[\'example\'] ) )
$output[\'example\'] = wp_filter_nohtml_kses( $input[\'example\'] );
return $output;
}
add_filter( \'theme_options_validate\', \'add_validation\', 10, 2 );