Опция настройщика не возвращает значение по умолчанию на экране настройщика - PullRequest
0 голосов
/ 24 апреля 2019

Это неожиданное поведение в предварительном просмотре настройщика при использовании '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

в homepage без открытия настройщика я получу TRUE вот и все в порядке.

Но теперь, если я сниму флажок в настройщике, я получу это:

enter image description here

, что по умолчаниюиз 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

в customizer я получаю TRUE:

enter image description here

, что неверно, поскольку в homepage, открывающем его напрямуюя получаю default

что можно сделать?я не хочу тянуть глобальную переменную, чтобы просто проверить, не нахожусь ли я в настройщике.

1 Ответ

0 голосов
/ 24 апреля 2019

Сначала, когда вы создаете код и устанавливаете значение по умолчанию, затем это значение не устанавливается для базы данных, поэтому нам нужно использовать функцию get_theme_mod .Эта функция нуждается в аргументах, таких как первое имя и второе, по умолчанию, что вы хотите показать.Затем, если значение сохранено в базе данных, функция возвращает значение базы данных, в противном случае она покажет значение по умолчанию, которое вы добавили во вторых аргументах.Я надеюсь, что это поможет вам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...