PHP样式表不能使用标准的WP函数

时间:2011-04-20 作者:Garet Claborn

我使用

<link href="<? echo THEME_CSS;?>/styles.php" media="screen" rel="stylesheet" type="text/css">
最近,我达到了需要使用TEMPLATEPATH和各种内置WordPress函数的地步。唉,我越来越

“警告:require\\u once(TEMPLATEPATH/framework/theme.php)[function.require once]:”以及类似的错误,表明此文件通常没有利用WordPress环境。

如果WordPress在这里工作正常,TEMPLATEPATH 应为实际模板路径。此外,其他功能,如get_bloginfo(), 等找不到。

有没有什么方法可以显式初始化WordPress,让我从管理面板中提取选项?

3 个回复
SO网友:goldenapples

如果您链接到一个文件,它将作为新文件打开。因此,除非明确包含wp\\u load。php或该样式文件中的其他内容,WordPress不可用。

在一页加载中再次加载WP对我来说似乎完全是过火了。如果需要使用WP引擎,为什么不将样式文件作为内联样式表包含进来呢?

执行以下操作:

<style>
<?php include_once(\'styles.php\'); ?>
</style>

SO网友:Drew Gourley

您可以考虑使用一些替代函数来返回要查找的路径,例如:

//this one may return as well as some unwatned theme-specific stuff
get_bloginfo(\'template_directory\');

//this returns the pure url
get_bloginfo(\'template_url\');

//basically the same as template_directory, may come over with extra info
get_bloginfo(\'stylesheet_directory\');

//returns the url followed by style.css
get_bloginfo(\'stylesheet_url\');
这些很可能会遇到同样的问题,如果这不起作用,请告诉我。您可能必须在文件的顶部添加一些include,而不管您最终使用的是什么,才能使其中任何一个正常工作。

SO网友:Pekka

PHP驱动的样式表的概念是次优的,因为PHP解释器和WordPress引导程序都很胖-必须为每个CSS请求启动。

如果可能,考虑使用相对路径-请注意,如果样式表和图像位于同一模板目录中,则

../images/image.gif
会有用的!样式表中的路径相对于实际样式表的位置,而不是页面的位置。

或者,虽然内联样式确实不好,但可以考虑使用静态样式表,并且只在文档头中指定动态属性。

<link rel="stylesheet" href="....." type="text/css">
<style type="text/css">
 .class { background-image: url(<?php echo $xyz; ?>) }
</style>

结束

相关推荐