好的,我正在研究一个主题,它大量使用了定制器。
例如,当您更改颜色时,必要的css将添加到标题中,但当您单击“默认”时,具有默认值的css将保留在标题中。
所以我去寻找解决方案,发现一直有一个在我鼻子底下。我在自定义标题中找到了要查找的内容。我的主题的php文件。我用了212来做这个主题,如果你能看一下的话。我采用了“TwentyEleven\\u header\\u样式”,并将其更改为:
function wpforge_customize_css() {
$header_container = esc_attr(get_theme_mod( \'header_container_background_color\' ));
if ( $header_container == get_theme_mod( \'header_container_background_color\', \'#e6e6e6\' ) )
return;
?>
<!--Customizer CSS-->
<style type="text/css" id="wpforge-customizer-css">
.header_container{background-color:<?php echo $header_container; ?>;}
</style>
<!--/Customizer CSS-->
当它真正起作用时,我很惊讶。标题中没有显示自定义css,但当我在自定义程序中选择背景颜色时,标题中显示了正确的css样式。现在,当我将th值设置回默认值时,css从标题中消失了。我觉得自己很棒!!!
因此,我尝试向同一个函数添加另一个值,这就是我得到的结果:
function wpforge_customize_css() {
$header_container = esc_attr(get_theme_mod( \'header_container_background_color\' ));
if ( $header_container == get_theme_mod( \'header_container_background_color\', \'#e6e6e6\' ) )
return;
$header_wrap_width = esc_attr(get_theme_mod( \'header_width\' ));
if ( $header_wrap_width == get_theme_mod( \'header_width\', \'64rem\' ) )
return;
?>
<!--Customizer CSS-->
<style type="text/css" id="wpforge-customizer-css">
.header_container{background-color:<?php echo $header_container; ?>;}
.header_wrap{max-width:<?php echo $header_wrap_width; ?>;}
</style>
<!--/Customizer CSS-->
我想它工作得很好。因此,我尝试向其中添加另一个元素,发现在为其他元素之一选择某个元素之前,不会显示任何内容,这意味着我必须为标题容器选择某个元素,以便标题包装工作或显示。
我不是php专家,也无法编写一点代码来挽救我的生命,但我确实有点了解它,足以让我修补它。
所以我想知道是否有人可以告诉我如何正确地编写这个函数,这样我就可以向它添加多个项,它就会工作。我可以把这个带到哪里:
function wpforge_customize_css() {
$header_container = esc_attr(get_theme_mod( \'header_container_background_color\' ));
if ( $header_container == get_theme_mod( \'header_container_background_color\', \'#e6e6e6\' ) )
return;
?>
<!--Customizer CSS-->
<style type="text/css" id="wpforge-customizer-css">
.header_container{background-color:<?php echo $header_container; ?>;}
</style>
<!--/Customizer CSS-->
这样做:
function wpforge_customize_css() {
$header_container = esc_attr(get_theme_mod( \'header_container_background_color\' ));
if ( $header_container == get_theme_mod( \'header_container_background_color\', \'#e6e6e6\' ) )
return;
$header_wrap_width = esc_attr(get_theme_mod( \'header_width\' ));
if ( $header_wrap_width == get_theme_mod( \'header_width\', \'64rem\' ) )
return;
?>
<!--Customizer CSS-->
<style type="text/css" id="wpforge-customizer-css">
.header_container{background-color:<?php echo $header_container; ?>;}
.header_wrap{max-width:<?php echo $header_wrap_width; ?>;}
</style>
<!--/Customizer CSS-->
而且它不需要为header\\u容器选择一个值,这样header\\u包装器就会出现
非常感谢您的帮助,并提前向您表示感谢。
最合适的回答,由SO网友:cybmeta 整理而成
您的问题是,如果某些选项不符合您的标准,您将不返回任何内容。例如,您正在执行以下操作:
if ( $header_container == get_theme_mod( \'header_container_background_color\', \'#e6e6e6\' ) )
return;
所以,如果
$header_container
等于
#e6e6e6
, 功能
return
并停止进一步执行。你必须改变这种逻辑。例如(只是一个简单的例子):
function wpforge_customize_css() {
$output = \'\';
$header_container = esc_attr(get_theme_mod( \'header_container_background_color\' ));
if ( $header_container != get_theme_mod( \'header_container_background_color\', \'#e6e6e6\' ) ) {
$output = \'.header_container{background-color: \'.$header_container.\'}\';
}
$header_wrap_width = esc_attr(get_theme_mod( \'header_width\' ));
if ( $header_wrap_width != get_theme_mod( \'header_width\', \'64rem\' ) ) {
$output = \'.header_wrap{background-color: \'.$header_wrap_width.\'}\';
}
if( !empty($output) ) {
?>
<!--Customizer CSS-->
<style type="text/css" id="wpforge-customizer-css">
<?php echo $output; ?>
</style>
<!--/Customizer CSS-->
<?php
}
}
?>