我写了一个简单的插件,它使用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 代码添加到标题中,但我不知道具体如何。
有什么想法吗?
谢谢
将 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' );
}
参考。
也许您使用的插件想要发送一些 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 函数之前将其排队加载
在插件开发中,不要忘记发送class ($this)
的引用
add_action( 'wp_enqueue_scripts', array($this,'prefix_add_my_stylesheet' ));
我通过加载样式.css文件,编辑并再次保存解决了我的问题