J'ai du mal à comprendre quand vous devez utiliser wp_register_script()
. Actuellement, j'utilise quelque chose comme:
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
function enqueue() {
$handle = 'some-handle';
$js = 'http://example.com/my.js';
wp_register_script( $handle, $js );
wp_enqueue_script( $handle );
}
J'ai beaucoup lu (Codex, blogs, etc.), mais je ne comprends pas très bien quand je devrais m'inscrire en premier ou quand je devrais mettre en file d'attente. Par exemple, j'ai remarqué TwentyTwelve / n'enregistre pas de styles ou de scripts, il les met simplement en file d'attente.
La page wp_register_script()
Codex dit littéralement:
Un moyen sûr d’enregistrer les javascripts dans WordPress pour une utilisation ultérieure avec
wp_enqueue_script()
.
Cela signifie que si vous souhaitez enregistrer vos scripts sans les charger directement dans vos pages, vous pouvez enregistrer les fichiers une fois, puis les charger lorsque vous en avez besoin.
Par exemple:
Vous avez une instruction switch qui charge certaines fonctionnalités, mais deux cas sur trois nécessitent un fichier javascript particulier, et un non. Vous pouvez mettre le script en file d'attente à tout moment, ce qui coûte plus de ressources, ou simplement le faire quand vous en avez besoin:
...
wp_register_script( 'my-handy-javascript', ... );
...
switch( $somevar ) {
case 'value':
wp_enqueue_script( 'my-handy-javascript' ); // needs the file
...
break;
case 'value2':
wp_enqueue_script( 'my-handy-javascript' ); // needs the file
...
break;
default:
case 'value3': // doesn't needs the file
...
break;
}
Il n'est pas nécessaire d'enregistrer un script, puis de le mettre en file d'attente, mais cela peut fournir une certaine logique à votre code si vous enregistrez tous les scripts dont vous avez besoin quelque part dans votre functions.php
et non pas partout dans votre code.
Le Codex dit également ce qui suit:
Utilisez l'action
wp_enqueue_scripts
pour appeler cette fonction ouadmin_enqueue_scripts
pour l'appeler du côté de l'administrateur.
Cela signifie que si vous souhaitez mettre votre script en file d'attente sur le frond-end et dans le back-end, vous pouvez enregistrer un script une fois, puis le charger sur le front-end avec wp_enqueue_script
et à l'arrière. -end avec admin_enqueue_script
.
Ainsi, vous n’auriez pas le même recours en file d’attente deux fois dans un même thème, plug-in, widget ou autre.
IMHO le principal avantage d'utiliser wp_register_script
avant wp_enqueue_scripts
est illustré dans le paragraphe suivant de Codex :
Les scripts préenregistrés à l'aide de wp_register_script () n'ont pas besoin d'être mis en file d'attente manuellement à l'aide de wp_enqueue_script () s'ils sont répertoriés en tant que dépendance d'un autre script mis en file d'attente. WordPress inclura automatiquement le script enregistré avant d’inclure le script en file d'attente qui répertorie le descripteur du script enregistré en tant que dépendance.
Si vous pensez ne pas en avoir besoin (par exemple parce que vous êtes sûr à 100% que votre script ne sera impliqué dans aucune dépendance), vous pouvez probablement utiliser directement wp_enqueue_scripts
, sans un wp_register_script
préliminaire.
J'ai parcouru quelques articles et je tire la conclusion suivante. Je pense que ça aide.
une. Supposons que nous ayons besoin d’un script à charger dans plus d’un endroit, une fois en front-end et une fois en back-end (page admin). Nous pouvons maintenant enregistrer le script une seule fois. Et ensuite, mettez-le en file d'attente individuellement et séparément. Regardez, mettre en file d'attente signifie charger. Enregistrer ne signifie pas charger. Si nous ne l'enregistrons pas, il sera automatiquement enregistré autant de fois que nous le ferons en file d'attente. D'un autre côté, si nous l'enregistrons une fois, il sera enregistré une fois, peu importe le nombre de fois que nous l'enregistrons.
b. Si nous voulons utiliser un script en tant que dépendance d’autres scripts, nous n’avons pas besoin de le mettre en file d'attente avec wp_enqueue_script (). Il suffit de l'enregistrer avec wp_register_script (). Et il sera automatiquement mis en file d'attente lorsque nous utiliserons son nom de descripteur comme dépendance d'autres scripts mis en file d'attente avec wp_enqueue_script ().
Notez que la conclusion tirée ici reflète ma propre déduction. Si je me trompe, corrigez-moi s'il vous plaît. Et vous pourriez avoir atteint une conclusion différente et bien meilleure. Si tel est le cas, merci de nous le faire savoir. Qui sait? Peut-être que le vôtre est le meilleur. Comme dit le proverbe, "autant de principes, autant de manières de sauver." :)
https://sxbook.blogspot.com/2018/12/wpregisterscript-when-to-use.html