我有以下代码:
wp_register_script(\'parent\',\'parent.js\', array(\'child\'), \'1\', true);
wp_register_script(\'child\', \'child.js\', array(\'grandchild\'), \'1\', true);
wp_register_script(\'grandchild\', \'grandchild.js\', array(), \'1\', true);
wp_enqueue_script(\'parent\');
而且效果很好,渲染
grandchild.js
, 然后
child.js
, 然后
parent.js
在页脚中。
无论“在页脚中渲染”是真是假,仅父级和子级的每个组合都可以正常工作。但当我注册“child”以在head中呈现时:
wp_register_script(\'parent\',\'parent.js\', array(\'child\'), \'1\', true);
wp_register_script(\'child\', \'child.js\', array(\'grandchild\'), \'1\', FALSE);
wp_register_script(\'grandchild\', \'grandchild.js\', array(), \'1\', true);
wp_enqueue_script(\'parent\');
那么
child.js
在头部渲染,
parent.js
在页脚中呈现,
and grandchild.js
is not rendered at all ! 尽管它显然有依赖性。
在我看来像个虫子。Am I missing something? Shouldn\'t it work?
谢谢
最合适的回答,由SO网友:Dima Stefantsov 整理而成
这是一个bug 在Wordpress中。
https://core.trac.wordpress.org/ticket/35873
据我所知,目前可以用
https://core.trac.wordpress.org/attachment/ticket/35873/35873.3.patch, 如果您稍后阅读此内容,它可能已经为您的Wordpress版本修复。
作为临时解决方法,请将父依赖项同时设置为子依赖项和孙依赖项。这边grandchild.js
不会迷路:
wp_register_script(\'parent\',\'parent.js\', array(\'grandchild\', \'child\'), \'1\', true);
wp_register_script(\'child\', \'child.js\', array(\'grandchild\'), \'1\', FALSE);
wp_register_script(\'grandchild\', \'grandchild.js\', array(), \'1\', true);