3
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

13

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');
2
  • pastebin.com/3XsexNcg here is full example, but still not working with or without die(). Commented Jan 2, 2013 at 21:07
  • 1
    See my edit, make sure you include settings_errors in your admin page callback. Commented Jan 2, 2013 at 21:15

Your Answer

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

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.