由于wp\\u add\\u inline\\u style wordpress函数,我想添加内联样式。
内联样式将添加到循环中。在我的例子中,我在循环中输出了一个同位素网格,这个网格可以为每个网格进行不同的css定制。
实际上,我有一个php脚本:
function grid_register_styles(){
$themeversion = wp_get_theme()->display(\'Version\');
wp_register_style( \'grid-style\', get_bloginfo(\'stylesheet_url\'), array(), floatval($themeversion) , false );
}
add_action( \'init\', \'grid_register_styles\' );
function grid_inline_styles($guttercss) {
wp_enqueue_style( \'grid-style\' );
wp_add_inline_style( \'grid-style\', $guttercss);
}
/* this is the function used for the loop */
function grid_init() {
/* There is some stuff before */
/* I calculate a variable in order to apply a style base on some options */
$guttercss = \'.gutter-\'. $gutter .\' .to-item-wrapper {\';
$guttercss .= \'margin: \'. $gutter/2 .\'px !important;}\';
/* Then I call my function to output inline css style */
grid_inline_styles($guttercss);
/* There is some stuff after */
}
该代码在循环中工作,并为每个生成的同位素网格输出不同的css样式。
但是,生成的css位于页脚而不是页眉。。。。
我成功地用add\\u action()将其放在了头部,但它不能只在循环之外工作,而且只能工作一次。
我想我没有正确理解使用wp\\u add\\u inline\\u style()的方法。
最合适的回答,由SO网友:s_ha_dum 整理而成
如果grid_init()
在循环内部运行,然后在页面之后执行head
在相关挂钩之后--wp_head
, wp_enqueue_scripts
, PHP按顺序逐行执行,所以如果你错过了一个钩子,你就错过了它。你不能倒退。脚本/样式排队子系统必须能够将内容放入页脚,在这种情况下,这是唯一的选择。我相信这就是你所看到的。
您正在获取的标记可能会起作用,但它也是无效的。样式必须在head
.
最简单的解决方案,也可能是最好的,是echo
内联style=
标记中的标记。
如果该解决方案不起作用,则您需要:
循环遍历文档头部的循环—可能在wp_enqueue_styles
钩子生成标记,重置循环,然后让页面加载,这显然需要额外的处理时间,但除非每页有很多帖子,否则你可能不会注意到。