wp add inline style in loop

时间:2014-03-04 作者:lolo

由于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()的方法。

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

如果grid_init() 在循环内部运行,然后在页面之后执行head 在相关挂钩之后--wp_head, wp_enqueue_scripts, PHP按顺序逐行执行,所以如果你错过了一个钩子,你就错过了它。你不能倒退。脚本/样式排队子系统必须能够将内容放入页脚,在这种情况下,这是唯一的选择。我相信这就是你所看到的。

您正在获取的标记可能会起作用,但它也是无效的。样式必须在head.

最简单的解决方案,也可能是最好的,是echo 内联style= 标记中的标记。

如果该解决方案不起作用,则您需要:

循环遍历文档头部的循环—可能在wp_enqueue_styles 钩子生成标记,重置循环,然后让页面加载,这显然需要额外的处理时间,但除非每页有很多帖子,否则你可能不会注意到。

结束

相关推荐

是否可以基于meta_Query过滤器在Single.php中加载不同的侧边栏?

我有一个自定义的帖子类型“演讲者”,我有一个复选框自定义字段(meta\\u查询),用于将我的会议演讲者与我的研讨会演讲者分开。我可以用这个meta\\u查询过滤我的演讲者,一切正常。但是,如何根据会议或研讨会发言人meta\\u查询使用不同的侧栏?当我单击扬声器查看其详细信息时(无论是会议还是研讨会扬声器),详细信息页面将加载我的单个扬声器。php和在我的单个扬声器中获取侧栏的代码。php是:<?php get_sidebar(); ?> 如何指定不同的侧栏,例如get\\u侧栏(