Как обновить параметры WordPress из многомерного массива - PullRequest
0 голосов
/ 26 января 2012

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

$option_settings = (array(
                array('Section1', array(
                    array(  'ID'=>'id_name1', 
                            'Label'=>'Title1', 
                            'Value'=>'The title1 bar',
                            'Desc'=>'Description Goes Here1',
                            'Type'=>'input_text',
                            'Button'=>'upload'
                    ),
                array('Section2', array(
                    array(  'ID'=>'id_name2', 
                            'Label'=>'Title2', 
                            'Value'=>'The title2 bar',
                            'Desc'=>'Description Goes Here2',
                            'Type'=>'input_text',
                            'Button'=>'upload'
                    ),
                ))
));

if (!get_option('my_option_settings')) {
add_option('my_option_settings',$option_settings);
}

$options = get_option('my_option_settings');

if ($_REQUEST['save_settings']) {

//this is where my brain snaps huhu 

}

echo '<form method="post" action="index.php" id="form_settings">';
echo '<p class="submit message"><input type="submit" value="Save Changes" name="save_settings" /></p>';
foreach ($options as $section) {
echo '<h3>'.$section[0].'</h3>';
foreach ($section[1] as $option => $value) {
    switch($value['Type']) {
        case "input_text":
            echo '<p><strong>'.$value[Label].'</strong> <input type="text" name="'.$value['ID'].'" id="'.$value['ID'].'" value="'.$value['Value'].'" /></p>';
            break;
    }

}
echo '</form>';

Моя главная проблема заключается в том, как мне отредактировать массив внутри массива и как передать запрос. Любая помощь высоко ценится. Заранее спасибо.

Обновленный вопрос:

ok, допустим, что $ option-settings - это содержимое базы данных опций из Wordpress. Причина в том, что я хотел бы иметь только 1 опцию в базе данных WordPress и просто хранить их в массиве для более упорядоченных данных.

Сначала нужно получить значение и присвоить его переменной:

$fetchOption = get_option('my_option_settings');

теперь я буду редактировать или обновлять массив внутри переменной $ fetchOption.

foreach ($options as $section) {
    foreach ($section[1] as $option => $value) {
        $value['Value'] = [$_POST[$value['ID']]];

    }

}

Последнее - это как вернуть измененное значение в переменную $ fetchOption и обновить базу данных с помощью update_options ('my_option_settings', $ fetchOption).

Это уместно или нет? Какова лучшая практика для этого? Я мог бы просто назначить им один вариант, но я думаю, это немного грязно. еще раз спасибо!

Ответы [ 2 ]

3 голосов
/ 22 ноября 2016

Эммы. Я действительно надеюсь, что вы уже нашли ответ, но ... поскольку кому-то может понадобиться эта информация, я бы хотел добавить ее сюда.

Прежде всего, ссылка на ресурс.

Затем ответ, который я использую в качестве «источника»:

Что касается WordPress - ваш многомерный массив имеет значение one .

Чтобы обновить только часть многомерного массива, необходимо извлечь весь массив, изменить его соответствующим образом и затем обновить весь массив.

Предположим, ваш многомерный массив выглядит следующим образом:

my_options = array(
  'option_a'=>'value_a',
  'option_b'=>'value_b',
  'inner_array'=>array(
       'foo' => 'bar',
       'hello' => 'world',
   ),
  'option_c'=>'value_c'
)

И предположим, что вы хотите обновить значение опции 'hello' с 'world' на 'moon'

//Get entire array
$my_options = get_option('my_options');

//Alter the options array appropriately
$my_options['inner_array']['hello'] = 'moon';

//Update entire array
update_option('my_options', $my_options);

Надеюсь, что это помогает посетителям Stackoverflow управлять многомерными массивами, когда речь заходит об опциях Wordpress:)

1 голос
/ 27 января 2012

Я был там и сделал это.Вот учебник, который мне очень помог!http://net.tutsplus.com/tutorials/wordpress/how-to-create-a-better-wordpress-options-panel/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...