Scrivere un plugin per WordPress

Traduzione italiana delle linee guida per la scrittura di un plugin per Wordpress.
L’originale è all’indirizzo http://codex.wordpress.org/Writing_a_Plugin

La filosofia di Wordpress e’ rendere le cose semplici, e riflettiamo molto sull’inclusione di nuove funzionalità come parte del codice standard (o il ‘core’) di WordPress, in modo di mantenere WordPress veloce e leggero. Potete estendere le funzionalità offerte da WordPress usando i Plugin. Potete inoltre scrivere i vostri plugin, per supplire a una particolare assenza oppure per realizzare una particolare idea nel vostro blog. Questo articolo vi guiderà attraverso il processo, spiegando gli elementi basilari anche attraverso alcuni esempi.

Introduzione

La filosofia di Wordpress e’ rendere le cose semplici, e riflettiamo molto sull’inclusione di nuove funzionalità come parte del codice standard (o il ‘core’) di WordPress, in modo di mantenere WordPress veloce e leggero. Voi utenti potete estendere le funzionalità offerte da WordPress usando i Plugin. Potete inoltre scrivere i vostri plugin, per riempire i vuoti oppure per fare quella determinata cosa speciale nel vostro blog. Questo articolo vi guiderà attraverso il processo, spiegando gli elementi basilari anche attraverso alcuni esempi.

Quindi, giusto per cominciare, permetteteci di definire un plugin. Possiamo?

WordPress plugin
Un plugin per WordPress è un programma, o un set di una o più funzioni, scritte nel linguaggio di scripting PHP, che aggiunge uno specifico set di funzioni o servizi al weblog WordPress, in modo che possano essere integrate in modo trasparente con il weblog usando punti di accesso e metodi forniti dalla WordPress Plugin Application Program Interface (API).

Detto questo, non tutti i file con alcune funzioni all’interno possono essere chiamati WordPress plugin.

Requisiti

Questi sono i requisiti essenziali per un plugin WordPress:

  1. Il codice di un plugin deve rispettare gli Standard di Scrittura Codice WordPress. Considerate inoltre il rispetto degli standard di Documentazione In Linea.
  2. Un plugin può essere contenuto in un singolo file, o in un set di files. Il file stesso del plugin deve essere posto in wp-content/plugins/ (es: wp-content/plugins/plugin.php), o non più di una cartella sotto di questa (es: wp-content/plugins/BAStats/BAStats.php). I files di supporto dovrebbero essere posti nella cartella wp-content/ di WordPress, che non verrà sovrascritta durante gli aggiornamenti. Se distribuite diversi files (codici o immagini) con il vostro plugin, dovreste considerare di installare il tutto in una cartella come /wp-content/plugins/{vostroplugin}. Rispettare questa linea guida potrà assicurare maggiore praticità per l’utente finale in quanto tutto il loro contenuto sarà all’interno di una cartella. Non ci sono restrizioni sulla creazione di sottocartelle all’interno della cartella wp-content.
  3. Le prime righe di ogni plugin devono rispettare gli Standard di Struttura di un File Plugin specificati in questo documento.
  4. Gli utenti dovranno essere in grado di attivare e usare il plugin tramite il menu “Plugin” nell’interfaccia amministrativa del blog. Idealmente, un plugin non dovrebbe richiedere agli utenti di modificare il codice sorgente di WordPress. La creazione di nuovi agganci per i plugin può essere discussa sulla mailing list WP-Hackers.
  5. Gli utenti dovranno essere in grado di impostare tutte le preferenze e le variabili richieste dal plugin usando la pagina di opzioni propria del plugin, senza modificare il codice sorgente del plugin. Leggete Salvare i Dati di un Plugin nel Database e Aggiungere Pannelli di Amministrazione in questo articolo per maggiori informazioni.
  6. Siate certi di usare un namespace univoco per le funzioni nei vostri plugin. Se il vostro plugin usa una funzione con lo stesso nome di una funzione di un altro plugin, i plugin andranno in conflitto e WordPress smetterà di funzionare finchè uno dei due plugin non verrà rimosso. Un buon modo per evitare conflitti di namespace è quello di usare metodi di classe statici. Leggete Evitare Collisioni di Nomi Funzione per maggiori informazioni.

