Recentemente mi sono trovato nella situazione di avere uno script javascript personalizzato da dover utilizzare solo nell’area admin di WordPress. Questa è una situazione particolare, esistono più strade possibili ma, nel mio caso, ho scelto di utilizzare il file functions.php del child-theme assieme alle funzioni native di WordPress, in questo caso l’admin enqueue scripts.

Scopo di questo articolo è presentare come caricare un custom script JS, che richiede la libreria jQuery (già presente di default in WordPress), e utilizzarlo solo in determinate pagine del backend (in questo caso nelle pagine edit.php). La soluzione è, a mio parere, decisamente migliore rispetto alla creazione di un plugin.

Se non utilizzate un child-theme (cosa molto sconsigliata), potete utilizzare direttamente il file functions.php del tema utilizzato. Per utilizzare il child-theme vi basterà copiare (e svuotare) il file functions.php dal tema padre al child-theme, per la creazione di un child-theme consiglio di seguire la guida a questo indirizzo https://codex.wordpress.org/it:Temi_Child.

function my_enqueue($hook) {
if( 'post.php' != $hook ) return; // Carica solo nelle pagine post.php
wp_register_script( 'nomeRegistro', get_template_directory_uri() . '/nomefile.js', array('jquery'), '1.0', true);
wp_enqueue_script( 'nomeRegistro' );
}

add_action( 'admin_enqueue_scripts', 'my_enqueue' );

Si crea la funzione chiamata my_enqueue (qualsiasi nome va bene, basta riutilizzarlo dove necessario) dando come parametro il valore $hook. Successivamente si può utilizzare un if in caso si voglia inserire lo script solo in determinate pagine, in questo caso solo nel post.php (attenzione che è differente da post-new.php). Successivamente lo script viene registrato e messo in coda, la differenza tra register e enqueue è che register scrive nel registro la presenza dello script ma non lo allega al template, enqueue invece lo aggiunge al template e lo rende effettivo. Per poter utilizzare il proprio script è necessario solo l’enqueue.

In questo caso inoltre, come si vede da wp_register_script( ‘nomeRegistro’, get_template_directory_uri() . ‘/nomefile.js’, array(‘jquery’), ‘1.0’, true); oltre al nostro file js, abbiamo richiesto di pre-caricare jquery, in modo da utilizzarlo direttamente nel file js senza altri richiami.

Fate attenzione al path che date per caricare il vostro file js, se utilizzate la funzione get_template_directory_uri() farà riferimento all’indirizzo del tema padre (anche se viene utilizzato il child-theme). Potete ovviamente dare un indirizzo assoluto ma potrebbe crearvi problemi nel caso di modifiche, aggiornamenti o cambio del template.

Link utili:

Spero possa essere utile, per qualsiasi problema scrivete un commento.

Andrea Vigato

Author Andrea Vigato

freelance | creazione siti web | consulenza aziendale

More posts by Andrea Vigato