模板继承实战:解决子模板强制覆盖父模板资源的问题
最近在开发多皮肤插件时遇到个典型问题:当子模板继承父模板时,static资源路径经常被强制覆盖。比如在WordPress中:
父模板加载CSS:
wp_enqueue_style('parent-style', plugins_url('/assets/css/main.css', __FILE__));
子模板如果直接调用同名handle就会覆盖父级资源:
// 错误写法:直接覆盖父级样式
wp_enqueue_style('parent-style', plugins_url('/child/assets/css/main.css', __FILE__));
解决方案有三种:
1. 命名空间隔离法(推荐)
给子模板资源添加独立前缀:
wp_enqueue_style('child-parent-style', plugins_url(...));
2. 依赖声明法
通过wp_register_style明确依赖关系:
wp_register_style('child-style', plugins_url(...), array('parent-style'));
3. 版本后缀法
对同一handle添加版本标识:
wp_enqueue_style('parent-style', plugins_url(...), array(), filemtime(...));
实测第一种方案维护成本最低,特别适合需要同时保留父子模板样式的场景。你们在模板继承时还遇到过哪些资源加载的坑?
最新打赏

