Это неожиданное поведение в предварительном просмотре настройщика при использовании 'default' => true
с checkbox
.
Вариант использования
Я добавляю элемент управления флажок внастройщик (для любой страницы это не имеет значения):
$wp_customize->add_setting( 'my-checkbox', array(
'type' => 'option',
'capability' => 'manage_options',
'transport' => 'refresh',
'default' => true ///HERE I SET THE DEFAULT "TRUE"
) );
$wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'my-checkbox',
array(
'label' => __( 'A checkbox checked by default' ),
'section' => 'any-page',
'type' => 'checkbox'
) ) );
Я использую его где-нибудь так:
get_option( 'my-checkbox', true ); //since its TRUE by default, here as well its TRUE
пока все в порядке, если я открою настройщик, я вижу это, используяvar_dump()
, в данном случае используя его на домашней странице:
![enter image description here](https://i.stack.imgur.com/Zjv8a.png)
в homepage
без открытия настройщика я получу TRUE
вот и все в порядке.
Но теперь, если я сниму флажок в настройщике, я получу это:
![enter image description here](https://i.stack.imgur.com/TchM7.png)
, что по умолчаниюиз get_option( 'my-checkbox', true )
эта проблема в customizer-preview
, homepage
будет иметь правильное значение при прямом посещении.
, если я хочу, чтобы значение было FALSE
(не отмечено), мне нужно сохранить2 раза, при первом сохранении опции, чтобы не было значения default
, и второй раз при сохранении значения FALSE
(не проверено).
Это ошибка в wordpress
?debugging
это больше, я обнаружил, что получаю 'default' => true
, в get_option( 'my-checkbox', true );
, который я задаю при создании элемента управления, при использовании настройщика.
Здесь я меняюсьэто другой тип по умолчанию, поэтому его более понятно:
get_option( 'my-checkbox', 'default' );
в homepage
, я получаю правильное значение:
![enter image description here](https://i.stack.imgur.com/CqQPI.png)
в customizer
я получаю TRUE
:
![enter image description here](https://i.stack.imgur.com/fmHTS.png)
, что неверно, поскольку в homepage
, открывающем его напрямуюя получаю default
что можно сделать?я не хочу тянуть глобальную переменную, чтобы просто проверить, не нахожусь ли я в настройщике.