Oltre a questi requisiti ci sono pratiche raccomandate e standard descritti più avanti in questo documento. Prima di introdurre la necessaria Struttura di un File Plugin, diamo uno sguardo a come inviare e promuovere il vostro plugin nella comunità WordPress.

Pubblicazione e Promozione di un Plugin

Per pubblicare e promuovere il vostro plugin nella comunità WordPress, create per prima cosa una pagina per il plugin nel vostro sito con istruzioni complete e scritte chiaramente.
Includete un collegamento alla questa pagina di istruzioni nella testata del vostro plugin,
in modo che le persone possano controllare facilmente aggiornamenti, maggiori informazioni, e aiuto. Le istruzioni dovrebbero comprendere questi elementi:

  • Spiegazioni chiare e dettagliate dell’obiettivo e dell’uso del plugin.
  • Istruzioni esplicite per l’installazione
  • Istruzioni esplicite su come usare ogni tag o fare modifiche ai file di template. Siate precisi su dove apporre i tag e in quale file di template, e se l’uso deve essere all’interno del WordPress Loop.
  • Mostrate codice, quando è possibile, che sia chiaro e semplice da leggere e copiare nel suo complesso, senza apostrofi o virgole modificati graficamente.
  • Fornite esempi chiari per l’uso, includendo esempi dei parametri dei tag, immagini di schermate, o collegamenti agli esempi e ai risultati finali.
  • Quando è possibile, offrite più di un modo per scaricare il codice del plugin. Un file phps / txt è una buona cosa (con le istruzioni su come copiare, incollare e pubblicare), ma anche includere un file zip è una buona alternativa.
  • Se avete modificato o aggiornato il plugin, non fate una nuova pagina per il plugin a meno che le modifiche lo richiedano. Semplicemente modificate la pagina e inserite le informazioni aggiornate al fondo dell’articolo, in modo che la gente possa essere aggiornata.
  • Se scegliete di non supportare il vostro plugin, ditelo chiaramente nella vostra descrizione. Questo significa che il plugin dovrà essere usato a rischio dell’utente, e che non risponderete alle domande o non aggiornerete il plugin su basi regolari. Considerate di chiudere i commenti su quella pagina. Questo non negherà l’usabilità del plugin, semplicemente darà alle persone le informazioni che hanno bisogno di avere.

Se scegliete di non ospitare le informazioni del vostro plugin sul vostro sito e di usare il Deposito dei Plugin di WordPress, rispettate le linee guida sopra esposte per descrivere il vostro plugin nella sua pagina principale all’interno del Repository.

Se scegliete di inviare il vostro plugin al Database dei Plugin di WordPress, abbiate la stessa cura nell’indicare queste informazioni il più chiaramente possibile, in modo che possa essere inserito nelle categorie ed aiutare altre persone a capire il funzionamento
del vostro plugin.

Nota: Se volete che il vostro plugin sia trovato dagli utenti di WordPress, fate in modo di usare parole nella vostra descrizione che gli utenti possano usare per cercare il vostro plugin. Non abbreviate WordPress come WP perchè normalmente le persone non cercano per “wp plugin”. Aiutate i motori di ricerca a trovare il vostro plugin scrivendo una buona descrizione, un obiettivo preciso, e un uso esplicito.

Annunciare un Plugin

Per annunciare il vostro plugin ci sono diversi metodi.

Inviatelo a wp-plugins.net e wp-plugins.org
Gli invii a questi due siti web sono seguiti tramite feed e altri siti WordPress che postano annunci sulle attività di WordPress. Questi potrebbero citare il vostro sito se notano un nuovo invio. Molti utenti WordPress iniziano a cercare plugin su questi due siti.

