wp_enqueue_style必须挂载到wp_enqueue_scripts钩子上,handle需唯一加前缀,$src须为url而非路径,$deps和$ver不可省略;直接写或放functions.php顶层会导致样式静默失效。

wp_enqueue_style 必须挂到 wp_enqueue_scripts 钩子上
WordPress 只在 `wp_enqueue_scripts` 这个钩子触发时才准备好 `wp_enqueue_style()` 函数,且此时 `
` 尚未输出。早于它(比如 `init`)函数未定义;晚于它(比如 `wp_head`)则会报 “headers already sent” 错误。- ✅ 正确:用
add_action('wp_enqueue_scripts', 'my_theme_enqueue_styles')包裹注册逻辑 - ❌ 错误:
wp_enqueue_style()直接写在functions.php文件最外层,或塞进header.php里 - ⚠️ 注意:子主题必须在自己的
functions.php中挂载,不能指望父主题的钩子自动继承
handle 名称重复会导致样式静默失效
wp_enqueue_style() 第一个参数 $handle 是全局唯一 ID,不是随便起的别名。两个地方用了相同 $handle(比如都叫 'style' 或 'bootstrap'),后注册的会彻底覆盖前一个,浏览器里看不到报错,CSS 就是不生效。
- ✅ 建议加前缀:
'mytheme-main-css'、'pluginname-admin-ui' - ✅ 检查是否已加载:
wp_style_is('mytheme-main-css', 'enqueued')返回true表示已被引入 - ✅ 替换默认样式(如
'twentytwentyfour-style'):先wp_dequeue_style('twentytwentyfour-style'),再wp_enqueue_style()
$src 必须是可访问的 URL,不是文件路径
$src 参数要的是浏览器能直接请求的完整 URL,不是服务器上的绝对路径,也不是相对 PHP 文件的路径。常见错误是混用 get_template_directory()(返回服务器路径)和 get_template_directory_uri()(返回 URL)。
- ✅ 主题根目录
style.css:get_stylesheet_uri() - ✅ 父主题 CSS(子主题中):
get_template_directory_uri() . '/assets/css/main.css' - ✅ 子主题自定义 CSS:
get_stylesheet_directory_uri() . '/css/custom.css' - ⚠️ 特别注意:
get_stylesheet_directory()返回的是类似/var/www/html/wp-content/themes/mychild这样的路径,直接拼进$src会导致 404
$deps 和 $ver 参数不能省略或传错类型
$deps 是依赖数组,$ver 是版本号字符串。PHP 8+ 对空值更敏感,传 NULL 或布尔值容易引发警告或解析异常;microtime() 返回浮点数,部分 CDN 或缓存策略会拒绝带小数点的版本号。
- ✅
$deps显式传空数组:[],而不是NULL或省略 - ✅
$ver推荐用文件修改时间:filemtime(get_stylesheet_directory() . '/style.css') - ✅
$media默认就是'all',不传或传'all'效果一致,但传字符串时必须加引号
<link> 标签,没有就说明钩子没挂上或函数根本没执行。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











