如何添加动态内联样式?

时间:2013-06-28 作者:ajay

我想添加动态CSS,所以目前我直接添加到div,即:

$color = "#000000";
echo \'<div style="background:\'.$color.\'">
添加上述代码是否不好?

我在一些论坛上读到,它增加了服务器负担,WordPress编码标准不推荐使用它。我应该使用wp_add_inline_style(). 所以我尝试使用它,但它不起作用。以下是我正在尝试的:

功能。php:

function add_custom_css() {
        wp_enqueue_script(\'custom-css\', get_template_directory_uri() . \'/custom.css\');          
    }
}
add_action( \'wp_enqueue_scripts\', \'add_custom_css\' );
单身。php

$color = "#000111";
$custom_css = "
    .mycolor{
            background: {$color};
    }";

wp_add_inline_style( \'custom-css\', $custom_css );
它不会在自定义中添加任何代码。css文件。我做错了什么?

5 个回复
SO网友:Pat J

尝试以下操作:

不建议使用查询条件将样式排队直接放入模板中。这是可能的(如果您了解相关行动的启动顺序,并确保wp_add_inline_style() 发生在执行顺序的正确点)。将所有代码放在一起并使用适当的查询条件要容易得多,例如is_single(), 要添加动态样式,请执行以下操作:

function add_custom_css() {
    wp_enqueue_style(\'custom-css\', get_template_directory_uri() . \'/custom.css\');   
    // Add dynamic style if a single page is displayed
    if ( is_single() ) {
        $color = "#000111";
        $custom_css = ".mycolor{ background: {$color}; }";
        wp_add_inline_style( \'custom-css\', $custom_css );
    }
}
add_action( \'wp_enqueue_scripts\', \'add_custom_css\' );
原始答案

functions.php

function add_custom_css() {
    wp_enqueue_style(\'custom-css\', get_template_directory_uri() . \'/custom.css\');          
}
add_action( \'wp_enqueue_scripts\', \'add_custom_css\', 20 );

single.php

function wpse104657_custom_color() {
    $color = "#000111";
    $custom_css = "
        .mycolor{
            background: {$color};
        }";
    wp_add_inline_style( \'custom-css\', $custom_css );
}
add_action( \'wp_enqueue_scripts\', \'wpse104657_custom_color\', 21 );
中的第三个参数add_action() 调用是优先级,它告诉WordPress添加操作的顺序——数字越大意味着执行越晚。

Edited to add 这不会将任何代码添加到custom.css -- 它只会添加内联样式custom.css 已加载。

参考文献Codex page for add_action()
  • wp_enqueue_style()
  • wp_add_inline_style()
  • SO网友:onetrickpony

    它不会在自定义中添加任何代码。css文件。我做错了什么?

    这些样式将添加到HTML文档中<style> 标记,而不是在您排队的样式表中。但在添加“内联”样式之前,仍然需要将样式表排队。

    函数名有点混乱,因为它生成的是样式块,而不是实际的内联样式。您对上面的DIV所做的是一种内联样式。您应该避免这些,因为它们在!important 规则(覆盖它们将非常困难)。

    我在一些论坛上读到它添加了服务器burdon

    不,它不是。你可能把它误认为是PHP脚本充当样式表。这些都很糟糕。

    SO网友:Jeremy Ross

    也许只有我一个人,但在这里,我们就像在啃啃一只蚊虫,吞下一只骆驼。(这是一个短语……查一下:))

    如果您正在构建一个可能有子主题与其关联的主题,那么直接内联添加它和通过wp\\u add\\u inline\\u style()将其添加到样式块都需要!重要,以便覆盖它。

    如果这是一个自定义插件,并且更改背景颜色是功能的关键部分,那么请尽一切努力将其添加到内联中。

    我认为过度复杂化没有任何好处。

    回答最初的问题。

    添加上述代码是否不好?

    答案很简单,不,不错。这确实会产生影响,但服务器性能并不是其中之一,我在WordPress编码标准中也没有看到任何阻碍这一点的东西。一般来说,内联样式应该谨慎使用,但也不错。

    如果要确保将关注点分开,可以添加一个内联类而不是样式。

    $color = "black";
    echo \'<div class=".$color.">\'
    
    然后定义。样式表中的黑色。(当然,只有当您有预定义的颜色选项列表时,这才有效。)

    SO网友:T.Todua

    Just use:

    add_action(\'admin_head\',\'myfunc24235235\');
    function myfunc24235235(){ ?>
    
      <style>
      .smth{ color:red;}
      </style>
    
        <?php
    }
    
    SO网友:Zachary Raineri

    我在所有模板中都这样做,请使用:

    <?php
        function hook_css() {
            ?>
                <style>
                    .sub { margin: auto; max-width: 1140px;}
                </style>
            <?php
        }
        add_action(\'wp_head\', \'hook_css\');
    ?>
    
    这将在完成后将引用的样式标记和样式放置在head部分中

    <?php wp_head();?>

    如果要将其编码到模板中,请确保将其放在

    <?php wp_head();?> 部分您可以在此处了解更多信息WordPress Codex

    结束

    相关推荐

    images in wordpress themes

    我正在用wordpress开发一个php主题。我想在网站上显示图像。所以我的问题是什么是最佳实践1) 使用数据库服务器的“图像”或“二进制数据”数据类型将图像本身存储在表中。或2) 将图像作为文件存储在文件系统中,并在表中创建一条记录,其中包含该图像的确切路径。。尽量少打扰数据库。