Conflitti in wordpress

Dopo un sacco di tempo torno a parlare di WordPress, il CMS amato incondizionatamente da tutti, anche dai Joomla Addicted (loro però ancora non lo sanno). In questo nuovo post non sapevo veramente cosa scrivere, recentemente ho imparato un sacco di cose nuove e vorrei condividerle tutte con te, ma non ho il tempo materiale per scrivere tutto, per cui ho dovuto effettuare un’accurata cèrnita e decidere. 

In questo ultimo periodo, sto sviluppando un template con pagina di setup e widget personalizzati per un cliente. All’interno delle opzioni del template e dei widget ho inserito un form che permette di caricare un’immagine che verrà poi inserita nel template dinamicamente senza scrivere nessuna riga di codice HTML.

Per fare l’upload dei contenuti multimediali bisogna richiamare all’interno del backend alcuni script e fogli di stile non inclusi di default.

Richiamare risorse nel backend di wordpress

Richiamare queste risorse è semplicissimo, basterà usare le funzioni wp_enqueue_script e wp_enqueue_style all’interno del file functions.php come nell’esempio che segue:

Nello snippet qui sopra richiamo i seguenti file:

  • Thickbox (JS) – Gestisce la finestra che si apre al momento del caricamento delle immagini, comprese funzioni di Drag&Drop e compagnia
  • Thickbox (CSS) – Fornisce gli stili alla finistra
  • Media-Upload (JS) – Fornisce tutto il necessario per gestire l’upload, compresa la validazione del formato caricato
  • File JS personale – Fornirà agli altri file richiamati i parametri di cui hanno bisogno per visualizzare correttamente la finestra di upload

Una volta salvato il file avrai caricato script e fogli di stile in tutto il backend, ma questo creerà dei conflitti con altre funzioni di WordPress, come ad esempio il pulsante “Aggiungi Media”.

Come evito il conflitto?

Non me la sono mai posta veramente questa domanda, ero fiducioso del fatto che nel cuore di WordPress ci fosse una funzione adatta allo scopo e avevo perfettamente ragione. Il conflitto lo eviti usando la funzione get_current_screen().

Maggiori informazioni sulla funzione le trovi sul codex.

Questa funzione restituisce un oggetto che contiene svariate informazioni sulla pagina su cui stiamo lavorando, come ad esempio:

  • ID
  • Post Type
  • Azioni (aggiungi, edit, ecc.)
  • Tassonomia
  • ecc.

Nel caso volessi richiamare i file necessari all’upload solo nella pagina dei widget dovrei scrivere la seguente condizione:

La stessa medesima struttura, cambiando ovviamente la condizione da soddisfare, la dovrai riportare nella pagina di setup o nel file del tuo plugin.

Completiamo l’opera

Per completezza inserisco anche il resto della funzione che mi permette di richiamare gli script e gli stili esterni:

Modificando a dovere la funzione swd_enqueue sarà facilissimo includere risorse esterne senza creare conflitti all’interno della piattaforma.

Non male vero? Hai qualche dubbio? Fammelo sapere nei commenti