wp_enqueue_style() 必须挂载到 wp_enqueue_scripts 钩子上,不可在 functions.php 顶层调用;handle 需唯一前缀,$src 必为 url,$deps 和 $ver 不可省略,推荐用 filemtime() 动态更新版本号防缓存。

必须用 add_action('wp_enqueue_scripts', 'your_function_name') 挂载,不能直接写在 functions.php 顶层,否则函数根本不会执行,PHP 会报 Fatal error: Call to undefined function wp_enqueue_style()。
wp_enqueue_style 必须挂到 wp_enqueue_scripts 钩子上
WordPress 的样式加载有严格时机约束:wp_enqueue_scripts 是唯一安全的前端资源注册入口。早于它(比如 init)时 WP 环境未就绪;晚于它(比如 wp_head)时 HTML 已开始输出,PHP 会报 “headers already sent” 错误。
-
wp_enqueue_style()绝对不能出现在functions.php最外层(即不在任何函数内) - 也不能塞进
header.php或其他模板文件里——此时输出已发生,<link>标签插不进去 - 子主题必须在自己的
functions.php中显式挂载,不能指望父主题自动帮你执行
handle 名称重复会导致样式静默失效
$handle 是全局唯一的资源 ID,不是随便起的别名。两个地方用了相同 handle(比如都叫 'style' 或 'bootstrap'),后注册的那个会完全覆盖前一个——无警告、不报错、浏览器里也看不到对应 <link> 标签。
- 务必加唯一前缀,例如
'mytheme-header-fix'、'childtheme-custom-css' - 检查是否已被加载:
wp_style_is('mytheme-custom-css', 'enqueued')返回true表示已存在 - 若需替换父主题默认样式(如
'twentytwentyfour-style'),先wp_dequeue_style('twentytwentyfour-style'),再wp_enqueue_style()
$src 必须是 URL,不是服务器路径
传入 wp_enqueue_style() 的 $src 参数必须是浏览器可直接请求的完整 URL。常见错误是把 get_template_directory()(返回服务器绝对路径)或 __DIR__ 拼出来的路径当 URL 用,结果生成 404。
- 主题根目录下的
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()更稳
$deps 和 $ver 参数不可省略
省略 $deps 或 $ver 在 PHP 8+ 下会触发 warning;更重要的是,不声明依赖会导致加载顺序错乱(比如你的 CSS 在 Bootstrap 之前加载,覆盖规则就无效),不带版本号则无法控制缓存,用户改了 CSS 却看不到效果。
-
$deps必须显式传空数组array(),哪怕没依赖 -
$ver推荐用文件修改时间:filemtime(get_template_directory() . '/assets/css/custom.css'),防缓存最可靠 -
$media虽可选,但建议明确写'all'或'screen',避免意外行为
最容易被忽略的其实是 $src 的 URL 构造逻辑和 $ver 的动态更新——很多开发者复制粘贴时只改路径名,却忘了同步更新 filemtime() 里的路径,导致缓存问题反复出现。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











