Abbiamo visto in queste lezioni molti plugins. Per ogni tipologia vi appiamo spiegato il funzionamento e quelli che al momento sono i migliori plugin che rispondono alle esigente più comuni.

Ma vediamo di porci una domanda. Esiste sempre un plugins di WordPress per ogni vostra esigenza? Beh secondo me se non siete
eccessivamente esigente la risposta è si.

I plugins ce ne sono veramente un’infinità. Ovviamente vi consiglio di utilizzare o quelli premium o quelli nel repository di WordPress.
Ovviamente nel repository non li trovate a pagamento in quanto contro la politica di WordPress.

Ma vediamo se avete l’esigenza particolare di creare un plugins tutto vostro. Come facciamo ?
Una piccola premessa. Per comprendere il mondo in cui ci stiamo addentrando ossia la creazione di plugins dovete avere delle conoscenze di php, html, js e css. Non sono richieste conoscenze eccelse, ma almeno i rudimenti della programmazione si.
Una seconda premessa è che si tratta di un mondo talmente vasto che ci sarà impossibile spiegarvi tutto. E ovviamente alla fine di queste guide sulla creazione dei plugins non riuscirete a creare dei plugins modello Yoast. Non siamo in grado nemmeno noi. Ma sarete cmq in grado di o modificare qualche plugins o di crearne uno ad hoc per una vostra esigenza specifica.

Creare un Plugin con WordPress

Ovviamente si comincia con l’inizio…Diciamo che vogliamo creare un plugins sui libri. Lo scheletro comune a tutti è il seguente

<?php
 /*
 Plugin Name: Book on Line
 Version: 0.1
 Description: E' una libreria on line di libri di informatica e di ingegneria opportunamente catalogati etc. etc..
 Author: Noir Solutions
 Author URI: https://www.noirsolutions.net
 Plugin URI: https://www.noirsolutions.net

*/
 ?>

Ovviamente sarebbe il caso di differenziare i due url finali, ma la struttura è quella che vedete. A questo punto caricate questo primo scheletro di programma su plugins/booksonline/ e chiamatelo book_init.php per esempio. Una prima precisazione chi programma PHP sarebbe portato a chiamarlo index.php. Al fine di evitare conflitti invece in wordpress si tende a dare dei nomi unici.

Il primo dato da controllare è la versione che state utilizzando. Diciamo per esempio che questo plugins utilizza solamente funzioni che vanno dalla versione 4,6 in su le altre sono “deprecate”

Allora nel file PHP qui sopra dovremo inserire in coda la scritta

if ( version_compare( get_bloginfo('version'), '4.6', '<') ) {
 $message = "Impossibile attivare il plugin in quanto la versione risulta essere inferiore alla 4.6";
 die( $message );
 }

Lo script è talmente semplice che evito di commentarvelo.
Tante volte vediamo nei temi dei riassunti prima di incominciare gli articoli. Genericamente vengono fatti con delle funzioni del template, ma lo possiamo fare anche come plugin con l’utilizzo della funzione. Ripeto è solo un esempio non è certo questo il modo migliore per farlo. Inseriamo quindi la funzione riassunto

function riassunto_post()
 {
 global $post;
 // get the URL to the post


 $text=urlencode(substr(strip_tags($post->post_content),
 0, 350));
 // riassunto delle prime 350 parole
 return '<em>.'$text.'</em>';
 }

Andate nel file single.php e inserite la seguente riga di codice

