J'ai ce code:
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');
et cela fonctionne très bien, en rendant grandchild.js
, puis child.js
, puis parent.js
dans le pied de page.
Chaque combinaison de parent et d’enfant fonctionne correctement, quels que soient TRUE ou FALSE "rendu en pied de page". Mais quand j'enregistre "child" pour être rendu en tête à la place:
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');
Alors, child.js
est rendu en tête, parent.js
est rendu en pied de page, et grandchild.js
n'est pas rendu du tout! Même s'il y a évidemment une dépendance pour cela.
Ça ressemble à un insecte pour moi. Est-ce que je manque quelque chose? Ça ne devrait pas marcher?
Merci!
C'est un bug dans Wordpress.
https://core.trac.wordpress.org/ticket/35873
Pour autant que je sache, il peut actuellement être corrigé avec https://core.trac.wordpress.org/attachment/ticket/35873/35873.3.patch , si vous lisez ceci quelques temps plus tard, probablement déjà été corrigé pour votre version Wordpress.
En guise de solution de contournement temporaire, définissez les dépendances parent sur l'enfant et le petit-enfant. De cette façon, grandchild.js
ne sera pas perdu:
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);