 Ok, togliamo le parti noiose davanti. Come avete sentito, sono Giustino Borzacchiello, potete ritrovarmi un po' ovunque come Jobstuff, a volte scrivo su borzacchiello.it e sono sviluppatore WordPress a Drakkei, un'azienda di Milano. Bene, sono sicuro che ci sono molti sviluppatori in sala e ognuno ha il suo approccio allo sviluppo WordPress, ma tutti seguono la prima regola dello sviluppo WordPress, ovvero non toccate il core. Chiunque lavora con WordPress sa che non deve modificare il file del core. In questo caso, che cosa intendiamo? Intendiamo con core. Il core è quello che scaricate da WordPress.org, tendenzialmente sono tutti questi file che si trovano in queste due cartelle, vpadmin che contiene i file che servono per il pannello di amministrazione di WordPress e vpincludes che contiene tutto il resto. Ovviamente non dobbiamo toccare il core, ma questo non significa che non possiamo leggerlo, essendo software open source, possiamo dare un'occhiata sotto il cofano ed è questa la bellezza di software open source. Quindi quello che andremo a vedere è una carrelata di alcune funzioni che ho ritenuto utili e interessanti. Partiamo con la prima. La prima funzione che vi presenta è checked. È una funzione molto utile da utilizzare per verificare se un input in un form è settato oppure no. Penso che qualunque sviluppatore più HP ha scritto core del genere dove controlla che il valore sia uguale a un dato valore predefinito e stampa checked. Potete semplificare questo codice in questo modo. La funzione checked accetta due valori in ingresso, quindi il valore predefinito con cui confrontare e poi il valore dinamico. La funzione checked ha due sorelle, selected and disabled. Come sognavo di dirlo da liceo lascio al lettore il conflito di andare a vedere che cosa fanno. Essenzialmente funzionano con le select e per disabilitare i campi. Aniamo avanti. Vi presento una famiglia di funzioni. Le escaping function. Non so voi. Io all'inizio della mia carriera ho sempre avuto difficoltà ricordarmi che significava escape. Un piccolo troccomentale. Ricordatevi che il minore viene tradotto con andLT. Se volete ricordarlo potete fare così. Dicevo è una famiglia di funzioni. C'è di tutti i tipi. Effettano le escaping di quello che viene passato in ingresso. Per SQL, per l'URL, per JS, per l'HTML. Ma vediamo con un esempio pratico che cosa possiamo utilizzarle. Qui abbiamo un ipotetico input che viene dall'utente. In alto abbiamo un href e poi un titolo. Potrebbero venire da un form, da l'URL, qualunque. Questo url e questo titolo vengono stampati all'interno di un template. In una, in ancora e in un titolo di primo livello. Facendo in questo modo quello che otterremo è qualcosa del genere. Nel source code, nel source HTML. Quindi l'href viene stampato così come è e il titolo pure. Quindi se vuoi andare a seguire questo codice, vi trovereste un alert come primo messaggio e andando a cliccare sul link un altro alert. Ovviamente l'alert di per sé non è malevolo. Il fatto che l'alert venga seguito significa che può essere inserito del codice JavaScript malevolo che potrebbe non fare quello che vuolevate. Semplicemente basta sostituire l'eco con le escaping function. In questo caso esqrl and esqhtml e otteniamo qualcosa del genere. L'href non viene per niente stampato perché JavaScript non è un protocollo permesso. Quindi siete al sicuro. Mentre il titolo viene stampato così come è. Quindi verrà stampato minore, script e così via. Ricordatevi sempre di effettuare le escape il più tardi possibile, quindi nei vostri template. C'è una regola per mantenere il codice sicuro. Bene, la prossima funzione, le prossime due sono dei helper, veramente molto piccoli, però possono servire di quando in quando. Questa funzione controla sale device che sta utilizzando l'utente e mobile oppure no. Come mobile in se intendo uno smartphone e tablet. Ci potrebbe utilizzare in questo modo. Quindi aggiungere un file JavaScript solo per la versione desktop del sito, altrimenti evitare di includerlo. O qualsiasi altra cosa insomma. L'altro helper è questo qui, vpnrobots. La funzione così piccola che lo scritta per intero non fa nient'altro che stampare un metatag che dice ai bot del motore di ricerca di non indicizzare la pagina. L'utilizzo potrebbe essere qualcosa del genere. Abbiamo una pagina che non vogliamo indicizzare e aggiungiamo questa action nel lead, in modo tale da evitare l'indicizzazione da parte dei motori di ricerca. Aniamo avanti. Un'altra funzione molto utile, vpparstarks. Questa funzione facciamo un po' di attenzione. Unisceoi i valori di default a dei valori forniti dall'utente, sovrascrivendo i valori definiti dall'utente a quelli di default. È un gioco di parole, ma di fatto è questo. Abbiamo dei valori di default qui e dei valori forniti dall'utente e options sarà l'unione di questi due array, quindi sarà questo array qui. Prenderà count dall'array di default perché la chiave non è presente nell'array fornito dall'utente e prenderà order by e order da questo qui, quindi sovrascrivendo i valori di default di fatto. Un'utilizzo se ne fa uso molto nei widget quando abbiamo dei valori di default per l'istanza del widget in esame e quindi viene usata parstarks per sovrascriver questi valori di default. Passiamo all'ultima funzione che vp send json success mi è utilizzata molto spesso sempre, quando ci sono degli Ajax handler e serve per inviare all'Ajax handler la risposta indicano il successo, come potevate conoscere dal nome. Quindi, solitamente quando facciamo una richiesta ad Ajax, abbiamo, qui ho utilizzato jquery, potete usare qualsiasi liberia, abbiamo una richiesta del genere, quindi abbiamo i nostri dati che indicano un action e in questo caso un post ID. Facendo una richiesta post, dall'altro orato risponderà un handler a PHP. Quindi, in questo caso il myaction di prima, questo, viene recuperato qui e il post ID, che era qui, viene indicato qui dalla variabile post. Quindi, ancora un po' di filtrando il post ID, immaginiamo di recuperare con questo post ID un post da database di WordPress, recuperare qualche dato da questo post e lo inviamo in questo modo. Quindi, abbiamo preso output data utilizzando il post ID e lo inviamo con vp send json success. Quello che succede è che questa funzione manda un oggetto formato in questo modo. Quindi, ha due chiavi, success e data. Success sarà true, come dice il nome della funzione, mentre data contiene l'output data che abbiamo inviato qui. In questo modo, se vi ricordate la callback JavaScript che abbiamo visto prima, riceverà in ingresso questo oggetto. Quindi, questo oggetto qui sarà response e controllando se success è true, possiamo seguire qualsiasi altro codice. Come prima anche questa funzione ha delle sorelle, vp send json error, lascio voi immaginare che cosa fa, e vp send json, che diciamo poi il padre di tutte e due, dato che vp send json success e vp send json utilizzano quest'ultima. Bene, finita la carrellata, che è stata molto veloce. Chiediamoci da dove possiamo partire se volessimo cominciare a guardare dentro il core. Io ho individuato alcuni file, ovviamente non sono gli unici, ma penso che siano interessanti. Cioè, vp includes general template che contiene per la maggior parte template tags. Per esempio, isom lo trovate qui. vp includes function è un altro file che potete leggere e ci sono funzioni, come dice il nome, di vario genere e varia grandezza. Dateci un occhio perché ci sono tante cose interessanti. Poi c'è il file formatting, un tophp sempre su vp includes, che contiene funzioni riguardo string, date, formatazione in genere. E poi c'è un ultimo file, pluggable, guardatelo, qui ci sono delle funzioni molto interessanti, anche molto complicate. Che potete sovrascrivere? Ovviamente, se le sovraschivete dovete sapere che cosa stai facendo perché cambiano in modo sostanziale il comportamento di WordPress. Quindi fate attenzione quando sovraschivete le funzioni in questo file. Come altro consiglio, vi posso dire di andare a guardare questo sito che è la developer reference, qui potete cercare e trovare tutte le funzioni che sono incluse nell'ultima release di WordPress. Potete guardare il codice, mi ne è stampato, mi ne è automaticamente generato dal PHP doc che trovate sopra la funzione. Una cosa utile e comoda è questa parte qua, che include tutte le funzioni nuove introdotte nell'ultima release di WordPress. Quindi, se volete vedere che cosa c'è di nuovo e volete vedere queste funzioni, che cosa fanno e come è scritto il codice, potete andare lì. Per terminare, volei che vi portasse a casa tre cose. Leggete il coro. Ci sono tante funzioni interessanti, tante cose che sono già state scritte e che potete utilizzare. Molto spesso è interessante andare a vedere anche quali libri di JavaScript sono già incluse nel core senza scaricarle all'esterno. Molti ad esempio non sanno che jQuery UI è all'interno del core oppure ci sono altre libri di JavaScript. Cercate di comprendere il codice. Spesso il codice del core è molto complicato. Anche delle funzioni che dovrebbero essere semplici nella nostra testa sono più complicate del previsto. Perché? Perché il codice di WordPress non è il codice che noi scriveremmo per il nostro sito. Quindi deve sopravvivere in tanti ambienti differenti. E quindi spesso questa è la ragione per cui il codice magari è un po' più complesso di quello che vi aspettate. E la terza cosa è che ovviamente il codice del core è scritto da persone. Quindi, se vuoi trovate un errore, potete contribuire, potete correggerlo, potete pensare di lavorare come abbiamo fatto ieri al contributor day e migliorarlo. Diciamo la polemica sterile dire WordPress fa schifo perché questa funzione fa schifo perché questo approccio fa schifo è quello che è sterile. Quindi possiamo migliorarlo. E per i compiti a casa potete andare a vedere queste funzioni. Questa è la mia preferita. Andate a vedere che cosa fa. Le altre anche sono molto interessanti. Ciamo, provate ad aprire il vostro IDE, per esempio, in PHP Storm è molto comodo navigare nel core di WordPress. Andate a vedere che cosa fanno. Bene, ho finito. Grazie.