如何在用php生成的.css文件中使用全局变量?

时间:2012-03-04 作者:alex

我包括一个。我用php解析的css如下

<link rel="stylesheet" type="text/css" media="all" href="<?php echo get_childTheme_url(); ?>/css/productgallery.php" />
现在在productgallery中,我不能使用在函数中设置的全局变量(数组)。php

如何修复此问题?

3 个回复
SO网友:EAMann

简短回答,否。

长答案在你的评论中,你解释说你包括wp-blog-header.php 在生成CSS文件的PHP文件中。这是一个very bad idea.

当页面引用样式表时,浏览器会看到该引用,并向服务器发出单独的HTTP请求以将其下拉。如果样式表是静态文件,那么这不是问题。它通常是缓存的(因此浏览器在本地加载),或者可以从CDN提供服务(这意味着重复的请求永远不会到达您的服务器)。

但将其作为动态PHP文件加载意味着它无法缓存。包括…在内wp-blog-header.php 也就是说,您正在加载WordPress的所有内容,只是为了生成该文件。

每个对您站点的请求都会加载WordPress,而不是一次,而是两次,只是为了生成一个文件。

取而代之的是提取样式表的动态部分。然后,在你的header.php 文件,包括内嵌<style type="text/css"> ... </style>

这不是世界上最干净的东西,但在里面header.php 您可以使用生成CSS所需的任何PHP变量。外部样式表保持小、静态和可缓存。

SO网友:mor7ifer

您应该使用wp_enqueue_style() wordpress固有的函数,可以在init 和之前wp_print_styles 从wordpress中的任何位置(functions.php, 插件文件,有时甚至是模板)。

SO网友:Hybrid Web Dev

如果您使用的是PHP,那么没有理由不能将条件类应用于元素。例如

<?php $some_other_class ="bobby";?>
<div class=\'some_class <?php echo $some_other_class;?>">Some stuff</div>
然后是css:

.bobby {
some css stuff here
}
这在HTML中的最终效果是:

<div class=\'some_class bobby\'>
它本质上是向元素附加另一个css选择器。当然,要记住层次结构,以及css是如何在级联中应用的。这意味着任何通过此mentho应用的css都是在第一个类之后应用的。当然,这也意味着您可以使用第二个类来覆盖最初的样式,如果您想要添加颜色、更改字体或任何有条件的东西,这将非常有用。

当然,css本身将驻留在样式表中。

我不建议像@EAMann提到的那样,在任何地方都包含内联样式。原因是,这只会使故障排除变得更加困难。

我能想到的例子很少,你需要像他建议的那样在标题中包含内联样式,即使如此,只有在我建议的模板内不可能这样做的情况下。最糟糕的情况是,您总是可以通过WordPress排队/注册函数有条件地调用css样式表,这在很大程度上否定了像他建议的那样将其放入标题中的任何理由。

结束

相关推荐

$GLOBALS array for WordPress

有WordPress定义的文件吗$GLOBALS? 我只是好奇WordPress使用它的目的和用途。仅此而已!