wp_enqueue_style() 必须挂载到 wp_enqueue_scripts 钩子上,且 $handle 要唯一、$src 必须为可访问 URL;否则 CSS 不生效且无报错。

直接在 header.php 里写 <link>,或把 wp_enqueue_style() 扔在 functions.php 最外层——CSS 就是不生效,而且查不到错。
wp_enqueue_style() 必须挂到 wp_enqueue_scripts 钩子上
函数只在 wp_enqueue_scripts 触发时才被定义、才允许插入 <link> 标签。早于它(比如 init)会报 Fatal error: Call to undefined function wp_enqueue_style();晚于它(比如 wp_head)则 HTML 已开始输出,PHP 报 “headers already sent”。
- ✅ 正确:封装函数 +
add_action('wp_enqueue_scripts', 'mytheme_enqueue_styles') - ❌ 错误:
wp_enqueue_style()直接写在functions.php文件最开头或结尾 - ❌ 错误:塞进
header.php或任意模板文件中 - ⚠️ 子主题必须在自己的
functions.php中挂载,父主题的钩子不会自动继承
$handle 重复会导致 CSS 静默失效
这个参数不是别名,是全局唯一资源 ID。两个地方用了相同 $handle(比如都叫 'style' 或 'bootstrap'),后注册的会彻底覆盖前一个——Network 面板看不到请求,控制台无报错,<link> 标签直接消失。
- ✅ 命名加前缀:
'mytheme-main-css'、'childtheme-admin-fix' - ✅ 检查是否已加载:
wp_style_is('mytheme-main-css', 'enqueued')返回true表示已被引入 - ✅ 替换父主题样式(如
'twentytwentyfour-style'):先wp_dequeue_style('twentytwentyfour-style'),再wp_enqueue_style()
$src 必须是 URL,不是服务器路径
传 get_template_directory() . '/style.css' 或 __DIR__ . '/css/main.css',生成的链接类似 file:///var/www/...,浏览器直接 404。WordPress 不解析服务器路径,只认能被浏览器直接请求的完整 URL。
将 LaTeX(.tex)学术论文转换为 Word(.docx),支持可编辑的 OMML 公式、原生 Word 表格、嵌入图形、IEEE 双栏排版及参考文献
立即学习“前端免费学习笔记(深入)”;
- ✅ 主题根目录
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 参数不能省略或传错类型
PHP 8+ 下,省略 $deps 或传 null/false 会触发 warning;更重要的是,不声明依赖会导致加载顺序错乱——比如你的 CSS 在 Bootstrap 之前加载,栅格和按钮全崩。
- ✅
$deps必须显式传数组:array()或array('bootstrap'),不能留空、不能删掉参数位 - ✅
$ver推荐用文件修改时间防缓存:filemtime(get_stylesheet_directory() . '/style.css') - ✅ 子主题加载父主题样式时,要把父主题
$handle写进$deps,确保加载顺序正确
最容易被忽略的是 $handle 冲突和 $src 路径类型混用——前者让你调试半天找不到 <link>,后者让 Network 面板只显示 404。这两个点卡住,其他都白搭。

















