Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.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 在Wordpress中有条件地打印css样式_Php_Css_Wordpress - Fatal编程技术网

Php 在Wordpress中有条件地打印css样式

Php 在Wordpress中有条件地打印css样式,php,css,wordpress,Php,Css,Wordpress,我正在处理一个Wordpress主题,我想给你一个选择框式布局和全宽布局的选项 为此,我在header.php中创建了一个变量: <head> <?php $isBoxedLayout = true; ?> ... </head> 在身体下方,我询问变量是否已设置: <?php if($isBoxedLayout) { echo '<div id="boxed">'; } ?> ... <?php

我正在处理一个Wordpress主题,我想给你一个选择框式布局和全宽布局的选项

为此,我在header.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>
$isBoxedLayout = true;

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

<head>
    <?php
        $isBoxedLayout = true;
    ?>
    ...
    if ($isBoxedLayout) {
        echo '<style type="text/css">';
        echo '#container {width:999px;}';
        echo '</style>';
    }
</head>
$isBoxedLayout = true;

if ($isBoxedLayout) {
    function boxed_css_styles() {
        echo '<style type="text/css">';
        echo '#container {width:999px;}';
        echo '</style>';
    }
}
我的想法对吗?如果是这样的话,我将如何访问我在index.php或header.php中创建的函数。还是可以在functions.php中打印样式


致以最诚挚的问候

不要试图通过PHP添加样式,从而使问题变得过于复杂。通过PHP添加ID…但不是样式本身

由于只有在装箱布局生效时才应用装箱ID,因此可以简单地定义一些装箱CSS样式。这些样式只有在标识存在于标记中时才会应用……这意味着,当您的PHP不应用标识时,这些样式将不会生效

换句话说,把它放在CSS样式表中,然后忘掉它:

#boxed {
    width: 999px;
}

一个灵活的选择是使用body_class函数向body标记添加一个额外的类。这将允许您相应地确定样式的范围:

.盒装部分{ /*这里的风格/ } .全宽断面{ /这里的风格*/ }

通过在主体上添加类,可以有效地针对所有对象。这样,您就可以将样式与标记分开


另一种选择是将通用样式保留在一个样式表中,然后为全宽/装箱特定样式加载一个附加样式表。这对于组织的目的来说是很方便的,通过添加一个额外的HTTP请求,所以你需要考虑到BULL。我认为你的帖子看起来不错,但它应该被张贴在网站上。你也可以在那里搜索相关的答案。我会考虑两种情况下的分离类,并用简单的IF子句将它们分配给相关元素。这样你就只需要编写很少的php,我建议你只制作两个模板,一个是盒装布局,另一个没有。然后用户可以在管理区域中选择他们想要的模板,但是如果添加了装箱元素,我想更改其他元素的样式怎么办?例如,如果我有一个宽度为980px且添加了boxed的页脚,页脚的宽度应为100%。然后将其添加到CSS中……例如,如果要在boxed处于活动状态时更改段落,可以在CSS中将其定义为:boxed p{font size:16px}。或者…装箱页脚{/*某些样式*/},假设页脚是嵌套的。如果页脚不是嵌套的,则可以在装箱处于活动状态时向所有元素添加一个类,该类执行类似操作。这个问题有很多解决办法。