Установите флажок, установленный по умолчанию на странице параметров
Я создаю страницу настроек темы, поэтому, когда я начинаю кодировать параметры флажка, она отлично работает, если значение по умолчанию равно unchecked
. Вот код:
function classy_show_resume_section_callback () {
$options = get_option( 'classy_general_settings' );
$html = "<label class='switch'>";
if ( empty( $options['classy_show_resume'] ) ) $options['classy_show_resume'] = 0;
$html .= "<input type='checkbox' name='classy_general_settings[classy_show_resume]' value='1' " . checked($options['classy_show_resume'], 1, false) . " >";
$html .= "<div class='slider round'></div>";
$html .= "</label>";
echo $html;
}
Однако, поскольку я хочу, чтобы флажок был установлен как checked
по умолчанию, мне пришлось изменить условие if
предыдущего кода. Если он пуст, сделайте $options
var равным 1
. Таким образом, код будет следующим:
function classy_show_resume_section_callback () {
$options = get_option( 'classy_general_settings' );
$html = "<label class='switch'>";
if ( empty( $options['classy_show_resume'] ) ) $options['classy_show_resume'] = 1;
$html .= "<input type='checkbox' name='classy_general_settings[classy_show_resume]' value='1' " . checked($options['classy_show_resume'], 1, false) . " >";
$html .= "<div class='slider round'></div>";
$html .= "</label>";
echo $html;
}
Так что это сработало. Флажок по умолчанию получает значение checked
, но когда я unchecked
и нажал Сохранить, возникла проблема произошло в базе данных. Это сработало нормально, и значение было удалено, но в интерфейсе, поскольку значение условия if теперь пустое, оно все время отображается на экране как checked
, хотя на самом деле его нет в БД (конфликт).
Итак, как мне исправить этот конфликт?
1 answers
Опция-1: Измените опцию с show
на hide
:
Самым простым способом было бы изменить имя и поведение option
. Поэтому вместо $options['classy_show_resume']
вы можете реализовать его как $options['classy_hide_resume']
.
Таким образом, по умолчанию hide option
не проверено , это означает, что вы показываете его по умолчанию. Затем спрячьте его, когда это hide option
будет проверено.
Таким образом, просто изменив имя параметра, а затем реализовав hide option
(вместо show option
) в своей теме, вы можете исправить это легко.
Таким образом, ваш КОД будет выглядеть следующим образом:
function classy_hide_resume_section_callback () {
$options = get_option( 'classy_general_settings' );
$html = "<label class='switch'>";
if ( empty( $options['classy_hide_resume'] ) ) $options['classy_hide_resume'] = 0;
$html .= "<input type='checkbox' name='classy_general_settings[classy_hide_resume]' value='1' " . checked($options['classy_hide_resume'], 1, false) . " >";
$html .= "<div class='slider round'></div>";
$html .= "</label>";
echo $html;
}
Опция-2: Сделать classy_show_resume
отмеченным по умолчанию:
Если вы должны использовать classy_show_resume
с установленным по умолчанию значением, то вы можете использовать следующую логику:
По умолчанию get_option( 'classy_general_settings' )
должен возвращать false
, и когда он будет сохранен как unchecked
, это будет либо пустая строка, либо массив с $options['classy_show_resume']
не заданным. Поэтому мы будем использовать это для определения значения по умолчанию по сравнению с сохраненным значением checked
или unchecked
.
В соответствии с этим, ваш новый КОД будет выглядеть так:
function classy_hide_resume_section_callback () {
$options = get_option( 'classy_general_settings' );
$classy_show_resume = 0;
if ( $options === false ) {
// nothing is set, so apply the default here
$classy_show_resume = 1;
}
else if( is_array( $options ) && isset( $options['classy_show_resume'] ) ) {
// classy_show_resume is checked
$classy_show_resume = $options['classy_show_resume'];
}
$html = "<label class='switch'>";
$html .= "<input type='checkbox' name='classy_general_settings[classy_show_resume]' value='1' " . checked( $classy_show_resume, 1, false ) . " >";
$html .= "<div class='slider round'></div>";
$html .= "</label>";
echo $html;
}
Теперь он должен быть установлен по умолчанию и показывать правильный checked
| unchecked
статус после сохранения.