Función get_option en WordPress
Actualmente estoy tratando de crear mi propio tema, pero no estoy muy seguro de cómo funciona la función get_option(), porque ¿cómo es que esto..
echo get_option('show_header', 'sultenhest_theme_display_options');
echo get_option('sultenhest_theme_display_options')['show_header'];
...ambos retornan 1 (pero a Dreamweaver no le gusta la segunda opción). Mientras que
echo get_option('twitter', 'sultenhest_theme_social_options');
...simplemente retorna 'sultenhest_theme_social_options', lo cual es incorrecto.
Una opción sería definir el array así:
$social_options = get_option( 'sultenhest_theme_social_options' );
y llamarlo así:
echo $social_options['twitter'];
Retorna el string correcto, pero solo funciona en el archivo header.php (si el array está definido allí) y no en, por ejemplo, footer.php.
ACTUALIZACIÓN: Siguiendo en parte a ialocin y Brad Dalton llegué a esta solución, que funciona perfectamente:
function sultenhest($option, $arg){
$the_array = array();
foreach( get_option('sultenhest_theme_'.$option) as $key => $item ){
$the_array[$key] = $item;
}
return $the_array[$arg];
}
y mostrarlo así:
echo sultenhest('social_options', 'twitter') ? '<a href="' . sultenhest('social_options', 'twitter') . '">Twitter</a>' : '';

Estás usando get_option()
incorrectamente en la primera variante, así que revisa nuevamente la documentación de get_option()
. Básicamente no puedes acceder directamente a un elemento de array con la función, simplemente no lo soporta.
La segunda variante debería ser posible, pero necesitas al menos PHP 5.4 - si no estoy totalmente equivocado; no sé nada sobre Dreamweaver.
La razón por la que no puedes acceder a la variable en cualquier lugar es el alcance de las variables (variable scope), puedes leer sobre esto en el Manual de PHP: Alcance de variables.
Lo más fácil que imagino es hacerlo a la vieja usanza, simplemente crea una función que puedas usar. Por ejemplo así:
function wpse_179693_echo_my_options_array_value() {
$social_options = get_option( 'sultenhest_theme_social_options' );
if ( isset( $social_options['twitter'] ) ) {
echo $social_options['twitter'];
} else {
return FALSE;
}
}

get_option('some_option')['some_key']
realmente funciona en php 5.4, se llama desreferenciación de arrays.
