web-dev-qa-db-ja.com

依存関係を含むwp_enqueue_scriptが機能しない

私はこのコードを持っています:

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をフッターにレンダリングして、うまくいきます。

TRUEまたはFALSEの 'フッターでのレンダリング'にかかわらず、親と子だけのあらゆる組み合わせがうまく機能します。しかし、頭の中にレンダリングされるように 'child'を登録すると、次のようになります。

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はフッターに描画されます。 そしてgrandchild.jsはまったく描画されません。 明らかに依存関係がありますが。

私にとってはバグのように見えます。 なにか足りない?うまくいかないでしょうか。

ありがとうございます。

2
Dima Stefantsov

これは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);
2
Dima Stefantsov