必须用wp_enqueue_style挂到wp_enqueue_scripts钩子上,因函数仅在此钩子触发后才定义;直接在functions.php顶层调用会报fatal error,header.php中调用则触发headers already sent;handle须唯一前缀防覆盖,$src须为url而非路径,$deps和$ver不可省略。

必须用 wp_enqueue_style() 挂到 wp_enqueue_scripts 钩子上,其他方式要么报错,要么被覆盖、静默失效。
为什么不能直接在 functions.php 顶层写 wp_enqueue_style()
WordPress 还没加载资源函数,PHP 直接抛 Fatal error: Call to undefined function wp_enqueue_style()。这不是语法错,是执行时机根本不对——wp_enqueue_style() 只在 wp_enqueue_scripts 钩子触发后才可用。
- 别把
wp_enqueue_style('my-css', ...)写在functions.php最外层(没函数包裹、没挂钩子) - 也别塞进
header.php:此时 HTML 已开始输出,会触发headers already sent - 别误挂到
init或wp_head:前者太早,后者太晚,都绕过 WordPress 资源调度系统
$handle 必须带唯一前缀,否则样式会“消失”
handle 是全局标识符,不是昵称。两个地方都用 'style',后注册的会彻底覆盖前一个,浏览器里看不到 <link>,控制台也不报错——你只会觉得“CSS 没生效”,其实它被干掉了。
- 正确命名:用主题或插件名打头,比如
'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 不解析 PHP 文件路径,它只认浏览器能直接请求的完整 URL。
- 父主题 CSS:
get_template_directory_uri() . '/assets/css/main.css' - 子主题自定义 CSS:
get_stylesheet_directory_uri() . '/css/custom.css' - 主题根目录
style.css:get_stylesheet_uri()(不是get_template_directory_uri()) - 插件内 CSS:
plugin_dir_url(__FILE__) . 'css/admin.css'(比plugins_url()更稳)
依赖和版本参数不能省略
PHP 8+ 下省略 $deps 或 $ver 会触发 warning;更重要的是,不声明依赖会导致加载顺序错乱——比如你的 CSS 依赖 Bootstrap,但 Bootstrap 没加载完你就渲染了,样式就崩。
-
$deps即使没依赖也要显式传array() -
$ver推荐用filemtime(get_template_directory() . '/assets/css/main.css'),避免缓存问题 - 子主题若需父主题 CSS 作为依赖,
$deps里必须填父主题的 handle(如array('twentytwentyfour-style')),不能靠@import或手动<link>
最易被忽略的其实是 handle 命名和依赖声明:它们不报错,但会让样式在某些页面突然失效、在子主题里加载错序、或和插件样式打架——这些问题往往要花半天时间排查,而起因只是 'style' 这个看似无害的名字。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











