使用设置API持久化字段

时间:2012-05-09 作者:Dave Kiss

在我的管理面板中,如果我使用清理回调register_setting() 并且该字段没有通过我的自定义验证,我一直在使用return FALSE; 并添加一个错误add_settings_error().

如何将无效值返回给用户提交的表单字段,以便它们不必重新开始?

1 个回复
SO网友:Stephen Harris

这是一个非常好的问题——我的建议是使用瞬态。例如,在验证回调中:

 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\');
    }

结束

相关推荐

Comment form validation

如何设置注释字段的验证规则?我更改了评论者姓名/电子邮件/主页onmouseover和onblur的值(我使用它而不是标签-因此如果字段为空,它会显示“您的电子邮件”、“您的主页”等)。问题是,在提交时,它会在主页字段中提交此文本(因为它没有验证,而不像电子邮件字段,如果您输入了除[email protected]).如何验证主页字段?