您需要做的是构建自己的数据验证功能。Ozh写道a great tutorial 关于这件事,我想说的是。。。
假设调用了选项数组$my_options
它包含三个字段,\'text\'
, \'age\'
, 和\'isauthorized\'
.
您仍然可以使用相同的方式进行注册:
register_setting( \'my_setting\', \'my_options\', \'my_validation_function\' );
但是您看到我们如何为第三个参数使用自定义回调了吗?现在我们只需要定义自定义函数:
function my_validation_function( $input ) {
// Validate age as an integer
$input[\'age\'] = intval( $input[\'age\'] );
// Strip HTML tags from text to make it safe
$input[\'text\'] = wp_filter_nohtml_kses( $input[\'text\'] );
// Make sure isauthorized is only true or false (0 or 1)
$input[\'isauthorized\'] = ( $input[\'isauthorized\'] == 1 ? 1 : 0 );
return $input;
}
<小时>
Alternatively
如果您想使验证功能更灵活一些,可以使用WordPress的内置过滤器,以避免重复代码。您仍然以相同的方式注册验证:
register_setting( \'my_setting\', \'my_options\', \'my_validation_function\' );
但不是检查验证函数中数组的每个元素,而是遍历数组并委托给过滤器:
function my_validation_function( $input ) {
foreach( $input as $key => $value ) {
$input[$key] = apply_filters( \'my_validation_\' . $key, $value );
}
return $input
}
现在,您可以挂接所需的任何验证逻辑:
add_filter( \'my_validation_age\', \'validate_numeric\' );
function validate_numeric( $numeric ) {
return intval( $numeric );
}
add_filter( \'my_validation_text\', \'validate_text\' );
function validate_text( $text ) {
return wp_filter_nohtml_kses( $text );
}
add_filter( \'my_validation_isauthorized\', \'validate_bool\' );
function validate_bool( $bool ) {
return $bool == 1 ? 1 : 0;
}
如果未为某个选项添加筛选器,则该选项的值将保持不变。过滤器也是您希望使用返回内容的函数的方式,您可以添加任意数量的内容。。。或将筛选器附加到任何字段。
假设数组中有两个数字字段-age
和numberChildren
. 而不是创建一个额外的验证函数来处理numberChildren
字段,您只需将其添加到过滤器:
add_filter( \'my_validation_numberChildren\', \'validate_numeric\' );