@balex777

Как сохранить массив в option через form?

Привет, вот есть код плагина

function add_options_page() {

	?>
    <div class="wrap">
    <h1>Настройка</h1>
        <form method="post" action="options.php">
        <?php settings_fields( 'settings-group' ); ?>
        <table style="width: 80%;">
            <thead>
            <tr>
                <th style="width:30%">1</th>
                <th style="width:25%">2</th>
                <th></th>
            </tr>
            </thead>
            <tbody id="input-tbody">
            <tr>
                <td>
                    <select style="max-width: 100%;width: 100%;" class="firstSelect" name="serviceBlock">
                        <option value="">Выберите</option>
	                    <?php foreach ($posts as $one){ ?>
                            <option data-id ="<?=$one->ID?>" value="<?=$one->ID?>" ><?=$one->post_title?></option>
	                    <?php } ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td>
                    <select style="max-width: 100%;width: 100%;" class="firstSelect" name="serviceBlock">
                        <option value="">Выберите</option>
	                    <?php foreach ($posts as $one){?>
                            <option data-id ="<?=$one->ID?>" value="<?=$one->ID?>"><?=$one->post_title?></option>
	                    <?php } ?>
                    </select>
                </td>
            </tr>
			<tr>
                <td>
                    <select style="max-width: 100%;width: 100%;" class="firstSelect" name="serviceBlock">
                        <option value="">Выберите</option>
	                    <?php foreach ($posts as $one){?>
                            <option data-id ="<?=$one->ID?>" value="<?=$one->ID?>" ><?=$one->post_title?></option>
	                    <?php } ?>
                    </select>
                </td>
            </tr>
            </tbody>
        </table>
            <p class="submit">
                <input type="submit" class="button-primary" value="<?php _e('Сохранить') ?>" />
            </p>

        </form>
    </div>
	<?php
}


Как сохранить в опцию serviceBlock массив со всеми тремя(или более если будет) value селектов?

Знаю такой вариант, если сделать в селектах serviceBlock1,2,3 и т.д.
и написать функцию
function register_serviceBlock() {
	//register our settings
	register_setting( 'add_options_page', 'serviceBlock1' );
	register_setting( 'add_options_page', 'serviceBlock2' );
	register_setting( 'add_options_page', 'serviceBlock3' );
}


Но это не серьезно, селектов может и больше быть каждый раз на выбор и это каждый раз новая опция.

Знаю есть такой метод в Вордпрессе add_option('bguru_options',json_encode($default_options));

Как сделать так что по кнопке submit в форме сохранить все value селектов в через этот метод add_option('bguru_options',json_encode($default_options));?
  • Вопрос задан
  • 247 просмотров
Решения вопроса 1
@balex777 Автор вопроса
Сам решил если кому то интересно ту так
Делаем кнопку так
<input type="submit" name="saveOptions" class="button-primary" value="<?php _e('Сохранить') ?>" />


И такой код

if(array_key_exists('saveOptions',$_POST)){
	saveOptions();
}

function saveOptions()
{
	update_option('bguru_options',3232452);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
В простейшем варианте как-то так
function register_setting() {

		return [
			'serviceBlock1',
			'serviceBlock2',
			'serviceBlock3'
		];
	}

	function register_block() {
		$array = register_setting();
		foreach ( $array as $one ) {
			register_setting( 'add_options_page', $one );
		}

	}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы