WordPress - Come aggiungere file e script JavaScript e/o link CSS personalizzati al pannello Admin

Permalink e URL semantiche su Wordpress con IIS

Un paio di giorni fa, subito dopo aver effettuato alcune importanti modifiche a un paio di blog che gestisco, mi sono imbattuto in un problema misterioso: improvvisamente il mio pannello di amministrazione non si riusciva più a caricare correttamente alcuni contenuti dinamici asincroni, come ad esempio il grafico di visite e accessi del "Site Stats" dashboard widget di Jetpack, ovvero l'indicatore di visite e accessi.

Al suo posto compariva infatti la classica "rotellina infinita" di caricamento:

Wordpress - Come aggiungere file e script JavaScript e/o link CSS personalizzati al pannello Admin

Seguita dal seguente errore in console:

admin-script.js?ver=1.0.0:17

Uncaught TypeError: jQuery(...).typeWatch is not a function

Il Problema

A quanto pare, qualcosa nelle varie operazioni che avevo fatto non era andata a buon fine, privando entrambi i siti del riferimento al plugin jquery.typewatch (che, per la cronaca, serve per analizzare i tempi di pressione dei tasti della tastiera da parte dell'utente) nonostante questo continui ad essere richiesto dal pannello admin di WordPress. Sfortunatamente, nonostante il ragionevole lasso di tempo speso a cercare di comprendere le ragioni della problematica, non sono riuscito a cavare un ragno dal buco in merito alle possibili cause.

La Soluzione

Nell'attesa di avere il tempo di ripristinare un backup funzionante del sito e ripercorrere i passaggi che hanno portato a questa situazione, ho applicato un workaround che mi ha consentito di risolvere temporaneamente il problema. Si tratta di una semplice funzione da aggiungere al file functions.php del proprio tema, che richiama a sua volta la funzione nativa wp_enqueue_script per aggiungere uno script JavaScript personalizzato alla pagina oggetto della request.

Per far sì che questa funzione venga eseguita in tutte le pagine del pannello di amministrazione, è sufficiente collegarla come event handler dell'apposito hook admin_enqueue_scripts nel seguente modo:

Aggiungendo queste righe di codice al file functions.php il plugin jquery.typewatch sarà caricato in tutte le pagine del pannello di amministrazione: in questo modo ho potuto risolvere agevolmente il mio problema. Se non sapete come modificare il file functions.php, sappiate che basta andare su Aspetto > Editor dal pannello di amministrazione di WordPress: nel caso in cui stiate utilizzando un tema figlio (child theme), cosa peraltro altamente consigliata se prevedete di effettuare modifiche al vostro tema, vi consiglio di dare un'occhiata a questo articolo per maggiori istruzioni.

Aggiungere file CSS

Pur non essendo strettamente legato al problema in esame, può essere utile sapere che è possibile utilizzare la stessa tecnica di cui sopra è possibile aggiungere anche file CSS. E' sufficiente utilizzare la funzione wp_enqueue_style in aggiunta o in sostituzione della funzione wp_enqueue_script utilizzata in precedenza, nel seguente modo:

Aggiungere JS e CSS a tutte le pagine

Nel caso non ci si voglia limitare alle pagine del pannello di amministrazione ma si voglia aggiungere uno script a tutte le pagine, è sufficiente sostituire l'hook admin_enqueue_scripts con wp_enqueue_scripts :

Per il momento è tutto: felice sviluppo!

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Il periodo di verifica reCAPTCHA è scaduto. Ricaricare la pagina.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.