Qual è la differenza tra wp_enqueue_script() e wp_register_script() in WordPress?

Quando sviluppiamo in WordPress è necessario gestire correttamente il caricamento di script e fogli di stile.

A questo scopo, WordPress mette a disposizione due funzioni principali: wp_register_script() e wp_enqueue_script().

Spesso vengono confuse, ma hanno ruoli distinti e complementari.

wp_register_script(): registrazione dello script

La funzione wp_register_script() serve a registrare uno script all’interno di WordPress, che verrà poi messo in coda tramite la funzione wp_enqueue_script().

Bisogna specificare l’handle (un nome univoco) e le relative informazioni, come percorso, dipendenze e versione.

In pratica, si dice a WordPress: “Questo script esiste, e se in futuro qualcuno vorrà utilizzarlo, ecco i dettagli per caricarlo”.

Sintassi:

wp_register_script(
    string $handle,
    string $src,
    array $deps = array(),
    string|bool|null $ver = false,
    array|bool $args = false
);

$handle: identificativo unico dello script (es. my-script).

$src: percorso del file JS.

$deps: array di dipendenze (es. array('jquery')).

$ver: versione dello script.

$args: se true, lo script viene caricato nel footer.

Se viene definito come array, può contenere

  • strategy
    • 'strategy' => 'defer'
    • 'strategy' => 'async'
  • in_footer‘: se true, lo script viene caricato nel footer.

Esempio:

wp_register_script(
    'my-script',
    get_template_directory_uri() . '/js/my-script.js',
    array('jquery'),
    '1.0.0',
    true
);

Questo codice registra lo script ma non lo carica ancora nella pagina.

wp_enqueue_script(): messa in coda dello script

La funzione wp_enqueue_script() invece serve a mettere in coda uno script, cioè a dire a WordPress che lo script deve essere effettivamente caricato nella pagina.

Sintassi:

wp_enqueue_script(
    string $handle,
    string $src = '',
    array $deps = array(),
    string|bool|null $ver = false,
    bool $in_footer = false
);

Se lo script è già stato registrato con wp_register_script(), basta passare solo l’handle.

wp_enqueue_script('my-script');

Se invece non è stato registrato in precedenza, wp_enqueue_script() può anche registrarlo e caricarlo in un’unica operazione.

wp_enqueue_script(
    'my-script',
    get_template_directory_uri() . '/js/my-script.js',
    array('jquery'),
    '1.0.0',
    true
);

In questo caso, la registrazione e la messa in coda avvengono contemporaneamente.

Riassumendo

wp_register_script() prepara lo script, lo rende disponibile a WordPress, ma non lo carica.

wp_enqueue_script() mette lo script in coda per il caricamento effettivo nella pagina.

Quando usare wp_register_script()?

L’uso di wp_register_script() è utile quando:

  • Uno script potrebbe essere usato in più parti del tema o plugin, ma non sempre caricato.
  • Si vuole lasciare che altri plugin o temi decidano se metterlo in coda.

Sponsor

Vhosting
themeforest