как зарегистрировать / добавить несколько вариантов в одно поле в WordPress?

Вопрос или проблема

Как я могу зарегистрировать или добавить несколько вариантов в одно поле? Например, мы сохраняем логотип в get_options() путем регистрации настройки и добавления полей с помощью функции add_settings_field() и выводим его соответственно.

Но что если мы хотим сохранить несколько вариантов в одно поле, например, у нас на странице есть опция под названием “Выберите ваш любимый цвет”, и есть флажки с разными цветами, и пользователь должен выбрать несколько цветов (а не один цвет), тогда как мы будем сохранять это в опциях WordPress и как это вывести?

Просто установите атрибут name в вашем теге флажка в формате: favourite_colors[]. Следующий код получен из этой темы.

add_settings_field(  
    'favourite-colors',  
    'Выберите ваш любимый цвет',  
    'favourite_colors_checkbox_callback',  
    'my-settings'
);

function favourite_colors_checkbox_callback() {

    $options = get_option( 'favourite_colors' );

    $html="<input type="checkbox" id="red" name="favourite_colors[red]" value="1"" . checked( 1, $options['red'], false ) . '/>';
    $html .= '<label for="red">Красный</label><br />';
    $html="<input type="checkbox" id="yellow" name="favourite_colors[yellow]" value="1"" . checked( 1, $options['yellow'], false ) . '/>';
    $html .= '<label for="yellow">Желтый</label>';

    echo $html;

}

.

Ответ или решение

Чтобы зарегистрировать или добавить несколько параметров в одно поле в WordPress, вы можете воспользоваться API параметров. В частности, в вашем случае, когда необходимо сохранить множественный выбор, например, «Выберите свои любимые цвета» с помощью чекбоксов, это можно реализовать через add_settings_field() и настраиваемую функцию обратного вызова. Рассмотрим подробный процесс.

Шаг 1. Регистрация настройки

Сначала необходимо зарегистрировать новую настройку в вашей файловой системе. Это можно сделать с помощью функции register_setting(), добавив при этом возможность сохранения массивов значений:

function my_register_settings() {
    register_setting('my-settings-group', 'favourite_colors');
}
add_action('admin_init', 'my_register_settings');

Шаг 2. Добавление поля с чекбоксами

Добавьте опцию выбора цветов с использованием нескольких чекбоксов. Это делается через add_settings_field():

function my_settings_page() {
    add_settings_section('my-settings', 'Настройки', null, 'my-settings');

    add_settings_field(  
        'favourite-colors',  
        'Выберите свои любимые цвета',  
        'favourite_colors_checkbox_callback',  
        'my-settings'
    );
}
add_action('admin_menu', 'my_settings_page');

Шаг 3. Разработка функции обратного вызова

Теперь создадим функцию, которая будет выводить чекбоксы и управлять их состоянием. Используйте квадратные скобки в атрибуте name для сохранения массива значений:

function favourite_colors_checkbox_callback() {
    // Получаем текущее значение настроек
    $options = get_option('favourite_colors', []);

    $colors = ['red' => 'Красный', 'yellow' => 'Желтый', 'blue' => 'Синий'];

    foreach ($colors as $color => $label) {
        $checked = (isset($options[$color]) && $options[$color] == 1) ? 'checked' : '';
        echo '<input type="checkbox" id="' . $color . '" name="favourite_colors[' . $color . ']" value="1" ' . $checked . ' />';
        echo '<label for="' . $color . '">' . $label . '</label><br />';
    }
}

Шаг 4. Сохранение настроек

Теперь, когда пользователь сделает выбор, необходимо убедиться, что эти данные будут правильно сохранены. Когда форма отправляется, массив значений будет корректно обработан и сохранён благодаря использованию register_setting().

Шаг 5. Вывод выбранных значений

Для итогового вывода, например на сайте или в административной панели, вы можете использовать следующую функцию:

$options = get_option('favourite_colors', []);
if (!empty($options)) {
    foreach ($options as $color => $value) {
        if ($value == 1) {
            // Здесь вы можете выводить выбранные цвета
            echo 'Выбранный цвет: ' . ucfirst($color) . '<br />';
        }
    }
}

Заключение

Таким образом, благодаря использованию массива для чекбоксов в WordPress, вы можете гибко управлять множественными значениями в одном поле. Данный подход не только удобен, но и эффективен, что позволяет пользователям легко делать выбор среди множества параметров. С применением вышеизложенных шагов вы сможете значительно улучшить пользовательский интерфейс и взаимодействие с вашими настройками в WordPress.

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

Оцените материал
Добавить комментарий

Капча загружается...