我需要将自定义内联样式添加到正在创建的自定义主题的标题中。我遇到过wp_add_inline_style()函数,该函数可以工作,但实际上并不适合我,因为它取决于特定的样式表。我需要在head标记的末尾添加内联样式,而没有样式表相关性。

我尝试设置主题样式表或不存在的样式表。在这两种情况下,它都可以工作,但它有点像IMO肮脏的东西(加载主题样式表两次或引用幻影文件...)。有没有适当的方法可以在不依赖样式表的情况下在头中添加内联样式?

当然,我可以将它们直接添加到header.php文件中,但我想避免这种情况。 />

#1 楼

您只需要将样式直接添加到页面标题即可。最好的方法是使用“ wp_head”动作挂钩,假设您使用的是带有挂钩的主题。像这样:

add_action('wp_head', 'my_custom_styles', 100);

function my_custom_styles()
{
 echo "<style>*{color: red}</style>";
}


查看WP Codex以了解有关动作挂钩的更多信息。

评论


没问题!很高兴我能帮助你。

– SkyShab
2014年11月19日在20:28

如果(像我一样)想要将自定义内联CSS添加到仪表板页面,则可以使用admin_head操作。

–巴西那个家伙
18年1月29日在14:05

@SkyShabwhy为什么在样式后有一个星号>

–迈克尔·罗杰斯(Michael Rogers)
20年8月10日在18:13

@MichaelRogers这只是示例CSS样式。 “ *”是“通用选择器”。这将使所有元素变为红色。

– SkyShab
20年8月21日在16:34

哦,哈哈,谢谢

–迈克尔·罗杰斯(Michael Rogers)
20年8月22日在1:54

#2 楼

您可以简单地使用“虚拟”手柄:

wp_register_style( 'dummy-handle', false );
wp_enqueue_style( 'dummy-handle' );

wp_add_inline_style( 'dummy-handle', '* { color: red; }' );


评论


我真的很喜欢这种解决方案,因为我的样式有一个句柄,并且像从.css文件中包含的那样被加入队列。

– dev_masta
18年7月7日在11:33

根据文档codex.wordpress.org/Function_Reference/,也不允许使用false作为wp_register_style的来源。

– 16patsle
19年2月13日在12:56

@ 16patsle-我不确定您是否正确。如果您使用错误的样式表,则它是其他样式表的别名。就这样。

– kanlukasz
20-10-25在15:21

我认为自发布该评论以来,文档已更新,现在看来确实允许。 (我认为明确不允许传递不带deps的false,但我想它可能仍然有效)

– 16patsle
20-10-26在16:51

#3 楼

您的主题肯定有一个默认的样式表(否则它甚至不会作为主题加载)。
只需将此样式表用作内联CSS的处理程序即可。可以在主题TwentyFifteen的functions.php中找到一个示例(为简洁起见,跳过了代码):

function twentyfifteen_scripts() {
    wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );

}
function twentyfifteen_post_nav_background() {
    wp_add_inline_style( 'twentyfifteen-style', $css );
}


评论


OP特别要求使用除wp_add_inline_style()之外的方法。两种方法都可以使用,而且我还没有找到任何令人信服的理由来使用wp_add_inline_style()。如果您知道原因,我想知道。

– SkyShab
18年1月30日在15:24

您的解决方案有效,但是根据我曾经从WP团队某人那里听到的消息(如果我没记错的话),它仍然是“ hacky”;不完全是我的意见。我认为OP认为没有办法两次加载样式表或使用幻影钩子就无法做到这一点。无论如何,如果他们不编写插件,总会有主题的样式表。我也在编辑我的答案,因为您的解决方案已记录在食典中。 :)

–凯斯
18年1月30日在19:37

我玩过wp_add_inline_style(),这就是我发现的。将样式附加到样式表的好处是,如果样式出列,则样式不会被打印出来。但是任何一种方法都将它们内联打印在头部。假设您是一名插件开发人员,并且您的样式已打印在头部。这与主题样式无关,因此,如果子主题使主要主题样式出队以使用其自己的样式,那么现在不会输出您的插件样式。因此,OP可能由于这个原因已经指定了请求的那一部分。

– SkyShab
18年1月31日在20:47