Inviatelo ai siti dedicati a WordPress

Anche se questi siti spesso controllano i siti principali per trovare nuovi plugin, considerate di inviare direttamente la vostra segnalazione.
La lista include:

  • BloggingPro’s WordPress Plugins
  • Weblog Tools Collection
  • Wordlog
  • WordPress Station
  • WordPress Italy

WordPress Forum Plugins and Hacks

La sezione Plugin e Hacks dei Forum di WordPress è un buon posto per annunciare il vostro plugin. Fornite un link e una buona spiegazione dell’obiettivo del plugin e dell’uso. I motori di ricerca visitano spesso i forum di WordPress, e se volete che il vostro plugin sia notato includete parole che possano aiutare le persone a trovare il vostro plugin quando cercano, sia tramite i Forum che tramite i motori di ricerca.

Struttura di un File Plugin

Un file plugin di WordPress dovrebbe avere questa struttura:

Forse vorrete aggiungere un preambolo GPL, per rendere esplicito che il plugin è rilasciato tramite la stessa licenza di WordPress.

La licenza del vostro plugin dovrebbe essere valutata attentamente. Questo argomento è come una zona grigia ed è oggetto di dibattito nella comunità WordPress. Il consenso generale è intorno al rilascio dei plugin tramite licenza GPL, o licenza compatibile con la GPL, nonostante non sia legalmente richiesto per scrivere e pubblicare un plugin.

Comunque, queste due sezioni possono essere seguite dalle definizioni delle funzioni e dal codice vero e proprio del plugin.

Se il plugin consiste in più di un file, i commenti precedenti dovranno essere inseriti all’inizio del file .php che risiede nella cartella wp-content/. Questo file normalmente contiene le funzioni principale, e include o richiede gli altri file usati dal Plugin.

Metadata del Plugin

Gli sviluppatori di WordPress hanno chiesto di recente agli autori di plugin che intendono pubblicare i propri plugin su wp-plugins.org di includere metadata relativi ai propri plugin in un file readme.txt. Il seguente è un esempio, preso dal plugin Staticize Reloaded:

Contributors” sono i nomi utente (dei forum di supporto di WordPress, o altrove) delle persone che hanno aiutato. L’attribuzione dovrebbe essere data alle persone che vi hanno aiutato a scrivere il plugin, così come alle persone che vi hanno aiutato a testare il plugin. Se il vostro plugin è la risposta a una richiesta nei forum di supporto di WordPress (o ovunque altrove, davvero), è una bella idea dare credito alle persone che originariamente hanno richiesto o suggerito il plugin.

Tags” sono parole chiave legate al vostro plugin. Idealmente i vostri tags dovrebbero essere parole comuni che le persone possono usare quando cercano un plugin; non è comunque attualmente possibile cercare un plugin solo tramite i tags.

Potete includere immagini nei metadata del vostro plugin, per esempio guardate screenshot-1.gif su http://svn.wp-plugins.org/staticize-reloaded/trunk/. Date a ogni immagine un nome sul modello di screenshot-#.(png|jpg|jpeg|gif), e fornite una descrizione appropriata per l’immagine usando una lista numerata nella sezione Screenshot del vostro file readme.

Questi files possono essere utili alla diffusione del vostro plugin, ma non sono usati direttamente da WordPress. Attualmente sono richiesti solo nel caso di un invio tramite wp-plugins.org.

Plugin API

WordPress definisce un certo numero di “agganci” per connettere i vostri plugin tramite la sua Plugin API. Questi agganci sono i metodi con cui i vostri plugin potranno interfacciarsi al resto di WordPress.

Ci sono due tipi di agganci:

Aggancio ai Filtri

I filtri abilitano l’addizione o la rimozione di funzioni filtro per la formattazione del testo che possano agire su dati specifici (di solito testo). Questi permettono ai plugin di modificare contenuto o testo al volo.

Aggancio alle Azioni