<?php if (function_exists(riassunto_post) echo riassunto_post(); ?>

E nel vostro backend comparirà il riassunto che avete appena fatto. Come potete abbiamo fatto ricorso alla variabile globale $post e abbiamo richiamato il metodo post_content che appunto contiene il contenuto dell’articolo. Abbiamo fatto riferimento al file single.php. Gli altri file che potrete trovare nel template sono

  • index.php indice principale. Questo è il tema principale file; è usato perrendere qualsiasi pagina.
  • home.php Home page Consente di visualizzare il contenuto della pagina principale del blog, che di solito comprende un elenco dei post recenti.
  • single.php messaggio singolo chiamato quando si fa clic su un singolo post per
  • comments.php per i commenti rilasciati dagli utenti
  • page.php modello di pagina idem del post, ma è utilizzato per la visualizzazione delle pagine
  • archive.php archivi visualizza gli archivi del blog, come ad esempio i messaggi precedenti,
  • header.php intestazione del blog contiene i vari collegamenti ai fogli di stile ed eventualmente anche js e altri script, anche se adesso si preferisce metterli nel footer.
  • footer.php Piè di pagina Il piè di pagina di ogni pagina, di solito contenente diritto d’autore su e link utili
    search.php Questo modello viene utilizzato per mostrare i risultati della ricerca
  • sidebar.php barra laterale mostra la barra laterale del blog;
  • 404.php 404 file pagina di default pagina non trovata

Gli Action Hook

Facciamo un ulteriore passo avanti e vi mostriamo gli Action Hook. La traduzione letterale sarebbe gangio ossia gangio d’azione. Non vuol dire molto , ma in realtà in wordpress gli Action Hook sono fondamentali. Vediamo quindi di cosa si tratta.

Il compito degli action hook è quello di intercettare un evento innescato o trigger event. Una volta fatto questo in corrispondenza di un particolare evento si indica al programma di compiere una determinata azione. Ma vediamo come
ma iniziamo dalla sintassi

add_action ( 'action_hook', 'action_function_name', [priority],
[accepted_args] );

dove

  • action_hook : Il nome dell’ hook provided di WordPress.
  • action_function_name : Il nome della funzione che vogliamo prenda in carico l’evento
  • priority : E’ la priorità di esecuzione della funzione rispetto ad altre. Di Default è settato a 10 questo valore. A parità di
  • priorità viene eseguita la funzione inserima prima
  • acepted_args : Specifica il numero di parametri che vogliamo passare alla funzione action_function_name il suo valore di default è 1.

Vi lascio una lista degli Action Hook più comuni

  • create_category si attiva quando viene creata una nuova categoria
  • publish_post quando un post viene pubblicato, o se viene modificato.
  • wp_blacklist_check Si attiva se un commento finisce in black list.
  • switch_theme si attiva (da ora evito di ripeterlo) quando il tema del blog è cambiato
  • activate_ (plugin_file_name) quando il plugin attivato la prima volta
  • wp_head quando il modello richiama la function wp_head
  • init si attiva quando il WordPress ha terminato il suo caricamento. Utile per intercettare $ _GET o $ _POST eventi di trigger
  • user_register quando viene creato un profilo utente la prima volta.

Vediamo subito un esempio ora che abbiamo in mano alcuni strumenti. Qui trovate la completa lista degli Action Hook Reference

Esempio di action hook

Il tipico esempio che si fa e che trovate facilmente nel web è quello della spedizione di email. Ossia quando qualcuno compie un’azione che può essere quella di pubblicare un articolo allora mi spedisci un email all’indirizzo che ti indico. Quindi dobbiamo intercettare l’evento trigger di pubblicazione del post e conseguentemente creare e attivare una funzione che manda l’email. Come potete vedere qui sotto è veramente tutto molto semplice.

function mailing_list($post_ID)
{
 $list = 'nome_cognome@somesite.com';
 mail($list, 'Aggiornamento Blog',
 'Ciao la prensente per informarti che il tuo blog è stato appena aggiornato con un nuovo articolo'.get_settings('home'));
}


add_action('publish_post', 'mailing_list');

Credo che non vi ho stupiti più di tanto. E’ tutto estremamente semplice come potete vedere. Potremmo fare qualcosa di analogo quando qualcuno commenta un articolo. In questo caso dovremmo aggiungere la seguente action.

add_action('comment_post', 'mailing_list');

I Filter Hooks

Passiamo adesso a vedere cosa sono i filter Hooks di WordPress. Come dice la parola stessa sono dei filtri. In particolare si attivano quando presenti se si vuole portare qualcosa dal database a visualizzarlo nel vostro blog. Nel mezzo fra database e visualizzazione si pone appunto il filter.

Sintassi dei Filter Hooks

Vediamo subito la loro sintassi che risulta essere

add_filter ( 'filter_hook', 'filter_function_name' , [priority],
[accepted_args] );

Dove

  • filter_hook: Rappresenta appunto uno dei possibili filtri messi a disposizione da WordPress.
  • filter_function_name : La funzione che viene eseguita all’attivazione del filtro sopra
  • priority : La prioprità e gli argomenti sono gli stessi delle action.

Mentre una possibile lista di filter_look è

  • the_content il contenuto del post recuperato da database da mandare a video
  • the_content_rss Applicato al contenuto del post prima di inserirlo in un feed RSS
  • the_title Applicato al titolo recuperato dal database prima di visualizzarlo sullo schermo
  • wp_title applicato alla pagina del blog title prima di inviare al browser in
  • get_categories applicato alla lista di categorie generate dalla funzione get_categories
  • the_permalink Applicato alla URL permalink di un post dalla funzione the_permalink
  • theme_root_uri applicata alla directory principale dalla funzione get_theme_root_uri

Ect. Ect.

Qui trovate la pagina dei Filter Hook Reference

Conditional tags

Sicuramente vi sarà capitato di leggere dentro i file tema di wordpress espressioni come is_single(), is_home() , is_page(). Queste funzioni si chiamano in WordPress Conditional Tags. Ma cosa sono di preciso? Sono appunto tag condizionali che sono utili a determinare che pagina state vedendo del blog.
Diciamo che sono stati creati per essere interpretati nel seguente modo.

“E ‘ una pagina singola?”—> Se is_page()

e così via.

I più comuni conditional tags sono

  • is_home per determinare se è la home page
  • is_admin per la pagina di amministrazione
  • is_single per il singolo articolo o post
  • is_page per la singola pagina
  • is_category per determinare se siamo in una pagina categoria
  • is_tag per determinare se è una pagina di tag
  • is_search per determinare se è una pagina di cerca.
  • .

La pagina dei Conditional Tag

Caricamento script JS e JQuery su Plugins WordPress.

Terminiamo adesso questa lezione parlandovi di come caricare i file script js e JQuery nel WordPress plugins. Entriamo subito nel merito. Consideriamo la libreria JQuery. Mettiamo il caso che vogliamo utilizzare appunto questa libreria per creare qualche cosa. Ma vogliamo che la libreria sia sempre aggiornata all’ultima versione. Vi dico questo in quanto non è detto che quella del core del vostro WordPress lo sia. Sicuramente saprete che dalla versione 4.0 in su WordPress ha nei suoi file anche una versione di WordPress. Per fare che sia sempre aggiornata occorrerà de attivare quella di default nel core del vostro blog wordpress e attivare quella presente nel CDN di Google. Vediamo come fare.

function noir_add_jquery_googlecdn(){
 wp_deregister_script('jquery');
 wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', false, null, true);
 wp_enqueue_script('jquery');
}

add_action( 'wp_enqueue_scripts', 'noir_add_jquery_googlecdn' );

Vediamo un attimo di spiegare cosa abbiamo fatto. Chiediamo prima al WordPress di de registrare la presente libreria JQuery che ha nel core. Al suo posto registriamo la libreria presente nel CDN di google, a questo punto non ci rimane che fare altro che attivarla. Mentre la action ci indica che quando l’evento trigger sarà la richiesta di caricamento dello script allora esegui la funzione noir_add_jquery_googlecdn.

Creare Plugins con WordPress

Con questa lezione introduttiva sulla creazione dei plugins è veramente tutto dalla prossima inizieremo ad entrare nello specifico. Per il suo funzion