Вопрос: WP_Customize_Color_Control без символа #

Я занимаюсь разработкой темы и борюсь с WP_Customize_Color_Control .

Иногда он включает символ # перед гекс цвета, а иногда нет. Я трижды проверил свой код и не могу понять, почему header_textcolor является единственным цветом, который пропускает символ # перед шестнадцатеричным значением в итоговой таблице стилей (что не позволяет его использовать).

Выдержка из functions.php:

$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_backgroundcolor', array(  'label'      => __( 'Header Background Color' ),  'section'    => 'colors',  'settings'   => 'header_backgroundcolor',) ) );$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_brandtextcolor', array(  'label'      => __( 'Header Brand Text Color' ),  'section'    => 'colors',  'settings'   => 'header_brandtextcolor',) ) );$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_brandhovertextcolor', array(  'label'      => __( 'Header Brand Hover Text Color' ),  'section'    => 'colors',  'settings'   => 'header_brandhovertextcolor',) ) );$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_textcolor', array(  'label'      => __( 'Header Text Color' ),  'section'    => 'colors',  'settings'   => 'header_textcolor',) ) );$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_hovertextcolor', array(  'label'      => __( 'Header Hover Text Color' ),  'section'    => 'colors',  'settings'   => 'header_hovertextcolor',) ) );$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'header_activetextcolor', array(  'label'      => __( 'Header Active Text Color' ),  'section'    => 'colors',  'settings'   => 'header_activetextcolor',) ) );$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'backgroundcolor', array(  'label'      => __( 'Background Color' ),  'section'    => 'colors',  'settings'   => 'backgroundcolor',) ) );$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'footer_backgroundcolor', array(  'label'      => __( 'Footer Background Color' ),  'section'    => 'colors',  'settings'   => 'footer_backgroundcolor',) ) );

Выдержка из динамического CSS:

body {  background-color: <?= get_theme_mod( 'backgroundcolor', '#dddddd' ); ?>;}.navbar-default {  background-color: <?= get_theme_mod( 'header_backgroundcolor', '#f8f8f8' ); ?>;}.navbar-default .navbar-brand {  color: <?= get_theme_mod( 'header_brandtextcolor', '#777777' ); ?>;}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus {  color: <?= get_theme_mod( 'header_brandhovertextcolor', '#5e5e5e' ); ?>;}.navbar-default .navbar-nav > .active > a,.navbar-default .navbar-nav > .active > a:hover,.navbar-default .navbar-nav > .active > a:focus {  color: <?= get_theme_mod( 'header_activetextcolor', '#555555' ); ?>;}.navbar-default .navbar-nav > li > a {  color: <?= get_theme_mod( 'header_textcolor', '#777777' ); ?>;}.navbar-default .navbar-nav > li > a:hover,.navbar-default .navbar-nav > li > a:focus {  color: <?= get_theme_mod( 'header_hovertextcolor', '#333333' ); ?>;}

Поскольку два символа ## или символы # не позволяют установить значение, мой текущий обходной путь:

.navbar-default .navbar-nav > li > a {  color: <?= get_theme_mod( 'header_textcolor', '#777777' ); ?>;}.navbar-default .navbar-nav > li > a {  color: #<?= get_theme_mod( 'header_textcolor', '#777777' ); ?>;}

однако здесь должно быть что-то не так. Другие настройки цвета работают нормально.

EDIT:

изменение header_textcolor на любое другое имя («foobar» и «navbar_textcolor» в моем тестировании) также решил эту проблему.

Я думаю, что "header_textcolor" является зарезервированным значением или я как-то испортил мою установку Wordpress.

Ответы и комментарии:

Еще раз спасибо за то, что познакомили меня с функцией очистки (не могу поверить, что я пропустил это). В настоящее время я использую стиль html, но если бы я мог строить из Less, SaSS или порта Stylus Bootstrap динамически, это было бы здорово.
Создан 22-04-2017 06:06 Metalshark

В настоящее время я не могу записать все это для вас, но вы всегда можете использовать дезинфицирующее средство (Wordpress имеет одну сборку), чтобы добавить #, если его нет.
Также, насколько я знаю, вам всегда нужно создавать настройки и элементы управления. Как под здесь:
$ wp_customize-> add_setting ('Some_color', массив (
    'default' => '#fffff',
    'sanitize_callback' => 'sanitize_hex_color',
));
    $ Wp_customize-> add_control (
    новый WP_Customize_Color_Control (
        $ Wp_customize,
        'Some_color',
        массив (
            'label' => __ ('Some_color', 'DesignitMultistore'),
            'section' => 'Some Section',
            'priority' => 1,
        )
    ));

Код из sanitize_hex_color:
Кодовая ссылка WordPress
Итак, один пример из вас преобразован:
$ wp_customize-> add_setting ('header_backgroundcolor', массив (
'default' => '# f8f8f8',
        'sanitize_callback' => 'sanitize_hex_color',
));

$ wp_customize-> add_control (новый WP_Customize_Color_Control ($ wp_customize, 'header_backgroundcolor', массив (
      'label' => __ ('Цвет фона заголовка'),
      'section' => 'colors',
      'settings' => 'header_backgroundcolor',
    )));

Также вы работаете с Less или Sass или у вас есть стиль HTML?
Создан 21-04-2017 08:54