Le azioni permettono l’addizione o la rimozione di funzioni la cui esecuzione verrà attivata da un evento del core di WordPress. Questo permette ai plugin di eseguire funzioni ogni volta che avviene l’evento specificato.

Sulla base del tipo di aggancio usato, le funzioni dei plugin possono essere classificate in due categorie:

Filtri
I filtri sono funzioni che usano gli agganci ai filtri di WordPress per modificare contenuto o testo.

Azioni
Le azioni sono funzioni che specificano eventi aggiuntivi che verranno attivati da eventi del core di WordPress.

Per una completa descrizione dell’API e dei vari tipi di aggancio, consultate la pagina Plugin API

Evitare la collisione dei nomi funzione

E’ possibile che qualcuno abbia creato un plugin con nomi di funzione identici a quelli usati nel vostro plugin!

Questo è un problema perchè PHP non permette funzioni multiple con lo stesso nome. Se due plugin offrono funzioni con lo stesso nome, o un plugin offre una funzione con lo stesso nome di una funzione di WordPress, il blog potrebbe smettere di funzionare. Ci sono due modi per evitare questo problema.

La prima soluzione è di aggiungere un prefisso con un set univoco di caratteri ad ogni funzione nel vostro plugin. Se il vostro nome è John Q. Public, potreste dichiarare le vostre funzioni come function jqp_output() {…}. C’è la possibilità che qualcuno con le vostre stesse iniziali faccia lo stesso con il proprio plugin, ma è bassa.

La seconda - e probabilmente più semplice - soluzione è di includere le funzioni del vostro plugin in una classe e di invocare i metodi delle classi staticamente. Questo suona più complicato di quanto non sia.

Prendete per esempio questa classe, che espande gli esempi forniti nella sezione Aggiungere Azioni della documentazione Plugin API:

Questa classe, chiamata emailer, ha un metodo send che implementa le funzionalità del plugin.

La funzione add_action() all’esterno della classe aggiunge a WordPress l’azione di invocare il metodo send quando un post è pubblicato. L’array usata nel secondo parametro dice al sistema dei plugin di invocare il metodo statico chiamato “send” della classe “emailer”.

La funzione send è protetta dal namespace globale dalla dichiarazione di classe. Non è possibile invocare send() direttamente, e iin questo modo ogni altra funzione chiamata send non andrà in collisione con questa. Se volete invocare send(), dovrete usare un operatore di risoluzione di portata, come questo: emailer->send();

Potete inoltre collegare agganci del plugin con istanze di oggetti. Questo è un esempio di come fare questo usando la classe poco sopra:

Quando lo stato di un articolo verrà impostato a “Pubblicato”, WordPress eseguirà il metodo send() dell’oggetto $mailer. Usata in questo modo, la classe potrà fare uso di riferimenti $this-> , mentre il metodo statico invocato sopra potrà solo invocare i metodi di classe staticamente tramite l’operatore di risoluzione di portata.

Anche se l’esempio qui sopra è molto semplice, le classi possono essere un soggetto complicato. Potrete trovare maggiori informazioni nella documentazione delle classi di PHP.

Salvare i dati di un Plugin nel Database

Potreste avere bisogno di memorizzare variabili in modo che queste siano salvate anche dopo il termine di esecuzione del vostro script. WordPress vi permette di definire, aggiornare, e richiedere ognuna di queste variabili come una ‘opzione’ nel suo database. Memorizzando i dati delle opzioni in un database, e creando un nuovo pannello di amministrazione, permetterete agli utenti di personalizzare i parametri del vostro plugin senza modificare il suo codice sorgente. Le funzioni che vi permetteranno di manipolare queste opzioni sono elencate più avanti.

Il vostro plugin potrebbe richiedere una tabella completamente nuova nel database. Maggiori informazioni su questo argomento sono pubblicate nella pagina Creare Tabelle con i Plugin.

