How to add a default value to get_option if it’s used as a variable ?
The code :
$my_options = get_option( 'my_options' ); // Associative Array 'my_options'. <div id="identifier" class="classname" style="background-color: <?php echo esc_attr( $my_options['my_background_color_option'] ); ?>">
I want to avoid an Undefined index error or a false return.
Is the following correct ?
<div id="identifier" class="classname" style="background-color: <?php echo esc_attr( $my_options['my_background_color_option'] ) ? $my_options['my_background_color_option'] : '#000'; ?>">
Advertisement
Answer
As you’ve written it, you’re only catching Undefined Index errors. There’s also a parenthesis out of place that renders it syntactically meaningless. My opinion here is a ternary operator gets ugly with that much text. This would do exactly the same thing. You can always make things more elegant once you understand them.
<div id="identifier" class="classname" style="background-color:
<?php
if (
isset($my_options['my_background_color_option']) &&
$my_options['my_background_color_option'] != FALSE
)
{$op = $my_options['my_background_color_option'];}
else
{$op = '#000';}
echo esc_attr($op);
?>
">
Edit:
You could also use empty to achieve this in less words.
<div id="identifier" class="classname" style="background-color:
<?php
if (!empty($my_options['my_background_color_option']))
{$op = $my_options['my_background_color_option'];}
else
{$op = '#000';}
echo esc_attr($op);
?>
">
From there your ternary looks a little better:
<div id="identifier" class="classname" style="background-color: <?php echo esc_attr((!empty($my_options['my_background_color_option']) ? $my_options['my_background_color_option'] : '#000')); ?> ">