7

我写了一个简单的插件,它使用 wp_options 设置了一些 css 代码。这一切看起来都像这样:

add_action('init','easy_style');

function easy_style()
{
    ?>
    <style>
    #header a {
        color: <?php echo get_option('topcolor'); ?>;
        font-size: <?php echo get_option('topsize'); ?>px;
        <?php
            if (get_option('topstyle') == "bold")
            { echo "font-weight: bold;"; echo "font-style: normal;"; }
            elseif (get_option('topstyle') == "italic")
            { echo "font-style: italic;"; echo "font-weight: normal;"; }
            elseif (get_option('topstyle') == "bolditalic")
            { echo "font-weight: bold;"; echo "font-style: italic;"; }
            else { echo "font-weight: normal;"; echo "font-style: normal;"; }
        ?>;
    }

    </style>
    <?php
}

现在可以了,但是如果我激活我的“联系表 7”插件,联系表 7 就不再起作用了。它不能发送任何邮件。所以我认为我的做法是错误的。如果我删除这段代码,联系表格会再次起作用......

我认为我做错了,因为 css 需要加载到标题中,不是吗?所以我认为我会做的测试是将相同的代码放在标题中。但是,其他一些 css(我不知道在哪里)会覆盖这些,所以这也不起作用。

我认为有一些 wp 函数可以将 css 代码添加到标题中,但我不知道如何准确。

有任何想法吗?

谢谢

4

4 回答 4

28

将 CSS 添加到插件的一种安全方法是使用wp_enqueue_style.

/**
 * Register with hook 'wp_enqueue_scripts', which can be used for front end CSS and JavaScript
 */
add_action( 'wp_enqueue_scripts', 'prefix_add_my_stylesheet' );

/**
 * Enqueue plugin style-file
 */
function prefix_add_my_stylesheet() {
    // Respects SSL, Style.css is relative to the current file
    wp_register_style( 'prefix-style', plugins_url('style.css', __FILE__) );
    wp_enqueue_style( 'prefix-style' );
}

参考

于 2012-06-05T13:08:19.570 回答
2

也许您正在使用的插件想要发送一些 http 标头。

由于您使用的是init钩子(详细信息:http: //codex.wordpress.org/Plugin_API/Action_Reference/init),当插件开发人员认为标头尚未发送时,您正在运行一些操作。

但是,由于您发送了一些输出(回显某些样式),因此您正在强制更快地发送标头。我建议您使用另一个在输出已经启动后发生的钩子。

更新:您可以使用 wp_enqueue_style 函数(参考此处:http ://codex.wordpress.org/Function_Reference/wp_enqueue_style ),因为它是显示样式的推荐方式。您只需将这些规则保存在 css 文件中并将其排队以在调用 wp_head 函数之前加载

于 2012-06-05T13:05:05.403 回答
-1

在插件开发中,不要忘记发送参考class ($this)

add_action( 'wp_enqueue_scripts', array($this,'prefix_add_my_stylesheet' ));
于 2017-06-13T06:40:26.963 回答
-14

我通过加载styles.css文件解决了我的问题,编辑它并再次保存

于 2012-06-08T18:22:15.767 回答