Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中输出自定义CSS设置_Php_Css_Wordpress - Fatal编程技术网

在PHP中输出自定义CSS设置

在PHP中输出自定义CSS设置,php,css,wordpress,Php,Css,Wordpress,我正试图用我的主题定制器中的自定义设置在我的页面头部输出一些CSS。下面的代码在有值时效果很好,但问题是当没有值时,它仍然输出其他所有内容。我只希望它出现在有自定义设置的情况下 <style> body {background-color: <?php echo $background_color; ?>;} </style> 正文{背景色:;} 我认为它需要某种条件语句?如果需要,可以在声明周围包装条件语句。。。例如: <style>

我正试图用我的主题定制器中的自定义设置在我的页面头部输出一些CSS。下面的代码在有值时效果很好,但问题是当没有值时,它仍然输出其他所有内容。我只希望它出现在有自定义设置的情况下

<style>
    body {background-color: <?php echo $background_color; ?>;}
</style>

正文{背景色:;}

我认为它需要某种条件语句?

如果需要,可以在声明周围包装条件语句。。。例如:

<style>
    body {
      <?php if(!empty($background_color)) : ?>
      background-color: <?php echo $background_color; ?>;
      <?php endif; ?>
    }
</style>

在本例中,背景色将默认为
#fff
。此方法称为。

您可以执行以下操作:

<style>
    body {
    <?php echo (!empty($background_color)) ? "background-color: " . $background_color.";" : ""; 
    ?>
    }
</style>

身体{
}

只有在有背景色可用的情况下,才需要将某些内容渲染到浏览器中

这种方法仅在有背景色的情况下渲染内联脚本。这种技术避免了DOM中的空CSS声明

<?php if ( $background_color ) : ?>
<script>
    body {
        background-color: <?php esc_html_e( $background_color ); ?>;
    }
</script>   
<?php endif; ?>

我想这更像我正在寻找的,但是现在我需要一个默认的背景颜色,在有一个输入之前

<?php self::generate_css( 'body', 'background-color', 'background_color' ); ?>

我最后使用了
get\u theme\u mod
,它允许默认设置。因为总是会有至少一个默认设置,所以条件语句不需要省略
样式
正文
背景图像
,等等

<style type="text/css">
    body { background-image: url("<?php echo get_theme_mod( 'background_image' , get_template_directory_uri() . '/images/default.jpg' ); ?>"); }
</style> 

正文{背景图像:url(“”;}

为什么不回显?如果没有要渲染的背景色,您希望将条件移到所有颜色之上并退出。如果没有做任何事情,为什么要回显一个空的内联和主体声明块呢?这可以做到,但我会有很多自定义设置,最后会有很多if语句。我想知道是否只有在有值的情况下才有一种更短的方式输出每一行css?@hellofromTonya True-尽管可能还有4-5种其他解决方案可以应用-但我觉得最好是为这个特定问题提供最准确的答案,或者至少帮助激发想法,以便OP能够制定一个想法。一个像OOP解决方案。@ ToyTyMulman,如果是这样的话,你可能想考虑创建一个<代码>集合类类…一些比这更具活力的东西。@半疯狂的是的,总是有多种方法来解决完全相同的问题。我的意思是向上移动条件并包装脚本标记,以避免出现空的CSS声明块,当没有背景色时,它不会做任何事情。除此之外,一切都很好。非常彻底的@hellofromTonya,但尝试使其尽可能紧凑,因为我将使用许多自定义设置:)因此,如果您有更多的样式可以在同一文件中渲染,那么我建议使用@HalfCrazed的解决方案。您可以重复该模式以仅加载所需内容。
<?php self::generate_css( 'body', 'background-color', 'background_color' ); ?>
<style type="text/css">
    body { background-image: url("<?php echo get_theme_mod( 'background_image' , get_template_directory_uri() . '/images/default.jpg' ); ?>"); }
</style>