web-dev-qa-db-fra.com

wp_enqueue_script avec dépendances ne fonctionne pas

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!

2
Dima Stefantsov

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