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)?
4 Answers
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.