最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

theme development - Default customizer colors aren't displayed outside of the preview

programmeradmin1浏览0评论

I've been working on a custom theme & going through the usual rollercoaster that accompanies this particular exercise. I do find it very rewarding but what I'm looking at right now is the theme's failure upon installation to enforce default colors defined. The way I have it set up is I require the inc/customizer.php file in functions, then here's an example of the controls that work but aren't loaded by default, they have to be adjusted first:

    $wp_customize->add_setting('link_colors', array(
        'default' => '#e66998',
        'sanitize_callback' => 'esc_attr',
    ));

    $wp_customize->add_control( 
    new WP_Customize_Color_Control( 
        $wp_customize, 
        'link_colors', 
        array(
        'label' => 'Body Link Colors',
        'description' => 'This will change the color of links on your pages but not the navigation menu.',
        'section' => 'background_image',
        'settings' => 'link_colors',
        'priority' => 4
    ) 
    ));

Yes, it's in the control section I intended. And here's an example of how I'm using that little bit, including customizer_style.php in the header file:

<style type="text/css">
#container a,
.widget-container a {
    color: <?php echo get_theme_mod('link_colors') ;?>;
    }
</style>

Although it displays correctly in the customizer preview, it displays the browser's default blue text on the front end on initial theme installation. Modifying the colors works & if you revert to the default in the customizer it displays as expected, just not from the beginning. What am I missing?

I've been working on a custom theme & going through the usual rollercoaster that accompanies this particular exercise. I do find it very rewarding but what I'm looking at right now is the theme's failure upon installation to enforce default colors defined. The way I have it set up is I require the inc/customizer.php file in functions, then here's an example of the controls that work but aren't loaded by default, they have to be adjusted first:

    $wp_customize->add_setting('link_colors', array(
        'default' => '#e66998',
        'sanitize_callback' => 'esc_attr',
    ));

    $wp_customize->add_control( 
    new WP_Customize_Color_Control( 
        $wp_customize, 
        'link_colors', 
        array(
        'label' => 'Body Link Colors',
        'description' => 'This will change the color of links on your pages but not the navigation menu.',
        'section' => 'background_image',
        'settings' => 'link_colors',
        'priority' => 4
    ) 
    ));

Yes, it's in the control section I intended. And here's an example of how I'm using that little bit, including customizer_style.php in the header file:

<style type="text/css">
#container a,
.widget-container a {
    color: <?php echo get_theme_mod('link_colors') ;?>;
    }
</style>

Although it displays correctly in the customizer preview, it displays the browser's default blue text on the front end on initial theme installation. Modifying the colors works & if you revert to the default in the customizer it displays as expected, just not from the beginning. What am I missing?

Share Improve this question edited May 17, 2020 at 19:10 Jeff W asked May 14, 2020 at 21:48 Jeff WJeff W 1181 silver badge10 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

I ended up using default stylesheet rules, which I had removed along the way, and then essentially what happens is when the user modifies the colors using the customizer it overrides the stylesheet rules.

I feel like it's a bit sloppy doing it this way but it does achieve the desired result. From what I can see, though, there's no other alternative for the default rules to be enabled because as I understand it the theme customizer writes the user's values to the DB & that doesn't occur until individual settings are modified.

发布评论

评论列表(0)

  1. 暂无评论