WordPress 主题的 wp_enqueue_script:依赖、版本与加载时机
摘要
直接把 写进 header.php 能跑,但会带来一堆麻烦:缓存不更新、插件冲突、加载顺序不可控。统一走 enqueue 才是正路。最小写法add_action('wp_enqueue_scripts', function
直接把 <script> 写进 header.php 能跑,但会带来一堆麻烦:缓存不更新、插件冲突、加载顺序不可控。统一走 enqueue 才是正路。
最小写法
add_action('wp_enqueue_scripts', function(){
wp_enqueue_style('my-style', get_stylesheet_uri(), [], '1.0.0');
wp_enqueue_script(
'my-main',
get_template_directory_uri() . '/js/main.js',
['jquery'],
'1.0.0',
true
);
});四个参数的意义
- 依赖数组:
['jquery']表示 jquery 先加载。不写的话脚本可能在前,$ 未定义直接报错。 - 版本号:拼到 URL 后面的 query 参数。用固定字符串,浏览器缓存永不失效;用
filemtime()取文件修改时间才能自动破缓存。 - 是否在 footer:第五个参数传 true,脚本放到页面底部,不阻塞渲染。
- handle 唯一性:同名会覆盖,插件和主题用了同一个 handle 就会互相顶掉。
版本号的正确做法
$ver = filemtime(get_template_directory() . '/js/main.js');
wp_enqueue_script('my-main', $url, ['jquery'], $ver, true);写成 time() 是反例。每次刷新版本号都变,缓存等于没有。
条件加载
只在需要的页面加载,能省不少流量:
if (is_singular()) {
wp_enqueue_script('my-comment', ...);
}不要做的事
- 不要用
wp_deregister_script('jquery')换 CDN,很多插件依赖,一换就白屏 - 不要在
wp_head钩子里手写 script 标签绕过 enqueue
所属专题
2026年10月20日 14:59
前后30天 · 点日期看归档
9月20日
9月21日
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日