Come creare plugin WordPress

23 Maggio 2010Scritto da mario21

Mi servo del week end per introdurre un articolo su come creare plugin WordPress. Essendo Wp un Cms open source esiste una comunità altrettanto “open” che sviluppa quotidianamente plugin per scopi professionali e/o personali condividendoli con il modo intero. Girando un po’ nel web che parla italiano, ci sono una serie di indicazioni ma spesso poco chiare e frammentate, ma soprattutto forniscono indicazioni da automa (fai questo, poi quello) senza spiegare la giusta teoria e struttura base che permetterà al neo-sviluppatore di camminare su due piedi da subito. Partendo dal presupposto che WordPress ha come base di estensibilità una stragrande maggioranza di funzionalità di un portale, tutto il resto può essere implementato attraverso la realizzazione di un plugin WordPress.

Cosa ho bisogno di sapere prima di iniziare a creare plugin WordPress?

  • Conoscenza base del linguaggio PHP;
  • Conoscenza di SQL se il vostro plugin prevede interazioni con il database;
  • Conoscenza del repository di WordPress (che vedremo più giù).

Se avete un po’ di pazienza, leggendo attentamente questo articolo non vi servirà altro per iniziare a creare il vostro primo plugin per WordPress.

Regole da seguire

Per essere accettato, il vostro plugin deve seguire dei piccoli standard di conformità:

  • Compatibilità GPL (clicca qui per maggiori informazioni);
  • Il plugin non deve essere scritto per scopi illegali, offensivi e/o immorali;
  • Per la programmazione utilizzare il repository di WordPress che più in basso vedremo insieme (non sono ammesse funzioni arbitrarie del PHP, esempio: mysql_connect() o mysql_query());
  • Non sono ammessi collegamenti a link esterni o powered by “link”, basta fare esplicita richiesta di permesso per poter usufruire di un “ritorno mediatico“;

Iniziamo!

Creando una cartella all’interno della directory “plugins” (in wp-content), rinominandola col nome del vostro plugin e senza spazi. Dopodiché passiamo alla creazione del nostro primo file PHP. Esso dovrà contenere un’intestazione di base che servirà a WordPress per riconoscere che si tratta di un plugin, per cui scrivere immaediatamente in cima la seguente sintassi:

/*
Plugin Name: Nome del plugin Plugin 
URI: Url del plugin 
Description: Descrizione 
Author: Nome dello sviluppatore Version: Numero di versione (es. 1.0) 
Author URI: Sito web personale
*/

Questo è il file principale della vostra prima applicazione le cui informazioni verranno visualizzate nella sezione “plugin installati” del pannello di controllo ottenendo una visualizzazione simile alla seguente:
Come creare un plugin wordpress

  1. Nome del plugin;
  2. Descrizione;
  3. Autore;
  4. Link al plugin.

Ingegnerizzare il codice

E’ molto importante, soprattutto se si scrive un plugin abbastanza complesso fatto di parecchi file catalogare gli stessi in delle categorie di appartenenza, per la mia esperienza con i plugin WordPress sono solito creare oltre al file principale altri file suddivisi secondo un mio personale ordine logico:

  • scripts.php che contiene le chiamate agli script;
  • hooks.php all’interno del quale inserisco le funzioni, i metodi, le azioni ed filtri per “intromettermi” nei processi di wordpress;
  • functions.php all’interno del quale scrivo il codice per il front-end;
  • menu.php che contiene i le funzioni di chiamata ai menu personalizzati;
  • script/ la cartella che contiene eventuali script;
  • css/ la cartella che contiene eventuali css;

Hooks, cosa sono?

Se state iniziando a prendere confidenza con il repository di wordpress, sicuramente dovete mettervi in testa questa parola, poiché utilizzerete un “uncino” (hook) praticamente sempre, se vi cimentate nella realizzazione di plugin con WordPress. E’ possibile, infatti, letteralmente “agganciare” un’azione che WordPress compie durante la sua vita: autenticarsi è un’azione, consultare un articolo è un’azione, effettuare il logout è un’azione, insomma, è possibile modificare ogni azione che un utente compie nella navigazione.

