必须将wp_enqueue_style()挂载到wp_enqueue_scripts钩子上,因该钩子触发时函数才被定义且HTML未输出;直接在functions.php顶层调用会报Fatal error,塞入header.php则触发headers already sent。

必须用 wp_enqueue_style() 挂到 wp_enqueue_scripts 钩子上,其他方式不是失效就是报错——这是唯一安全路径。
为什么直接写在 functions.php 顶层会报错?
WordPress 还没加载资源系统,wp_enqueue_style() 函数根本不存在。PHP 直接抛出 Fatal error: Call to undefined function wp_enqueue_style()。
- 别把
wp_enqueue_style()调用写在functions.php文件最外层(即没包函数、没挂钩子) - 也别塞进
header.php:HTML 已开始输出,触发headers already sent - 别误挂到
init或wp_head:前者太早,后者太晚,都插不进
handle 名重复会导致 CSS 静默消失
你注册的 wp_enqueue_style('style', ...) 和父主题/插件同名时,后加载的那个会彻底覆盖前一个——浏览器里看不到对应 ,控制台无报错,CSS 就是不生效。
- handle 必须加唯一前缀,例如
mytheme-header-fix、childtheme-override - 检查是否已入队:
wp_style_is('mytheme-header-fix', 'enqueued')返回true才算成功 - 若要替换默认样式(如
twentytwentyfour-style),先wp_dequeue_style('twentytwentyfour-style'),再wp_enqueue_style()
$src 必须是 URL,不是服务器路径
传 __DIR__ . '/assets/css/main.css' 或 get_template_directory() . '/style.css' 进去,生成的链接是 404——WordPress 不解析服务器路径,只认浏览器能直接请求的 URL。
- 主题根目录
style.css:用get_stylesheet_uri() - 父主题里的 CSS(子主题中引用):用
get_template_directory_uri() . '/assets/css/main.css' - 子主题自定义 CSS:用
get_stylesheet_directory_uri() . '/css/custom.css' - 插件内 CSS:优先用
plugin_dir_url(__FILE__) . 'css/admin.css',比plugins_url()更稳
依赖和版本参数不能省略
PHP 8+ 下,省略 $deps 或 $ver 会触发 warning;类型不对(比如传字符串当数组)也可能导致入队失败。
-
$deps没依赖也要显式写array() -
$ver推荐用文件修改时间防缓存:filemtime(get_template_directory() . '/assets/css/main.css') - 只为某页面加载?用条件函数包裹,例如
if (is_page('about-us')) { wp_enqueue_style(...); }
最容易被忽略的是 handle 唯一性和 $src 的 URL 属性——这两个点不出错则已,一出就是“CSS 看不见、查不到、改了也没用”的哑巴问题。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











