在不包含wp-load的情况下将css包含在PHP中吗?

时间:2011-08-16 作者:Jens Törnell

我有一个由PHP生成的CSS文件。

In my file it says...

header("Content-type: text/css");
define(\'WP_USE_THEMES\', false);
include \'../../../../wp-load.php\';
我读过,包括wp负载。像这样的php不好。我这样做是为了让那里的环境更好。

这样做的“正确”方式是什么?

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

编辑下面的“忘记我的答案”。你可以简单地使用wp_register_stylewp_enqueue_style 如中所述this answer.

您可以使用一个额外的查询变量来实现这一点。

将新变量添加到$query_vars 具有的数组query_vars 在上筛选template_redirect 行动,确保custom.php-如果设置了查询变量,则包含css文件。

// functions.php
function wpse26013_add_query_vars(query_vars) {
    $query_vars[] = \'style\';
    return $query_vars;
}
add_filter(\'query_vars\', \'wpse26013_add_query_vars\');

function wpse26013_include_custom_css() {
    $style = get_query_var(\'style\');

    if($style == \'custom\') {
        include_once(get_stylesheet_directory_uri() . \'/css/custom.php\');
        return;
    }
}
add_action(\'template_redirect\', \'wpse26013_include_custom_css\');
然后,您可以在头文件中添加一个简单的css include。

// header.php
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo(\'stylesheet_url\') . \'/css/?style=custom\'; ?>" />
最后但并非最不重要的一点是,您必须定义自定义css文件。

// custom.php
<?php
header(\'Content-type: text/css\');
header("Cache-Control: must-revalidate");
header(\'Expires: \' . gmdate(\'D, d M Y H:i:s\', time() + 1209600) . \' GMT\');

$options = get_option(\'webeo\');
?>
#header #logo {
    background: url(\'<?php echo get_stylesheet_directory_uri() . \'/images/\' . $options[\'header\'][\'site_logo\']; ?>\') no-repeat;
}
您还可以使用内置PHP函数从css文件中获取内容file_get_contents() 并将css直接打印到源代码中。

结束