我使用检查某些设置的健全性sanitize_callback
. 它可以工作,但如果失败,我想重置该值并执行默认值。我该怎么做?
$wp_customize->add_setting(
$attribute[0],
array(
"default" => $attribute[1],
"sanitize_callback" => $validate_func,
)
);
EDIT
的示例
$validate_func
是
kb_validate_url_facebook
检查设置是否为URL,以及是否包含facebook。com。
function kb_validate_url( $url, $valid, $default ) {
if ( $url === "" ) return $default;
$url = strtolower( esc_url_raw( $url ) );
if ( !strpos( $url, $valid ) ) {
if ( $url !== "" ) {
return null;
}
}
return $url;
}
function kb_validate_url_facebook( $url ) {
return kb_validate_url( $url, \'facebook.com\', \'www.facebook.com/USERNAME\' );
}
SO网友:Weston Ruter
在sanitize_callback
函数可以查看第二个参数WP_Customize_Setting
实例并访问default
由于提供的值为空,返回时会出现以下属性:
add_action( \'customize_register\', function( WP_Customize_Manager $wp_customize ) {
$wp_customize->add_setting( \'facebook_url\', array(
\'default\' => \'https://www.facebook.com/USERNAME\',
\'sanitize_callback\' => function( $url, $setting ) {
if ( empty( $url ) ) {
return $setting->default; // <===== Accessing default value.
}
$url = strtolower( esc_url_raw( $url ) );
$host = wp_parse_url( $url, PHP_URL_HOST );
if ( ! preg_match( \'/^(www\\.)?facebook\\.com$/\', $host ) ) {
return new WP_Error( \'invalid_url\', __( \'Invalid URL or not one for Facebook\', \'kb\' ) );
}
return $url;
},
) );
} );