面包屑挂在 woocommerce_before_main_content 上,输出却跑到 H1 标题上方,和相邻插件的位置完全反了,改模板顺序也没用。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
add_action('woocommerce_before_main_content', 'my_breadcrumb', 5);
// 数字越小越早执行,默认 10
add_action 第四个参数省略时优先级是 10,和主题原有回调相同,执行顺序按注册先后决定。主题先注册、子主题后注册,后注册的排在后面,看起来就像位置被挤走。这一点先确认清楚,后面就不用反复试。
「add_action 优先级默认值」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
改完隔一天再看一次,当场正常不代表能稳住。
具体做法是,给面包屑回调显式写优先级,比如 5,比主题默认的 10 更早执行;用 has_action 查同一钩子上还有哪些回调,确认没有更早的;改完清一次页面缓存再刷新,钩子顺序不会即时反映在缓存页上。
改完照着核一遍,面包屑出现在标题下方,与相邻插件的前后关系符合预期。
