Un plugin in WordPress è uno script PHP che stende o altera una funzionalità del core del CMS. Sono dei file installati nel CMS che aggiungono una caratteristica o un insieme di caratteristiche.
I plugin in WordPress possono essere di ogni tipo e con ogni livello di complessità, da un semplice plugin per la gestione dei font ad un sistema più elaborato come un e-commerce. Vediamo come i plugin interagiscono con WordPress.
Plugin: come interagiscono con WordPress
WordPress mette a disposizione differenti APIs per lo sviluppo di un plugin che aiutano ad interagire con il CMS in più modalità. Vediamo quali sono:
- Plugin: provvedono una serie di hooks che abilitano plugin per accedere a parti specifiche del CMS. WordPress ha due differenti tipi di hooks: Action e Filtri. Gli action hook (hook di azione) permettono di effettuare trigger personalizzati in punti specifici del codice durante la loro esecuzione; ad esempio eseguire una funzione dopo che l’utente si è registrato. Mentre i filtri modificano il testo prima di essere aggiunto o subito dopo essere stato estratto dal database;
- widget: permettono sia di creare sia di gestire i widget all’interno di un plugin. I widget servono per aggiungere una sidebar registrata all’interno del nostro tema. Le APis permettono di abilitare instance multiple dello stesso widget da utilizzare nelle sidebar;
- shortcode: uno shortcode è un hook che chiama una funzione PHP tramite una sintassi del tipo [shortcode] da aggiungere ad un post o pagina;
- HTTP: invia richieste HTTP da un plugin. Questo tipo di API recupera contenuti da URL esterni o per l’invio di contenuti a un URL;
- REST API: permette ad un programmatore di interagire con WordPress da remoto inviando e ricevendo JSON (JavaScript Object Notation). Possiamo eseguire operazioni CRUD (creare, leggere, aggiornare ed eliminare) all’interno di WordPress;
- Settings: possiamo inserire delle impostazioni o un’area con una serie di impostazioni per un plugin. La prima motivazione per utilizzare le setting API è la sicurezza, in quando non dobbiamo preoccuparci di attacchi CSRF o XSS;
- Options: permettono di archiviare e recuperare le opzioni per un plugin. Le API danno la possibilità di creare nuove opzioni, aggiornare quelle già esistenti, eliminarle o recuperare nuove opzioni già definite;
- dashboard widget: permette di creare un pannello di controllo dei widget. I widget automaticamente appaiono nel back-end di WordPress e contengono le configurazioni standard;
- rewrite: permette di creare delle regole di riscrittura nel nostro plugin. Questa API ci permette di aggiungere parti di URL statiche (/esempio-pagina/), strutture di tag (%postname%) e link di feed (/feed/json/);
- transients: permettono di creare opzioni temporanee nel nostro plugin, sono API simili alle Options ma tutte le opzioni ha una data di scadenza.
- database: permettono di accedere al database di WordPress con azioni di tipo CRUD (create, update, delete e recupero dei record del database da utilizzare nel nostro plugin);
- theme customization API: permettono di aggiungere opzioni personalizzate del sito web e del tema, direttamente nel WordPress Customizer.
Quelle sopra riportate non sono tutte le API disponibili nel core di WordPress, per vedere la lista completa possiamo visitare: https://make.wordpress.org/core/handbook/best-practices/core-apis/
Quando un plugin viene caricato?
Nell’immagine sotto vediamo un diagramma del processo standard di caricamento di una pagina in WordPress, l’ordine secondo cui vengono caricati file e funzioni.
WordPress mette inoltre a disposizione le funzioni pluggable che ci permettono di sovrascrivere funzioni core nel plugin. Ad esempio
wp_mail()
è una pluggable function e possiamo modificare questa funzione nel nostro plugin ed inviare email usando “Simple Mail Transfer Protocol (SMTP)” al post del metodo di default. Tutte le funzioni di questo tipo sono presenti nel file /wp-includes/pluggable.php.