I Must Use plugins di WordPress
  • Post last modified:18 Maggio 2020
  • Post category:Sviluppo
  • Post comments:0 Commenti

Cosa sono

Con l’espressione “Must Use” non ci riferiamo a plugin particolarmente diffusi e di ottima qualità che noi utenti dovremmo utilizzare, ma a plugin che WordPress deve necessariamente caricare e attivare. Sempre, a qualsiasi costo.

Nascono tanto tempo fa come sistema per forzare la distribuzione di determinate funzionalità su tutti i siti di un WordPress “Multi User”. Successivamente WordPress diventa “Multisite” e modifica la gestione dei plugin globali. I plugin “Multi User” cambiano quindi nome in “Must Use” e la loro funzionalità viene resa disponibile anche per i singoli siti. Allora come oggi, ci si riferisce ad essi con il nome breve di MU-Plugins.

Come sono fatti

Gli MU-Plugins sono costituiti, nella forma minima, da un file PHP contenente un header informativo e il codice del plugin. Ad esempio:

<?php

    /**
     * Plugin Name: Test MU Plugin
     * Description: WordPress customizations
     * Version: 1.0.0
     * Author: Andrea Porotti
     * Author URI: https://www.andreaporotti.it
     */

    // codice del plugin...

?>

L’header è simile a quello di un plugin tradizionale e consente a WordPress di recuperare le informazioni da mostrare nella dashboard.

Per quanto riguarda il codice, bisogna tenere in considerazione due fattori importanti:

  • questi plugin vengono eseguiti in ordine alfabetico e prima di quelli tradizionali
  • questi plugin non possono utilizzare gli “activation hooks”, per intenderci quelli che consentono di eseguire attività specifiche in occasione dell’installazione, disattivazione e rimozione del plugin.

Installazione, aggiornamento, rimozione

I file di questi plugin devono essere posti nella cartella /wp-content/mu-plugins/.

La cartella mu-plugins deve essere creata manualmente in quanto non facente parte della struttura di default di WordPress.

I file PHP devono risiedere direttamente nella cartella mu-plugins: il meccanismo, infatti, non prevede sotto-cartelle dedicate come accade per i plugin tradizionali.

Must Use plugins: struttura delle cartelle.

Nel caso in cui un plugin sia composto da più file o si preferisca avere una cartella per ciascun plugin, si può ovviare creando un file PHP nella cartella mu-plugins che si occuperà esclusivamente di includere i file di tutti i plugin dalle rispettive cartelle.

Come si può intuire, il processo di installazione consiste nella copia manuale dei file nella cartella dedicata, ad esempio via FTP. Per gli MU-Plugins non è previsto il download dalla directory dei plugin, nè la notifica di aggiornamento. La disinstallazione, infine, si effettua semplicemente eliminando i file del plugin dalla cartella.

Vista dalla dashboard

Gli eventuali MU-Plugins installati sono visibili in una sezione specifica dell’elenco dei plugin, solitamente nascosta.

Must Use plugins: visualizzazione nella dashboard.

Ai due filtri standard, “Totali” e “Inattivi”, si aggiunge “Obbligatori”.

Il messaggio posto subito dopo i filtri ci conferma che questi plugin, quando presenti, sono sempre attivi.

Se poi guardiamo l’elenco ci accorgiamo di una delle caratteristiche più importanti: gli MU-Plugins non possono essere disattivati nè rimossi dalla dashboard. A parte le classiche informazioni, infatti, mancano del tutto i link che permettono queste due azioni.

Quando usarli

Considerate le particolarità di questo genere di plugin, le possibilità di utilizzo vanno attentamente valutate. Alcune limitazioni ne fanno certamente uno strumento “di nicchia”.

Ecco un paio di occasioni in qui potrebbero essere utili e in cui mi è effettivamente capitato di utilizzarli:

  • implementazione di funzionalità che devono essere necessariamente attive. Ad esempio modifiche alla procedura di login, personalizzazioni alla pagina di login o alla dashboard, registrazione di Custom Post Type. Con un MU-Plugin siamo sicuri che nessuno possa disattivare volutamente o per errore il nostro plugin e danneggiare il sito.
  • implementazione di funzionalità a livello di sito, quindi indipendenti dal tema e dal classico file functions.php. Una eventuale sostituzione non influisce sul nostro codice e non ci costringe a spostarlo dal vecchio al nuovo tema.

Altre idee in merito? Fammi sapere nei commenti.

PS: la documentazione ufficiale è piuttosto scarna, ma se ti interessa trovi un articolo a questo indirizzo.

Lascia un commento