2
public function database_name_check($input){
    //debug
    add_settings_error('notice', 'lol', 'lol');
    if($this->wpdb->get_var($this->wpdb->prepare('SHOW DATABASES LIKE %s', $input)) == $input)
        return $input;
    else{
        add_settings_error('notice', 'lol', 'lol');
        return FALSE;
    }
}

I can not understand why the error does not exceed, any suggestions?

1 Answer 1

12

Take a look at the add_settings_error prototype.

add_settings_error( $setting, $code, $message, $type );

The first argument is your settings name/key -- or if your setting is on another page (eg general) it should be the page key. The second is whatever you'd like to add to the ID attribute, then error/updated message, and finally type. It doesn't work because you're using it incorrectly.

So you probably want...

<?php
add_settings_error(
    'your_setting_key', // whatever you registered in `register_setting
    'a_code_here', // doesn't really mater
    __('This is the message itself', 'wpse'),
    'error', // error or notice works to make things pretty
);

You also need to tell WordPress to display your settings errors. If it's on a custom page, you'll need to include settings_errors in the callback.

settings_errors('your_setting_key');
3
  • pastebin.com/3XsexNcg here is full example, but still not working with or without die(). Jan 2, 2013 at 21:07
  • 1
    See my edit, make sure you include settings_errors in your admin page callback. Jan 2, 2013 at 21:15
  • yes, already found this solution, but thanks. Jan 2, 2013 at 21:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.