web-dev-qa-db-fra.com

wp_enqueue_script vs wp_register_script

Essayer de faire la bonne chose ici, et m'attacher à un nœud! Donc, dans mon header.php avant le wp_admin, j'ai:

wp_enqueue_script('commonfunctions', child_template_directory . '/script/commonfunctions.js', array('jquery', 'jquery-ui-draggable'), '1.0', true);

qui fonctionne. Fondamentalement, j'ai un fichier js personnalisé qui nécessite jquery et jqueryui comme dépendances. Depuis, j’ai retiré jquery car il semble avoir été chargé deux fois de manière indépendante. J'avais aussi une fonction accrochée à 'init' dans functions.php, mais cela ne semblait pas avoir d'avantage?

Je souhaite inclure le script de validation à partir de CDN, car ce sera également une dépendance de mon script personnalisé. J'ai pensé enregistrer le script comme suit:

wp_register_script('validate', 'http://ajax.Microsoft.com/ajax/jQuery.Validate/1.6/jQuery.Validate.min.js', true);

puis ajoutez 'validate' au tableau des dépendances en file d'attente, comme suit:

wp_enqueue_script('commonfunctions', child_template_directory . '/script/commonfunctions.js', array('jquery', 'jquery-ui-draggable', 'validate'), '1.0', true);

dans cet ordre, jquery est aussi une dépendance de valider. Phew! Cela ne fonctionne pas, je ne comprends évidemment pas quelque chose - aidez-moi, s'il vous plaît, à résoudre ce que j'essaie de faire ici ...

2
Richard Lane

Je pense que vous devriez juste mettre le script également en file d'attente (pour votre script de validation). Je voudrais envelopper une fonction entière ainsi pour éviter le problème # 11526 : appeler

Ainsi tous ensemble:

<head>
...
<?php 

function mytheme_enqueue_script() {
// Load jQuery
wp_enqueue_script('jquery');
// Load draggable
wp_enqueue_script('jquery-ui-draggable');
//load your script
wp_enqueue_script('commonfunctions', child_template_directory . '/script/commonfunctions.js', array('jquery', 'jquery-ui-draggable'), '1.0', true);
// Load validate
wp_enqueue_script('validate','http://ajax.Microsoft.com/ajax/jQuery.Validate/1.6/jQuery.Validate.min.js', array('jquery'), true);
}

add_action('wp_enqueue_script', 'mytheme_enqueue_script');

Désolé, je n'ai pas encore testé cela. Donc je peux être éteint.

2
chrisjlee

Depuis, j’ai retiré jquery car il semble avoir été chargé deux fois de manière indépendante.

Cela ne devrait pas arriver et est probablement causé par un autre code (pauvre) actif.

Votre enregistrement true est erroné dans l'enregistrement validate - après que le code source des sources vient et le tableau true n'a pas de sens.

Sinon, cela semble bien en général. Fonctionne à partir d'un test rapide. Pourriez-vous décrire plus précisément quoi et comment "ça ne marche pas"?

1
Rarst