Quand devrais-je utiliser wp_register_script () avec wp_enqueue_script () vs just wp_enqueue_script ()?

47

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 dois m'inscrire en premier ou quand je dois juste faire une mise en file d'attente. A titre d'exemple, j'ai remarqué que TwentyTwelve n'enregistre pas de styles ou de scripts, il les met simplement en file d'attente.

    
posée akTed 21.01.2013 - 15:36
la source

2 réponses

43

La page wp_register_script() Codex indique 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 mais que vous ne les chargez pas 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 mettre en file d'attente lorsque 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 apporter une certaine logique à votre code si vous enregistrez tous les scripts dont vous avez besoin quelque part dans votre functions.php plutôt que partout dans votre code.

Le Codex indique également ce qui suit:

  

Utilisez l'action wp_enqueue_scripts pour appeler cette fonction ou admin_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 les et extrémités frondes dans le back-end, vous pouvez enregistrer un script une fois, puis le charger sur le front-end avec wp_enqueue_script et dans le back-end avec admin_enqueue_script .
De cette façon, vous n'aurez pas deux fois le même recours en file d'attente dans un même thème, plug-in, widget ou autre.

    
réponse donnée Mike Madern 21.01.2013 - 15:47
la source
6

IMHO, le paragraphe suivant tiré de illustre le principal avantage d'utiliser wp_register_script avant wp_enqueue_scripts . Codex :

  

Les scripts qui ont été pré-enregistrés à l'aide de wp_register_script () do   pas besoin d’être mis en file d'attente manuellement avec wp_enqueue_script () s’ils le sont   répertorié comme une dépendance d'un autre script mis en file d'attente. WordPress   inclura automatiquement le script enregistré avant qu'il n'inclue   le script en file d'attente qui répertorie le descripteur du script enregistré en tant que   dépendance.

Si vous pensez que vous n'en avez pas besoin (par exemple, parce que vous êtes sûr à 100% que votre script ne sera impliqué dans aucune dépendance), vous pouvez probablement aller directement avec wp_enqueue_scripts , sans un préliminaire wp_register_script .

    
réponse donnée Franco 01.06.2017 - 21:43
la source

Lire d'autres questions sur les étiquettes