Как использовать чекбокс на странице настроек с помощью Settings API

18 авг. 2013 г., 00:06:20
Просмотры: 29.1K
Голосов: 11

Не могли бы вы подсказать, как добавить чекбокс через Settings API при создании пользовательской страницы настроек? Я использую следующий код для добавления текстового поля, который работает отлично, но я совершенно запутался, как добавить чекбокс в Settings API и опции. Я пробовал изменить тип input на checkbox, но я не уверен, что указывать в значении Value, кроме того, при сохранении формы чекбокс все равно остается неотмеченным!

add_settings_field('the_option_label',
                    'Отображать параграф:',
                     array($this,'the_option_label_setting'),
                     __FILE__,
                     'hte_main_section');

public function the_option_label_setting()
    {
       echo "<input name='My_Theme_Options[the_option_label]' type='text' value='{$this->options['the_option_label']}'/>";
    }

Спасибо

1
Комментарии

Просто и понятно. - http://www.kvcodes.com/2016/10/creating-custom-options-page-wordpress/

Kvvaradha Kvvaradha
25 окт. 2016 г. 16:04:37
Все ответы на вопрос 1
3
11

Ознакомьтесь с: Полное руководство по WordPress Settings API (Часть 8: Валидация, санитизация и ввод данных II):

add_settings_field(  
    'Элемент чекбокса',  
    'Элемент чекбокса',  
    'sandbox_checkbox_element_callback',  
    'sandbox_theme_input_examples',  
    'input_examples_section'  
);

function sandbox_checkbox_element_callback() {

    $options = get_option( 'sandbox_theme_input_examples' );

    $html = '<input type="checkbox" id="checkbox_example" name="sandbox_theme_input_examples[checkbox_example]" value="1"' . checked( 1, $options['checkbox_example'], false ) . '/>';
    $html .= '<label for="checkbox_example">Это пример чекбокса</label>';

    echo $html;

}

РЕДАКТИРОВАНО: Поля чекбоксов не используют атрибут value для определения, установлен ли флажок. Они используют атрибут checked. Строка $html выше была отредактирована с использованием кода из дальнейшей части упомянутой выше статьи. Подробности смотрите в статьях.

18 авг. 2013 г. 02:58:14
Комментарии

Привет, Тилл! Спасибо за твой комментарий. Я попробовал твою подсказку и код из ссылки, но у меня всё ещё остаются проблемы! Проблема в том, что когда я отмечаю чекбокс и сохраняю настройки, новая страница всё ещё показывает не отмеченный чекбокс! То есть он не читает данные из Options! Можешь, пожалуйста, подсказать, как это исправить? Я знаю, что для текстового поля можно использовать value='{$this->options['the_option_label']}', но как быть с чекбоксом?

Mona Coder Mona Coder
18 авг. 2013 г. 08:41:49

Отредактировал ответ Тилла с исправленным кодом из статьи.

Charles Clarkson Charles Clarkson
18 авг. 2013 г. 09:12:59

Возможно, лучше проверить, установлена ли опция, например так: checked( 1, $options['checkbox_example'] ?? '', false ). На всякий случай, чтобы избежать ошибок или предупреждений.

JalalJaberi JalalJaberi
25 июл. 2023 г. 17:44:51