在WordPress中有条件地打印CSS样式

时间:2014-12-14 作者:Hans Ullrich

我在Stackoverflow上发布了这篇文章,如果可以的话,我建议将其重新发布在这里。不知道网站上有Wordpress部分:)

我正在处理Wordpress主题,希望提供在盒式布局和全幅布局之间进行选择的选项。

为此,我在标题中创建了一个变量。php:

<head>
    <?php
        $isBoxedLayout = true;
    ?>
...
</head>
在身体下面,我问变量是否设置为:

<?php if($isBoxedLayout) { echo \'<div id="boxed">\'; } ?>
...
<?php if($isBoxedLayout) { echo \'</div>\'; } ?>
到目前为止,这一切都很好。但是现在,如果设置了这个变量,我还想更改一些css样式。我的问题是,我还不太擅长PHP,所以我的解决方案是这样的:

<head>
    <?php
        $isBoxedLayout = true;
    ?>
    ...
    if ($isBoxedLayout) {
        echo \'<style type="text/css">\';
        echo \'#container {width:999px;}\';
        echo \'</style>\';
    }
</head>
但我认为这不是很好的编程,因为我的头。如果我添加一些其他选项,php文件很快就会充满代码并令人困惑。所以从逻辑上讲,我应该在函数中创建一个变量或数组。php文件并将我的代码外包如下:

$isBoxedLayout = true;

if ($isBoxedLayout) {
    function boxed_css_styles() {
        echo \'<style type="text/css">\';
        echo \'#container {width:999px;}\';
        echo \'</style>\';
    }
}
我的想法正确吗?如果是这样,我将如何访问我在索引中创建的函数。php或标题。php之类的。或者可以打印函数中的样式。php?

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

使用该功能body_class() 在模板中:

<body <?php body_class(); ?>>
这将在body 要素然后在functions.php:

add_filter( \'body_class\', function( Array $classes ) {

    if ( $GLOBALS[ \'isBoxedLayout\' ] )
        $classes[] = \'isBoxedLayout\';

    return $classes;
});
现在,您可以将其所有CSS声明移动到样式表中:

.isBoxedLayout #container {
    width:999px;
}

结束

相关推荐

CSS not applying in admin

我正在使用SASS和grunt来合并我所有的分离。将scss文件转换为单个缩小的css文件,并使用wp_enqueue_style. 在整个站点都可以正常工作,但在管理区域却不行。是否需要特殊功能将脚本排队以在管理区域中使用?