NOTA: Come per le vostre funzioni, fate in modo che i nomi delle vostre opzioni non siano in conflitto con altri valori che WordPress potrebbe usare. Un buon modo di evitare questo è di aggiungere un prefisso con una stringa abbastanza univoca, come l’abbreviazione del vostro programma o le vostre iniziali.

Aggiungere Opzioni

$name
Obbligatorio (string). Nome dell’opzione da aggiungere.
$value
Opzionale, per default “” (string). La variabile da memorizzare con il nome della vostra opzione.
$description
Opzionale, per default “” (string). Descrive l’opzione.
$autoload
Opzionale, per default “yes” (enum: ‘yes’ oppure ‘no’). Se impostato a ‘yes’ il parametro è ricevuto automaticamente tramite la funzione get_alloptions.

Se un opzione con un nome specificato esiste già, non viene effettuata alcuna modifica al suo valore o al database. add_option() può solo aggiungere opzioni, non modificarle.

$value può essere una stringa, una array, o un oggetto. WordPress serializzerà automaticamente $value prima di memorizzarlo, e invertirà il processo quando verrà richiamto. Se state memorizzando più di una opzione per il vostro plugin probabilmente sarà più efficiente passare una array di opzioni a add_option(), che verrà memorizzata come una singola riga nel database.

E’ da notare che update_option() chiamerà add_option() se l’opzione non esiste già. E’ necessario invocare add_option solo nel caso in cui sia necessario inserire i parametri opzionali $description e $autoload con valori diversi da quelli di default.

Ottenere Opzioni

$option
Obbligatorio (string). Nome dell’opzione di cui volete ottenere il valore.

Questa funzione richiama il valore memorizzato nel database. Se l’opzione era originariamente un array o un oggetto, WordPress lo renderà automaticamente tale prima che il valore sia assegnato.

Aggiornare Opzioni

$options_name
Obbligatorio (string). Nome dell’opzione da aggiornare
$newvalue
Obbligatorio (string). Il valore con il quale volete aggiornare l’opzione specificata.

$newvalue può essere una stringa, una array, o un oggetto. WordPress serializzerà automaticamente $value prima di memorizzarlo, e invertirà il processo quando verrà richiamto. Se state memorizzando più di una opzione per il vostro plugin probabilmente sarà più efficiente passare una array di opzioni a add_option(), che verrà memorizzata come una singola riga nel database.

E’ da notare che update_option() chiamerà add_option() se l’opzione non esiste già. E’ necessario invocare add_option solo nel caso in cui sia necessario inserire i parametri opzionali $description e $autoload con valori diversi da quelli di default.

Interfacce Utente

Rendere le funzioni disponibili ai Templates

Per default, tutte le funzioni dei plugin all’interno del panorama globale sono disponibili ad essere invocate dai Templates.

Le classi e gli oggetti dichiarati nei plugins sono anch’esse disponibili per i templates; tuttavia, le funzioni dei plugin contenute all’interno delle classi avranno bisogno di un operatore di risoluzione di portata (::) per essere invocati. Potrebbe valere la pena fornire funzioni contenitore nel panorama globale per rendere le cose più semplici agli utenti finali.

Aggiungere Pannelli di Amministrazione

Aggiungendo nuovi pannelli di amministrazione, potrete permettere ai vostri utenti di personalizzare ogni parametro usato nei vostri plugin senza obbligarli a modificare il codice sorgente. Dovrete semplicemente creare un modulo HTML che richieda e aggiorni le varie opzioni dei vostri plugin.

Quando aggiungete un pannello all’interfaccia di amministrazione di WordPress, di solito vorrete aggiungerlo al Pannello delle Opzioni. Queste sono le istruzioni basilari per aggiungere un nuovo pannello sotto il menu Opzioni. Leggete Aggiungere Menu di Amministrazione per una panoramica completa.

Da qualche parte nel vostro plugin, aggiungete questa funzione:

Al termine del plugin file nel quale avete aggiunto tutti i vostri agganci, aggiungete:

