Превью в кастомайзере не обновляет значение get_option() корректно

1 февр. 2014 г., 17:22:09
Просмотры: 768
Голосов: 3

У меня есть настройка в index.php

if(get_option('cb2_blog_home')){
    cb_get_blog_links();
}

Этот код позволяет включать и выключать блог на главной странице. Функция cb_get_blog_links() выводит список кратких описаний постов блога.

В кастомайзере у меня есть чекбокс для установки значения cb2_blog_home. Однако он не работает. Создается впечатление, что опция всегда имеет значение true.

Есть идеи, почему так происходит?

Внутри этой функции есть несколько переменных, которые я также настраиваю через кастомайзер. Они все работают идеально.

Вот полный код кастомайзера. Все работает прекрасно, кроме настройки домашнего блога. Единственное, что приходит в голову - это то, что одна является функцией, а другие - переменными внутри функции.

function cb_customize_register($wp_customize){

        $wp_customize->add_section('cb_customizer_blog', array(
                'title'    => __('Настройки блога темы', 'Theme'),
                'priority' => 120,
        ));

                //Показать/скрыть ссылки на блог на главной
                $wp_customize->add_setting('cb2_blog_home', array(
                        'default'        => '',
                        'capability'     => 'edit_theme_options',
                        'type'           => 'option',
                ));

                $wp_customize->add_control('cb2_blog_home', array(
                        'label'      => __('Включить блог на главной', 'Theme'),
                        'section'    => 'cb_customizer_blog',
                        'settings'   => 'cb2_blog_home',
                        'type'   => 'checkbox',
                        'priority' => 125,
                ));

                //Количество постов на главной
                $wp_customize->add_setting('cb2_blog_home_count', array(
                        'default'        => '3',
                        'capability'     => 'edit_theme_options',
                        'type'           => 'option',
                ));

                $wp_customize->add_control('cb2_blog_home_count', array(
                        'label'      => __('Количество постов на главной', 'Theme'),
                        'section'    => 'cb_customizer_blog',
                        'settings'   => 'cb2_blog_home_count',
                        'priority' => 130,
                ));


                //Показать/скрыть заголовок блога на главной
                $wp_customize->add_setting('cb2_blog_home_title_hide', array(
                        'default'        => '',
                        'capability'     => 'edit_theme_options',
                        'type'           => 'option',
                ));

                $wp_customize->add_control('cb2_blog_home_title_hide', array(
                        'label'      => __('Скрыть заголовок блога', 'Theme'),
                        'section'    => 'cb_customizer_blog',
                        'settings'   => 'cb2_blog_home_title_hide',
                        'type'   => 'checkbox',
                        'priority' => 135,
                ));

                //Показать/скрыть автора в блоге
                $wp_customize->add_setting('cb2_blog_index_author', array(
                        'default'        => '',
                        'capability'     => 'edit_theme_options',
                        'type'           => 'option',
                ));

                $wp_customize->add_control('cb2_blog_index_author', array(
                        'label'      => __('Скрыть автора в блоге', 'Theme'),
                        'section'    => 'cb_customizer_blog',
                        'settings'   => 'cb2_blog_index_author',
                        'type'   => 'checkbox',
                        'priority' => 140,
                ));

            //Показать/скрыть дату в блоге
            $wp_customize->add_setting('cb2_blog_index_date', array(
                        'default'        => '',
                        'capability'     => 'edit_theme_options',
                        'type'           => 'option',
                ));

                $wp_customize->add_control('cb2_blog_index_date', array(
                        'label'      => __('Скрыть дату в блоге', 'Theme'),
                        'section'    => 'cb_customizer_blog',
                        'settings'   => 'cb2_blog_index_date',
                        'type'   => 'checkbox',
                        'priority' => 145,
                ));

}

add_action('customize_register', 'cb_customize_register');
5
Комментарии

Когда я тестировал ваш код, параметр cb2_blog_home устанавливался как ожидалось: 1, если отмечен. пусто, если не отмечен.

Rachel Baker Rachel Baker
1 февр. 2014 г. 20:27:42

Rachel, не могли бы вы рассказать, как вы проверяете значения ключей в записи?

Scott B Scott B
2 февр. 2014 г. 03:13:34

scott-b, я проверял значения в базе данных. Если я вставлю: $temp = get_option('cb2_blog_home'); echo var_dump( $temp ); в header.php темы, я вижу ожидаемые значения $temp = false|true.

Rachel Baker Rachel Baker
2 февр. 2014 г. 04:57:05

Эта проблема не даёт мне покоя. Значения в базе данных правильные, но customizer.php и результаты на фронтенде не всегда совпадают.

s_ha_dum s_ha_dum
2 февр. 2014 г. 17:38:28

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

kaiser kaiser
18 февр. 2014 г. 01:20:24
Все ответы на вопрос 1
0

Вы используете тип option для хранения ваших настроек.

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

@see https://wordpress.stackexchange.com/a/247164/52167

3 февр. 2017 г. 20:20:55