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


Conditionally print css style in 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?

此致敬意

不要通过尝试通过 PHP 添加样式来使这过于复杂。通过 PHP 添加 ID...但不是样式本身。

由于仅在盒装布局生效时应用 boxed ID,因此只需定义一些#boxed CSS 样式即可。仅当标记中存在 ID 时,才会应用这些样式...这意味着当您的 PHP 未应用 ID 时,它们不会生效。

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

#boxed {
    width: 999px;
}

一个灵活的选择是使用 body_class() 函数为您的身体标签添加一个额外的类。这将允许您相应地确定样式范围:

.框框部分 { /* 样式在这里 / } .全角部分 { /样式在这里 */ }

通过在正文中添加类,您可以有效地针对所有内容。这样,您就可以将样式与标记分开。

另一种选择是将通用样式保留在一个样式表中,然后为全角/盒装特定样式加载其他样式表。这对于组织目的来说很方便,通过添加额外的 http 请求,因此您需要考虑记住这一点。