Questo aggiungerà un nuovo oggetto, ’subpaneltitle’, al menu delle Opzioni. Il contenuto del pannello che apparirà quando il menu ’subpaneltitle’ sarà attivo è generato dalla funzione my_options_subpanel() che dovrete specificare da qualche parte nel vostro plugin. La funzione my_options_subpanel() di solito si presenta così:

E’ davvero così semplice.

In alcuni casi, il vostro plugin potrà avere bisogno di sapere se è stato caricato come pannello di amministrazione. Potete controllare questo stato con la funzione booleana is_plugin_page(). Questo è stato l’unico metodo per aggiungere contenuto all’interfaccia di amministrazione. Al momento, è meglio usare i metodi basati sulle funzioni sopra citate (my_options_subpanel() nell’esempio qui sopra) per evitare strutture if non necessarie.

Localizzare i Plugin

WordPress usa il framework di localizzazione GNU Gettext. Gettext è un framework maturo e ampiamente usato per la traduzione modulare del software. E’ lo standard di fatto per la localizzazione nell’ambito dell’open source / free software. Informazioni in merito alla produzione delle traduzioni di WordPress stesso sono disponibili alla pagina Localizzare WordPress.

La collezione di default di stringhe tradotte per WordPress non includono le stringhe che sono nei vostri plugin. Se desiderate rendere possibile la traduzione per i vostri plugin, il vostro plugin dovrà caricare la sua personale collezione di traduzioni.

All’inizio del vostro plugin, inserite il codice seguente per identificare il dominio del plugin:

Questo attiverà un dominio testuale chiamato ‘myplugin’. Dovreste modificare questo nome per omologarlo al vostro plugin.

Wordpress cercherà di caricare una collezione chiamata $path/$domain-$locale.mo basandosi sui parametri path e domain, e i parametri di localizzazione di WordPress, specificati dal define WPLANG nel file wp-settings.php. A partire dalla versione 1.5.1.2 WordPress cerca questo file nella cartella wp-content/plugins. Nel futuro WordPress cercherà per questo file nella stessa cartella del file del plugin.

Il vostro plugin sarà quindi abilitato a usare le funzioni __() e _e() per localizzare stringhe di testo. Sappiate che dovrete aggiungere un ulteriore parametro a queste funzioni per specificare il dominio del plugiin da usare nella traduzione:

Cerca il modulo di localizzazione per la traduzione di $message, e passa la traduzione ai risultati (return) di PHP. Se non è presente una traduzione per $message, il risultato (return) sarà $message.

Cerca il modulo di localizzazione per la traduzione di $message, e passa la traduzione ai risultati (echo) di PHP. Se non è presente una traduzione per $message, il risultato (echo) sarà $message.

__() è usato quando $message è passato come argomento a un’altra funzione; _e() viene usato per scrivere direttamente $message nella pagina.

Tradurre le date

Per tradurre l’output delle vostre date usate la funzione wp mysql2date. E’ situata nel vostro functions.php. Traduce i mesi e i giorni, o le vostre abbreviazioni, nel vostro linguaggio locale.

Buone Pratiche di Scrittura Codice

Questi sono alcuni consigli da tenere a mente quando scriverete il vostro plugin: alcuni errori comuni da evitare e come evitarli.

Consigli PHP

Script autoinvianti

Per fare in modo che uno script con un modulo processi se stesso, controlli le variabili inserite nel modulo e, se disponibili, invochi la funzione di processamento.

Per controllare se una pagina è stata richiesta come risultato di una azione modulo, un modo è di usare un campo nascosto nel modulo stesso (chiamato “inviato” per esempio). Quindi nelle prime righe del vostro script PHP, potrete usare isset($foo), che restituisce TRUE se una variabile è inizializzata, oppure is(empty($foo)), che è grossomodo la stessa cosa (consultate la documentazione PHP per la differenza).

Modulo con elemento nascosto:

Per controllare il vostro elemento nascosto:

