Доброго дня всем.
Рыть на эту тему ПС пытался 🙁 ничего даже близкого нет.
И так, создал страницу админки к теме, на странице есть
и поле ввода (введите название)
и "радио" (выбор или или)
и селект (выбор из списка)
и чекбоксы (поставить галочку)
Все эти элементы размещены внутри одной и той же формы, и и должны сохраняться по нажатию одной и той же кнопки в массив "option".
НО!!! Сохраняются и нормально работают ВСЕ ЭЛЕМЕНТЫ кроме чекбоксов 🙁
что я с ними не мудровал только 🙁
Вот код
case "content": ?>
<label for="<?php echo $value['id']; ?>">
<input id="<?php echo $value['id']; ?>"
name="<?php echo $value['id']; ?>"
type="checkbox"
value="1" <?php if (get_option($value['id']) == '1') {echo ('checked');} ?> />
Бла бла бла пояснения к настройке<br>
</label>
<br>
<?php break;
Изначально чекбокс НЕ ОТМЕЧЕН – ну и значение переменной соответственно = ЛОЖЬ.
Но после того, как его отмечаешь, он уже не меняет свое значение, как не крути.
То есть, переменная принимает значение "1", и никакие телодвижения с этим чекбоксом и кнопкой сохранения не работают 🙁
Сейчас выяснил еще один момент…
Форма передает значение в память, и обновляет массив!!!
Только НЕ ЗАВИСИМО от положения флажка (что отмеченный, что нет)
ВСЕГДА передает значение в переменную 🙁
Продолжая эксперименты 🙂 (прямо санта барбара)
выяснил:
Форма ОБНОВЛЯЕТ значение переменной (сохраняет новое значение)
ТОЛЬКО в том случае, когда флажок отмечен.
То есть, снятие флажка и нажатие на кнопку сохранить,
ни к каким изменениям не приводит!
ну а если флажок нажать, то форма сохраняет значение указанное в "валуе".
ПС
ну хоть дайте догадки.. нужно откопать истину 🙁
Покажите обработчик формы, ту часть, где проверяются чекбоксы.
Спасибо за отзывчивость,
но гугл таки дал направление после упорного перебора формулировок запроса 🙂
Изначально сами чекбоксы ТАК РАБОТАЮТ 🙂
Чекбокс НЕ ОБНОВЛЯЕТ переменную при нажатии на сабмит, В СЛУЧАЕ ЕСЛИ ОН НЕ ОТМЕЧЕН (флажок не установлен).
Мне ужасно стыдно, но даже имея пару лет стажа программирования 🙂
я как то не знал этой подробности…
Для того чтобы переменная обновлялась по каждому нажатию на сабмит нужно:
ПЕРЕД самим инпутом типа чекбокс
Вставить еще один инпут типа хайдн (скрытое поле)
при этом ИМЯ ЕГО поставить ТОЧНО ТАКОЕ ЖЕ как и в чекбоксе.
Таким образом, при сабмите с УСТАНОВЛЕННЫМ ФЛАЖКОМ
верхней строкой переменной NAME передается значение "0",
Но следующей же строкой ей же !! переменной NAME передается значение "1",
которое и остается в памяти.
При сабмите с НЕ УСТАНОВЛЕННЫМ ФЛАЖКОМ
верхней строкой переменной NAME передается значение "0",
нижней же строкой просто ничего никому не передается, и в следствии этого
в памяти за переменной NAME сохраняется значение "0"!
О как!
Наверное сбил меня тот факт, что я последнее время все чаще виджеты писал.
А у них как раз при написании настроек чекбоксы почему-то работают прекрасно
и без этих дополнительных полей.
Вот для меня теперь принципиальный вопрос ПОЧЕМУ 🙂 ???
Почему при написании настроек виджета, я никогда не прописывал этих
дополнительных полей и все прекрасно работало???
Очень изобретательно. Но лучше, наверно, делать по-старинке: intval($_POST[‘param_name’]) вернет 1, если чекбокс включен (и value="1") или 0, если выключен.
Дело в том, что когда пишешь АДМИНКУ для дизайна, то как бы обработчиком является сам ВордПресс (ну файлы самой админки Вордпресса) – и лезть в него не особо хочется, если честно. Да и нет смысла, ибо при таком решении вопроса, дизайн будет работать ИСКЛЮЧИТЕЛЬНО на сайте с этим "подправленным" Вордпрессом.
А нам же нужны динамические возможности 🙂
Даже при обновлении движка!
А разве я предлагал что-то менять в движке? Я говорил о своем обработчике формы.