Ho lavorato a un piccolo progetto, più un’applicazione web che un sito, che richiedeva lo sviluppo sia di un tema personalizzato che di funzionalità strettamente accoppiate, ma molto specifiche.
Questo è un progetto molto ristretto (di cui probabilmente parlerò ad un certo punto in futuro), ma nel lavorarci mi ha costretto a tornare un po’ all’aspetto dello sviluppo del tema dello sviluppo di WordPress.
No, non sto facendo alcun design – per fortuna – ma devo lavorare sulle personalizzazioni dei temi da una prospettiva funzionale. Nel fare ciò, però, mi ha fatto rivisitare quanto richiesto functions.php
e alcune considerazioni che non avevo mai avuto prima.
Inoltre, mi ha indotto a guardare più in profondità l’uso mu-plugins
e a chiedermi quando sono necessari e perché non li ho usati di più in passato (o anche quando uno avrebbe veramente bisogno di usarli).
Quindi ho intenzione di diventare un po’ poetico su questo.
TL;DR
Quando stavo sviluppando lo sviluppo del tema, functions.php
è stato utilizzato per due cose (il che è problematico in sé e per sé) ma comunque:
- per abilitare o disabilitare le funzionalità nei temi,
- per definire la funzionalità specifica del tema.
Il Manuale per sviluppatori di temi recita:
Il
functions.php
file è dove aggiungi funzionalità uniche al tuo tema WordPress. Può essere utilizzato per collegarsi alle funzioni principali di WordPress per rendere il tuo tema più modulare, estensibile e funzionale.Funzioni dei temi, Manuale per sviluppatori di temi
E ho capito, ma dal mio punto di vista e poiché WordPress si è evoluto, penso che functions.php
dovrebbe essere dedicato a funzionalità specifiche del tema in termini di cose che si collegano direttamente al core come:
- funzionalità di personalizzazione,
- funzionalità del menu,
- registrazione dello script e dello stile,
- e così via.
Ma se c’è qualcosa che deve essere eseguito durante uno degli hook ed è più sulla falsariga della logica specifica del dominio, allora non appartiene a quel file.
Ciò solleva una domanda, tuttavia: dove risiedono le funzionalità specifiche del dominio?
Inserisci i plugin da usare
So che vedere cose come le inc
directory stanno diventando più comuni, ma non mi preoccupo di quelle quando si parla di sviluppo di temi, specialmente quando lo sviluppo di temi non è il mio obiettivo e quella particolare struttura di directory non è il mio stile.
Ad ogni modo, quando si tratta di soluzioni altamente specializzate (dove una soluzione è una combinazione di presentazione e funzionalità strettamente focalizzate), inizio a pensare a mu-plugins
.
E il motivo per cui non penso a un plug-in WordPress standard è perché generalmente sono progettati per funzionare con qualsiasi tema e per aggiungere funzionalità. Non così con mu-plugins
.
I plug-in da utilizzare (aka mu-plugin) sono plug-in installati in una directory speciale all’interno della cartella del contenuto e che vengono automaticamente abilitati su tutti i siti nell’installazione.
Plugin da usare, WordPress.org
Quindi ecco il mio processo di pensiero:
- I temi sono per la presentazione
- I plugin servono per la funzionalità.
- I plugin sono progettati per essere utilizzati indipendentemente da un tema e per l’ampiezza di un sito.
- I plug-in da utilizzare sono plug-in abilitati e utilizzati per impostazione predefinita
- Pertanto, la logica specifica del dominio per una soluzione specializzata dovrebbe risiedere in un plug-in da utilizzare.
Certo, si può sostenere che alcuni temi potrebbero richiedere funzionalità da utilizzare, ma non si adatta ancora all’idea che la funzionalità dovrebbe risiedere in un plug-in da utilizzare?
In ogni caso, l’approccio che ho seguito è questo:
- La funzionalità che associa in modo specifico le funzionalità del tema al core di WordPress entra in
functions.php
. - La funzionalità che è logica di dominio ma richiede che l’intera soluzione funzioni risiede in un file
mu-plugin
.
A questo punto della mia carriera, non faccio molto lavoro che si concentri su nient’altro che il back-end, ma nelle rare opportunità che ho di ampliare il lavoro che sto facendo, scopro che sto ancora cercando di essere come analitico e premuroso sul modo in cui sto costruendo il progetto.