WordPress Customizer не устанавливает значение по умолчанию при первоначальной установке?

У меня возникли проблемы с получением значений по умолчанию, установленных в Настройщике WordPress, для сохранения в базе данных при первоначальной установке без предварительного сохранения пользователем Customizer для их установки. Я пробовал решение из этой темы без везения:

Использовать значение по умолчанию для wp_customizer в выводе theme_mod?

Customizer section/setting/control //Social Icons Section $wp_customize->add_section( 'socialsection', array( 'title' => __( 'Social Media' ), 'priority' => 4, 'capability' => 'edit_theme_options', ) ); //Settings & Controls For Social Media $wp_customize->add_setting( 'facebooklink_edit', array( 'default' => '#', 'sanitize_callback' => 'esc_attr', 'transport' => 'refresh', ) ); $wp_customize->add_control('facebooklink_edit', array( 'label' => __( 'Facebook Link', 'spiffing' ), 'section' => 'socialsection', ) ); 

Выход на Frontend:

 <a href="<?php echo get_theme_mod('facebooklink_edit', '#'); ?>"><div class="fb-footer" id="fb-footer-bg"><i class="fa fa-facebook-f"></i></div></a> 

CSS-манипуляция на основе пользовательских действий в customzier:

  ?> <style type="text/css"> <?php if( get_theme_mod( 'facebooklink_edit' ) == '' ) { ?> #fb-footer-bg { display: none; } <?php } // end if ?> </style> <?php 

Из вышесказанного вы можете видеть, что этот мод по умолчанию задает значение «#», и если он обнаруживает, что нет «#», он добавляет «display: none» к этому id. Должно быть достаточно простым. Тем не менее, похоже, что оператор if видит, что это условие выполнено, и этот случай пуст '' и применяет «display: none». но, как вы можете видеть в обоих разделах по умолчанию на интерфейсе и customzier, я установил значение по умолчанию «#». Он даже записывает его в раздел заполнителя в customzier, а не в базу данных.

Он работает, если пользователь ПОСЛЕ начальной установки переходит в настройщик и щелкает «Сохранить». Возможно, инициирование значения в базе данных, которое затем считывается и отображается на интерфейсе.

У меня есть это для работы со ссылками и т. Д., Но этот мод отличается в том смысле, что он управляет div, добавляя «display: none».

Любые идеи оценили.

Solutions Collecting From Web of "WordPress Customizer не устанавливает значение по умолчанию при первоначальной установке?"

Мне удалось это исправить, изменив оператор на оператор «if»:

Оригинал:

 ?> <style type="text/css"> <?php if( get_theme_mod( 'facebooklink_edit' ) == '' ) { ?> #fb-footer-bg { display: none; } <?php } // end if ?> </style> <?php 

Обновлено:

 ?> <style type="text/css"> <?php if( get_theme_mod( 'facebooklink_edit' ) === #fb-footer-bg { display: none; } <?php } // end if ?> </style> <?php 

Изменение «равно» на «идентично», похоже, исправляет это.

Я думаю, вы должны использовать что-то вроде set_theme_mod . Это сохранит значение в базе данных.

 set_theme_mod('facebooklink_edit','aaabbbccc'); 

Чтобы сохранить настройку темы только для вашей темы, используйте 'type' => 'theme_mod' .

 $wp_customize->add_setting( 'facebooklink_edit' , array( 'type' => 'theme_mod', // only for this theme 'transport' => 'refresh', 'default' => 'aaabbbccc' //'sanitize_callback' => 'someething...', ) ); 

Метод save() существует внутри class-wp-customize-manager() но, похоже, он не предназначен для использования только с JavaScript.

Настройки темы, в общем, могут быть либо 'theme_mod' либо 'option' .

Мое предложение для вас состояло в том, чтобы использовать theme_mod в этом случае.

if(!get_theme_mod('facebooklink_edit')) { set_theme_mod('facebooklink_edit','aaabbbccc'); }

Я бы использовал это, чтобы установить значение, только если оно не существует.

а не просто.

set_theme_mod('facebooklink_edit','aaabbbccc');