Consigli Database

Leggere è economico, Scrivere costa.

I database sono straordinari nel recuperare dati e fornirveli, e queste operazioni sono (di solito) veloci come lampi. Fare modifiche a un database, invece, è un processo più complicato, e più costoso a livello computazionale. Quindi, provate a minimizzare il numero di scritture che fate nel database. Tenete tutto pronto nel vostro codice prima, in modo da effettuare solo le operazioni di scrittura che realmente sono necessarie.

Selezionate (SELECT) solo ciò di cui avete bisogno.

Anche se i database recuperano dati molto velocemente, dovreste comunque provare a ridurre il carico sul database selezionando solo i dati di cui avete bisogno. Se avete bisogno di contare il numero di righe in una tabella non eseguite un SELECT * FROM, perchè tutti i dati di tutte le righe verranno estratti, sprecando memoria. Allo stesso modo, se avete bisogno solamente di post_id e post_author nel vostro plugin, selezionate (SELECT) solo questi specifici elementi, per minimizzare il carico sul database.

Ricordate: centinaia di altri processi potrebbero occupare il database nello stesso momento. Il database e il server hanno entrambi determinate risorse per gestire tutti questi processi. Imparare come minimizzare il carico dei vostri plugin sul database potrà assicurare che il vostro plugin non sarà quello accusato per abuso di risorse.

Panoramica

  1. Generale
    • usate le vostre iniziali per evitare collisioni tra nomi di funzione
    • if ( !function_exists(’dys_function_al’) ) {….}
  2. Aggiungere opzioni
    • add_options_page($page_title, $menu_title, $access_level, $file)
    • add_option() e delete_option()
  3. Internationalizzazione
  4. Funzioni abilitate: (Version 1.5.1+) incluse in /wp-includes/pluggable-functions.php
    • get_currentuserinfo()
    • get_userdata($userid)
    • get_userdatabylogin($user_login)
    • wp_mail($to, $subject, $message, $headers = )
    • wp_login($username, $password, $already_md5 = false)
    • auth_redirect()
    • wp_redirect($location)
    • wp_setcookie($username, $password, $already_md5 = false, $home = , $siteurl = )
    • wp_clearcookie()
    • wp_notify_postauthor($comment_id, $comment_type=)
    • wp_notify_moderator($comment_id)

Risorse Esterne

2 commenti

  1. cindy
    Pubblicato 10/10 alle 0:04 | Permalink

    Hi! Just wanted to thank you for the link to the Anatomy article I wrote.
    If you would like, I would be happy to host an italian translation of that article at my site for the benefit of anyone looking at it? If you think that would be useful.

    In anycase, keep up the good work.

    –CIndy

  2. pixline
    Pubblicato 23/10 alle 12:41 | Permalink

    The italian translation of the Anatomy article has been posted on this site at http://pixline.net/2006/10/anatomia-di-un-plugin-wordpress/
    We suppose it will be available as well at the bottom of the original page.
    Thanks Cindy for your kind offer!

2 trackback

  1. Di Pixline bugfix › Pixline il 29/05 alle 14:39

    [...] scontrare - per la prima volta - con l’incompatibilità di due plugin, che operavano sugli stessi filtri di WordPress creando qualche problema agli esempi di codice sorgente in alcuni articoli. Ci scusiamo per il [...]

  2. [...] Scrivere un plugin per WordPress Traduzione italiana delle linee guida per la scrittura di un plugin per Wordpress. Technorati Tags:plugin wordpress, WordPress, wordpress in italianoTag Links:plugin wordpress, WordPress, wordpress in italianoRelated Posts:Risolto il problema di Disclose Secret con WordPress 2.2.1 Aggiornamenti sui Plugin per WordPress dal mio feed del.icio.us IT Social Bookmark - plugin WordPress per siti Italiani Come ottimizzare il WordPress 2.3Aggiornamento di Blogslot » » plugin per WordPress         [...]

web counter