Функция get_option в WordPress
Я пытаюсь создать свою собственную тему, но не совсем понимаю, как работает функция get_option(), потому что вот такой код..
echo get_option('show_header', 'sultenhest_theme_display_options');
echo get_option('sultenhest_theme_display_options')['show_header'];
..оба варианта возвращают 1 (но Dreamweaver не нравится второй вариант). В то время как
echo get_option('twitter', 'sultenhest_theme_social_options');
..просто возвращает 'sultenhest_theme_social_options', что неверно.
Один из вариантов - определить массив таким образом
$social_options = get_option( 'sultenhest_theme_social_options' );
и вызывать его так
echo $social_options['twitter'];
Это возвращает правильную строку, но работает только в файле header.php (если массив определен там) и не работает, например, в footer.php.
ОБНОВЛЕНИЕ: Частично следуя советам ialocin и Brad Dalton, я пришел к такому решению, которое отлично работает:
function sultenhest($option, $arg){
$the_array = array();
foreach( get_option('sultenhest_theme_'.$option) as $key => $item ){
$the_array[$key] = $item;
}
return $the_array[$arg];
}
и вывод данных осуществляется так:
echo sultenhest('social_options', 'twitter') ? '<a href="' . sultenhest('social_options', 'twitter') . '">Twitter</a>' : '';

Вы используете get_option()
неправильно, первый вариант, поэтому взгляните еще раз на документацию get_option()
. По сути, вы не можете напрямую обращаться к элементу массива с помощью этой функции, она просто не поддерживает это.
Второй вариант должен работать, но вам потребуется как минимум PHP 5.4 — если я не ошибаюсь; я ничего не знаю о dreamweaver.
Причина, по которой вы не можете получить доступ к переменной везде, где хотите, — это область видимости переменных, прочитайте об этом в Руководстве PHP: Область видимости переменных.
Самое простое решение, которое я могу предложить, — сделать это по-старому, просто создать функцию, которую можно использовать. Например, вот так:
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']
действительно работает в PHP 5.4, это называется разыменование массива.
