Как получить значение через get_option, когда option_value хранится в многомерном массиве?

11 янв. 2011 г., 21:07:09
Просмотры: 23.2K
Голосов: 3

Я пытаюсь определить, как получить пользовательские значения из wp_options, когда значения хранятся в одном массиве опций.

Например, у меня есть следующие данные в wp_options для option_value, где option_name = "my_category_fields_option". Значение i:n представляет id категории, которая содержит пользовательские данные "my_title"]

a:2:{i:10;a:1:{s:8:"my_title";s:48:"Iced Tea: A Great Choice for Cooling Refreshment";}i:20;a:1:{s:8:"my_title";s:30:"Black Tea is Good for the Soul";}}

Как мне получить значение "my_title" (которое должно быть "Hello World"), когда я просматриваю страницу архива этой категории?

0
Все ответы на вопрос 2
0
$term_id = get_query_var('cat'); // получаем ID текущей категории

$my_fields = get_option('my_category_fields_option');
echo $my_fields[$term_id]['my_title']; // выводим заголовок, соответствующий текущей категории

(предполагается, что речь идет о примерах добавления произвольных полей в редактор категорий)

11 янв. 2011 г. 21:25:24
0

Если передать массив в функцию update_option, он будет автоматически сериализован. Позже вы можете извлечь его обратно в массив следующим образом.

$tempoptions = get_option("plugin-options");
if (!empty($tempoptions)) {
    foreach ($tempoptions as $key => $option)
        $options[$key] = $option;
}

Затем можно выполнить что-то вроде var_dump ($options), что покажет вам весь массив.

Думаю, они используют функции maybe_serialize/maybe_unserialize/is_serialized из кодекса, но я никогда не углублялся в это. Просто нашел их сейчас. http://codex.wordpress.org/Function_Reference/maybe_serialize

11 янв. 2011 г. 21:59:45