我的主题functions.php
钩住wp_enqueue_scripts
注册多个网站页面使用的样式表。以下是我的配置的简化版本:
add_action("wp_enqueue_scripts", function() {
// This stylesheet is used on *every* page
wp_register_style("sitewide", get_template_directory_uri() . "/assets/sitewide.css");
wp_enqueue_style("sitewide");
// These stylesheets are used by *some* pages
wp_register_style("pagetype1", get_template_directory_uri() . "/assets/pagetype1.css", array("sitewide"));
wp_register_style("pagetype2", get_template_directory_uri() . "/assets/pagetype2.css", array("sitewide"));
});
到目前为止,我找到的每个教程都将回调本身的每个样式表排队,但我不想这样做。我假设这会导致我的所有样式表都包含在每个页面上,这不是我想要的。我只想排队
pagetype1.css
如果某个页面的基础模板使用它。
假设我希望我的首页使用页面类型1样式表。我的直觉是wp_enqueue_style("pagetype1");
在里面front_page.php
就在包含标头之前,标头包含wp_head()
呼叫这没什么用。另一方面,站点范围的CSS也像我预期的那样被包括在内。我做错了什么?
我知道有一个workaround 在外面,但我更喜欢那样front-page.php
保留对加载其他样式表的控制。
<小时>Edit: 这就是我在与托肖讨论后得出的结论。我将此添加到functions.php
:
// Enqueues a stylesheet handle or an array of stylesheet handles.
function mytheme_enqueueStyle($handles) {
if (is_array($handles)) {
add_action("wp_enqueue_scripts", function() use ($handles) {
foreach ($handles as $handle) {
wp_enqueue_style($handle);
}
});
} else if (is_string($handles)) {
add_action("wp_enqueue_scripts", function() use ($handles) {
wp_enqueue_style($handles);
});
} else {
wp_die("Unsupported parameter type.");
}
}
然后我打电话
mytheme_enqueueStyle("pagetype1")
从…起
front-page.php
将样式表排队。不过,这种做法最终与WP Minify不兼容。