Как использовать чекбокс на странице настроек с помощью Settings API
Не могли бы вы подсказать, как добавить чекбокс через 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']}'/>";
}
Спасибо

Ознакомьтесь с: Полное руководство по 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
выше была отредактирована с использованием кода из дальнейшей части упомянутой выше статьи. Подробности смотрите в статьях.

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

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