How to add a default value to get_option
if it’s used as a variable ?
The code :
JavaScript
x
$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 ?
JavaScript
<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.
JavaScript
<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.
JavaScript
<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:
JavaScript
<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'));
?>
">