Gli hook ci consentono di personalizzare particolari eventi di default di WordPress, con azioni custom.

Esempio: ogni volta che qualcuno pubblica un post, voglio inviare una mail al mio indirizzo di posta elettronica:

function mario_sendMail(){
   mail("info@marioconcina.it", "Notifica su Marioconcina.it", "Ciao, è stato inserito un nuovo post su marioconcina.it");
}
add_action('publish_post', 'mario_sendMail');

add_action è una funzione mnemonica del repository di wordpress, lavora esattamente nel modo in cui si legge, in questo caso: appena viene effettuata l’azione ‘publish_post’ parte la mia funzione ‘mario_sendMail’, semplice no? In questo modo non dobbiamo abbassarci più di tanto per capire a fondo cosa accade e cercare fisicamente la funzione “publish_post” per modificarla nel suo core.

Bene! Già questo assaggio di script potrebbe essere un primo plugin ma sarebbe troppo riduttivo se ci fermassimo qui, considerato il repository di WordPress un oceano in continuo movimento.

Chiaramente gli hooks sono tantissimi ed è impossibile tenerli tutti a mente per cui vi segnalo un’ottima risorsa da cui attingere per cercare “l’aggancio” che fa al caso vostro: http://adambrown.info/p/wp_hooks/hook o se volete andare sul sicuro, dalla documentazione ufficiale di WordPress: https://codex.wordpress.org/Plugin_API/Action_Reference.

Query ed interazioni con il database

Anche qui abbiamo una serie di metodi già pronti per effettuare query ed aggiornamenti di ogni tipo. Sostanzialmente WordPress offre una variabile globale da richiamare ogni volta abbiamo bisogno di relazionarci con il database, si chiama $wpdb, ma vediamo alcuni esempi:

query('insert into'); //utilizza query per operazioni di tipo inserimento, aggiornamento, cancellazione

//per selezionare un singolo record è indicata la funzione get_row()
$prelievo = $wpdb->get_row('select * from table where id = ' . $id);
echo $prelievo->nome; //nome corrisponde al campo che voglio stampare;

//per stampare una serie di record utilizzare la funzione get_results
$risultati = $wpdb->get_results('select * from table');
foreach($risultati as $risultato){
       echo $risultato->nome;
}

Queste sono solo una serie di funzioni che potete consultare nella documentazione ufficiale di WordPress, se invece abbiamo a che fare con tabelle già esistenti (ad esempio wp_options) possiamo sfruttare i metodi già esistenti per estrarre dati:

add_option("chiave", "valore"); //aggiunge un record alla tabella wp_option
update_option("chiave", "valore"); //aggiorna un record della tabella wp_option
remove_option("chiave", "valore"); //elimina un record dalla tabella wp_option
get_option(''chiave"); //fornita in input la chiave restituisce il rispettivo valore

Insomma, le funzioni sono davvero tante e ci facilitano la vita!

Gestione dei menu

Se avete capito il meccanismo degli hooks inserire un menu personalizzato nel pannello di controllo wordpress è un gioco da ragazzi:

function marioMenu(){
    add_menu_page('Mario Plugin', 'Mario Plugin', 'administrator', 'MarioPlugin', 'MarioPlugin');
    add_submenu_page('Inserimento', 'Inserimento', 'Inserimento', 'administrator', 'MarioInserimento', 'MarioInserimento');
}
add_action('admin_menu', 'marioMenu');

Ho costruito la mia funzione marioMenu(), applicando un “hook”, al momento che WordPress costruisce il menu si ricorda che deve accodare a tutto il resto anche il mio. Per aggiungere le voci ho utilizzato 2 funzioni:

add_menu_page(TITOLO PAGINA, TITOLO DEL MENU, LIVELLO DI ACCESSO, SLUG, FUNZIONE CHE RICHIAMA LA VOCE, URL ICONA OPZIONALE);
/*add menu page è l'intestazione del nostro menu, il suo rispettivo collegamento ipertestuale sarà legato alla funzione
che gli diamo in pasto come ultimo parametro non opzionale.*/

add_submenu_page(PARENT SLUG, TITOLO PAGINA, TITOLO MENU, LIVELLO DI ACCESSO, SLUG, FUNZIONE);
//Aggiunge il sotto menu al menu appena creato

add_options_page('My Plugin Options', 'My Plugin', 'manage_options', 'my-unique-identifier', 'my_plugin_options');
//Questa funzione viene utilizzata se non si vuole inserire un menu dedicato ma far accodare la voce di menu, ad esempio ad "Impostazioni".

Includere css e script

E’ possibile che il nostro plugin necessiti di inclusioni css e/o javascript, niente paura anche per queste cose il repository offre delle funzioni niente male, prima di tutto se si tratta di jQuery, ThickBox e altre librerie abbastanza diffuse, WordPress le porta già con se:

wp_enqueue_script('jquery');
wp_enqueue_script('thickbox');

Senza nemmeno preoccuparci di dover inserire fisicamente questi file, WordPress è cosi gentile da prestarci i suoi.

Se invece dovessimo inserire funzioni custom, basta includere fisicamente il file e richiamarlo cosi:

wp_enqueue_script('marioControlli', 'scripts/controlli.js', '');
//il primo campo etichetta un nome indicativo, il secondo include il file mentre il terzo è opzionale

Per i css, invece:

wp_enqueue_style('marioStyle', 'css/mario.css');

Questa è una regola che vale anche per la realizzazione di temi WordPress.

Caricare il plugin sul repository ufficiale di WordPress

Come inviare il plugin a WordPress? Basta registrarsi, accedere alla seguente pagina: http://wordpress.org/extend/plugins/add/ e, se il plugin rispetta tutte le regole di conformità entrerà a far parte della grande comunità di WordPress.

Accorgimenti

Utilizzate nomi di cartelle, funzioni e variabili con prefisso del vostro plugin, esempio:
Nome del plugin: Mario Newsletter
Nome cartella: mario_newsletter
Nome di pagine: mario_invia.php
Nome di funzione: mario_invia();
Nome di variabile: $mario_users;

Cosi facendo si evitano conflitti. Questo accade poiché ci possono essere plugin che utilizzano nomi di funzioni, files, variabili più o meno comuni. Sembra una sciocchezza ma è un accorgimento che evita problemi maggiori;

Utilizzate le classi per evitare conflitti;

Cercate di creare meno tabelle possibili, agganciatevi finchè potete a quelle esistenti (è possibile sfruttare la tabella wp_options per i settaggi “chiave-valore”).

Conclusioni

Come avete visto creare plugin WordPress non è poi chissà quale impresa di programmazione, basta seguire piccole accortezze e prendere confidenza con il vasto repository.

Lascio aperti i commenti per rispondere ad eventuali chiarimenti e delucidazioni vista la lunghezza dell’articolo.

Scritto da mario

Agile web e mobile developer, attraverso il blog mette in campo l'esperienza acquisita quotidianamente sul mondo del lavoro.

21 comments

  • Pingback: Tweets that mention Come creare un plugin wordpress | Mario Concina - WEB DEVELOPER BLOG -- Topsy.com

  • Wp tech

    29 Maggio 2010 at 8:12

    per iniziare va più che bene questa guida. in pochi punti spiega step by step tutto ciò che di teorico c’è da sapere. ben fatto 😉

    Reply

  • Paki Romita

    31 Maggio 2010 at 19:01

    Guida assolutamente interessante, prima di iniziare a ‘montare’ basterebbe leggersi una piccola lezione teorica come questa.

    Reply

  • Pmq

    7 Giugno 2010 at 3:46

    good!

    Reply

  • Anonymous

    13 Giugno 2010 at 18:33

    Spesso wordpress non è tanto ferreo nel far seguire le sue regole di repository.

    Reply

  • Principiante

    9 Dicembre 2010 at 2:03

    non c’è un file d’esempio per un principiante???

    Reply

  • Ciro

    29 Dicembre 2010 at 12:18

    Mi è capitato di trovare plugin che inseriscono un link al sito del produttore in basso nella parte finale della hompage del mio blog.
    Come è possibile fare questo?
    GRAZIE

    Reply

  • admin

    30 Dicembre 2010 at 9:35

    La hook per modificare il footer dovrebbe essere “get_footer”. Nell’articolo ho rilasciato un link che riporta una lista di hook per ogni necessità, insomma, c’è un hook per tutto 🙂

    Reply

  • Carla

    5 Settembre 2011 at 12:06

    Buongiorno, questo articolo è davvero fantastico, complimenti.
    Volevo solo un’informazione ulteriore:

    ho creato in jquery un modulo che permette all’utente di cambiare il colore di background. Sto diventando pazza perchè non riesco ad integrarlo al mio tema di WP. Allora, considerato che stavo per gettare la spugna, mi è venuto in mente di “trasformarlo” in plugin. E’ possibile? premetto che non ho alcune esperienza in merito 🙂

    Grazie ancora!

    Reply

    • Mario Concina

      10 Settembre 2011 at 11:46

      Certo che è possibile, segui la guida e con le funzioni che offre wp puoi farlo tranquillamente.

      Reply

  • eBookLuke

    21 Dicembre 2012 at 6:36

    Se volessi aggiungere un semplice pannello di controllo al plugin per variare alcune impostazioni, come dovrei fare? Intendo: se nell’esempio dell’invio mail volessi mettere un campo di testo dove poter personalizzare la email di destinazione, come faccio?

    Reply

  • Samuele

    12 Marzo 2013 at 18:56

    Davvero molto interessante come guida e sopratutto utile; peccato che non hai scritto in quali dei vari file che hai nominato bisogna mettere il codice degli esempi che hai elencato.

    Reply

  • francesco

    17 Marzo 2013 at 10:49

    bellissimo articolo , complimenti -Grazie per la condivisione

    Reply

  • Decadeweb

    29 Agosto 2013 at 22:05

    Ciao, ottimo articolo! Volevo chiederti una cosa. Come posso trasformare l’area amministrativa del plugin in 2 colonne?

    Grazie

    Reply

  • web agency treviso

    25 Settembre 2014 at 14:06

    Si niente male come articolo ma non spiega molto bene la parte back-end , come in altri siti l’argomento è trattato con diffidenza. Perchè???

    Reply

    • Mario Concina

      1 Ottobre 2014 at 11:27

      ciao, devi considerare sempre che si tratta di un articolo di 4 anni fa 🙂

      Reply

  • Adriano

    14 Marzo 2015 at 18:47

    Giusto è ora di aggiornarlo!

    Sono un programmatore e non conosco wp ma sono riuscito lo stesso a fare il plugin, mi manca solo una cosa
    le pagine a cui fa riferimento il plugind dove e come vanno create ?
    grazie.

    Reply

  • pierpaolo

    16 Aprile 2015 at 15:28

    la documentazione ufficiale di wordpress parla di svn per il rilascio, è una cosa obbligatoria o facoltativa?

    Reply

  • Francesco Smith

    11 Dicembre 2015 at 12:26

    Complimenti per l’articolo,
    a distanza di anni molto attuale e coerente. Ho seguito la tua guida per creare un plugin di condivisione social molto semplice, ora è in coda per l’attivazione.

    Reply

  • uno

    8 Giugno 2017 at 0:54

    grazie per lo sforzo ma sembra molto simile a quegli articoli che si trovano su internet che forniscono indicazioni “spesso poco chiare e frammentate, ma soprattutto forniscono indicazioni
    da automa (fai questo, poi quello) senza spiegare la giusta teoria e
    struttura base che permetterà al neo-sviluppatore di camminare su due
    piedi da subito. ”
    Comunque apprezzo

    Reply

Lascia un commento

Your email address will not be published. Required fields are marked *

https://www.fullstacksas.it/wp-content/uploads/2021/11/FULLSTACK-LOGO-MINI-150x131.png

Via Vito Rosa, 7
70127 Bari – IT
P.iva – 08087100726

Gli attrezzi del mestiere

Full Stack Sas – p.iva 08087100726 – Rea n. BA – 603324

Copyright 2019. Bold Themes. All rights reserved.

bt_bb_section_top_section_coverage_image