在我的管理面板中,如果我使用清理回调register_setting()
并且该字段没有通过我的自定义验证,我一直在使用return FALSE;
并添加一个错误add_settings_error()
.
如何将无效值返回给用户提交的表单字段,以便它们不必重新开始?
在我的管理面板中,如果我使用清理回调register_setting()
并且该字段没有通过我的自定义验证,我一直在使用return FALSE;
并添加一个错误add_settings_error()
.
如何将无效值返回给用户提交的表单字段,以便它们不必重新开始?
这是一个非常好的问题——我的建议是使用瞬态。例如,在验证回调中:
wpse51669_validation_cb($settings){
//Perform validation checks
if( $valid ){
//If settings validate
return $validate_settings;
}
//Otherwise add settings error
add_settings_error(\'my-plug-in-settings\',\'error-with-xyz\', \'I fell over\',\'error\');
//And add the failed settings to a transient
set_transient( \'my-plug-in-settings-invalid\', $settings, 60);
return false;
}
然后在设置页面上,如果选项已验证-检查瞬态,如果发现“失败”设置,则使用“失败”设置: if( isset($_GET[\'settings-updated\']) && $_GET[\'settings-updated\'] && get_transient(\'my-plug-in-settings-invalid\') ){
$options_to_display = get_transient(\'my-plug-in-settings-invalid\');
delete_transient(\'my-plug-in-settings-invalid\');
}else{
$options_to_display = get_option(\'my-plug-in-settings\');
}
如何设置注释字段的验证规则?我更改了评论者姓名/电子邮件/主页onmouseover和onblur的值(我使用它而不是标签-因此如果字段为空,它会显示“您的电子邮件”、“您的主页”等)。问题是,在提交时,它会在主页字段中提交此文本(因为它没有验证,而不像电子邮件字段,如果您输入了除something@something.something).如何验证主页字段?