定制器:css更改不是持久的

时间:2015-08-11 作者:user134865

Customizer API正在正确保存HTML/数据更改,但任何CSS更改仅在Customizer中可见。点击“保存和发布”后,页面与以前完全一样,没有新内容<style> 中的标记<head>. 这是我在函数中声明自定义程序控件和设置的方式。php(请注意,这不是完整的代码)。

$wp_customize->add_setting(\'design-header-background-color\', array(
    \'default\' => \'#ffffff\',
));
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, \'design-header-background-color\', array(
    \'label\' => __( \'Background color\' ),
    \'section\' => \'design-header\',
    \'priority\' => 10
)));
function design_header_background_color()
{
    ?>
         <style type="text/css">
             header { background-color: <?php echo get_theme_mod(\'design-header-background-color\'); ?>; }
         </style>
    <?php
}
add_action( \'wp_head\', \'design_header_background_color\');
当我使用定制器中的控件时,我可以看到内容正确地更改。但在使用“保存和发布”后,什么都没有发生。正如我所说的,HTML/PHP操作工作得很好。

1 个回复
SO网友:user134865

好啊尽管我无法用CSS和wp\\u head()解决这个问题,但我还是设法破解了一些有用的东西。

<?php
    $sidebar_background_color = get_theme_mod(\'design-sidebar-background-color\');
?>

<aside style="background-color: <?php $sidebar_background_color; ?>;">
    <?php if ( !function_exists(\'dynamic_sidebar\') || !dynamic_sidebar() ) : ?>
    <?php endif; ?>
</aside>
因为我可以很好地操作DOM和HTML,所以我决定将CSS“手动”更改为内联样式。虽然这种方法感觉很简单,但它仍然有效。

v2带<style></style>

<?php
    $header_background_color = get_theme_mod(\'design-header-background-color\');
    $header_background_image = get_theme_mod(\'design-header-background-image\');

?>

<style> /* FOR CUSTOMIZER API ONLY, DON\'T CUSTOMIZE CSS HERE */
    <?php if (get_theme_mod(\'design-header-css\') === \'\') : ?>
        header .page-header {
            background-color: <?php echo $header_background_color; ?>;
            background-image: url(\'<?php echo $header_background_image; ?>\');
        }
    <?php else : ?>
        <?php echo get_theme_mod(\'design-header-css\'); ?>
    <?php endif; ?>
</style>

<!--- HTML GOES HERE -->

结束