Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I am using something like this on one of my plugins:

$myOption_def = "myOption Default Value";
$myOption = get_option( 'myOption' ) ? get_option( 'myOption' ) : $myOption_def;

That works fine, but the problem is that I need to be able to set the option to "empty", but when I do that (from a textarea on my plugin's option page), I get the default value instead of an empty string because get_option( 'myOption' ) returns the same if my option value is empty than if it doesn't exists.

So how can I figure out when my option doesn't exist (and then set $myOption to my default value), or when my option value is empty (and then set $myOption to an empty string)?

share|improve this question

3 Answers 3

Basically to distinguish between false boolean value and '' empty string you must use more strict comparison operator.

var_dump( '' == false ); // this is 'true', treated like two 'empty()' values

var_dump( '' === false ); // this is 'false', because values are both 'empty()' BUT of different type

But there is more. Since what you want is very typical - get_option() already can provide default value on its own. So your code can be simplified to:

$myOption = get_option( 'myOption', $myOption_def );

Note that this will correctly determine empty string and won't apply default value in that case.

share|improve this answer
    
that's the only valid answer IMHO, I hope we get that for query vars as well in core. –  hakre Feb 9 '11 at 15:47

Oops, figure out myself:

$myOption = (get_option( 'myOption' )==FALSE) ? get_option( 'myOption' ) : $myOption_def; 
share|improve this answer
1  
don't do so, do what Rarst suggested instead: $myOption = get_option( 'myOption', $myOption_def );. You don't need to reinvent the wheel. It's already in there, a default value for any option. Just pass it as second parameter. –  hakre Feb 9 '11 at 15:48

You could check for null like so,

$id = "my_option";

$option_exists = (get_option($id, null) !== null);

if ($option_exists) {
    update_option($id, $value);
} else {
    add_option($id, $value);
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.