Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2
Piccolo manuale (in)completo
Igor Nardo
P.4
P.5
P.8
P.11
P.14
P.21
7) Functions.php ..................................................................................................
7.1 Come estendere i campi custom
7.2 Creare nuovi tipi di pagine (diversi da post e page)
7.3 Il core di wordpress: le classi e lestensibilit
7.4 pluggare functions.php
7.5 Hooks: come estendere facilmente le funcioni (e classi) native
7.6 Shortcodes
P.23
8) Plugins ..............................................................................................................
8.1 Cos un plugin
8.2 Scrivere un plugin
8.3 Aggiungere un pannllo amministrativo
8.4 Salvare opzioni del plugin in database
P.28
P.33
1.2 Hosting
Lhosting per wordpress ha caratteristiche ben precise e poco costose, bench con le ultime
versioni e con lutilizzo di molti plugins il carico sulla cpu sia maggiore di quello per altri cms.
Di base nato per server LAMP (Linux Apache Mysql PHP) ma ad oggi esiste anche la versione compatibile con database Windows SQL Server.
1.3 Database
1.4 PHP
Dalla 3.2 la versione PHP minima 5.2.4. Con versioni inferiori linstallazione viene fermata,
ed necessario scegliere una versione di wordpress precedente.
Per sfruttare correttamente Wordpress bene avere i seguenti moduli attivi nel PHP:
- mod_rewrite - cdata - curl (non sono tuttavia indispensabili)
1.6 Permessi
Linstallazione su server LAMP non necessita di modifiche ai permessi delle cartelle, tuttavia in particolari hosting necessario settare manualmente i CHMOD a 755 sulla cartella
wp-content che si trova in radice dellinstallazione, per poter caricare temi e plugins o foto
dallinterfaccia gestionale.
2) Installazione
2.1 I due metodi di installazione
Installazione manuale:
Si scarica gratuitamente da wordpress.org/download/ . Da un anno disponibile anche una versione nativa in italiano, reperibile allindirizzo it.wordpress.org/
Con il metodo classico, prima di proseguire, occorre creare un database mysql ed un
utente per wordpress, annotando i parametri daccesso per il wizard che verr poi.
La radice delle tabelle un parametro indispensabile per la convivenza nello stesso
database di pi installazioni, pertanto scegliamo una radice descrittiva per la finalit
dellinstallazione in corso.
Dopo aver copiato i files sul proprio server (ad es. su www.miosito.it) bisogna immediatamente accedere allindirizzo del sito, in quanto bisogna ultimare subito linstallazione. Non facendolo diamo la possibilit ad altri di collegare il sito ad un proprio
database popolandolo con i propri contenuti.
Accedendo allurl di upload avremo da completare circa 4 step del wizard di installazione. Ci verranno chieste informazioni di base che potremo modificare in qualunque
momento. Per ultimare linstallazione occorrer inserire i dati di accesso al database
e scegliere un nome utente e una password.
Ultimato il percorso di installazione il wizard creer un file wp-config.php in radice
del sito, contenente i dettagli di collegamento al database. Lo stesso wp config contiene alcune chiavi criptate che sono destinate a livelli maggiori di sicurezza, la cui
compilazione facoltativa.
NB: al termine dellinstallazione, wordpress cerca di inviare allamministratore una mail con i dettagli
di accesso. Quando effettuiamo linstallazione in locale con xampp, il modulo mail di php disabilitato, pertanto normale un errore nellinvio dei dettagli di accesso.
Installazione automatica:
Il secondo metodo di installazione, quasi sempre disponibile negli hosting con cpanel, fatta mediante installatron, una piattaforma per linux che effettua automaticamente installazione del cms e creazione dei database.
In secondo luogo andiamo alla voce Generale e verifichiamo di aver compilato titolo e sottotitolo, che bne non siano uguali.
Verifichiamo che la data sia in italiano, che i nuovi utenti vengano creati come sottoscrittori e che la mail del sito sia corretta.
Questo indirizzo viene usasto, in mancanza di altre configurazioni, com mittente dei
messaggi dal sito.
La terza cosa da verificare si trova alla voce permalink. I permalink sono gli url delle
pagine. Se il mod_rewrite di php attivo e se il server accetta il file .htaccess bene
attivare la riscrittura degli url.
Purtroppo nessuna delle varie opzioni presenti di default valida a fini SEO.
La migliore struttura dei permalink va impostata in modo custom, ed
%category%/%postname% oppure /%year%/%monthnum%/%postname%/ nel caso
il sito sia un blog in cui la datazione temporale molto importante.
I permalink sono una caratteristica fondamentale per i motori di ricerca per indicizzare e valorizzare correttamente i contenuti del sito.
Alla vode ciscussione possiamo poi decidere se vogliamo che gli utenti possano commentare gli articoli e le pagine, se devono iscriversi per commentare o inserire un
nome e una mail.
Lo spam sui siti wordpress con commenti abilitati assicurato, quindi bene installare qualche plugin adatto. Se ne trovano molti di gratuiti.
Se il sito in fase di sviluppo possiamo impedire che gli utenti entrino mediante un
plugin gratuito che si chiama maintenance mode, che restringe laccesso allamministratore. Altrimenti se vogliamo far accedere un cliente al sito mantenendolo privato
si consiglia un plugin che si chiama password protect wordpress che consente di
entrare anche con password diverse dallamministratore, creando utenti appositi.
Ricordiamo di blindare laccesso ai motori di ricerca dal pannello privacy per impedire lerrata indicizzazione iniziale, molto dicile da aggiustare in seguito.
2.6 Wp-config.php
Il file in questione si trova in radice del sito e contiene i dati di connessione al database. Nel caso di spostamento del sito suciente aggiornare tale file. Una volta
aggiornato, dopo lo spostamento del sito possibile aggiornare i parametri relativi al
dominio dal pannello generale che sta sotto alle impostazioni.
Replicando il database ed aggiornando i parametri in wp-config possibile entrare in
wp-admin anche senza aggiornare i dati manualmente nel MySQL.
3) Il funzionamento di base
3.1 Articoli
Gli articoli sono il contenuto di base di wordpress, seguiti dalle pagine. Gli articoli e le
pagine sono entrambe salvati nella tabella post (wp_post se avete scelto wp_ come
radice delle tabelle).
In database i post differiscono solo per il parametro post_type, che previa espansione consente di accogliere anche contenuti classificati in modo diverso da post e
pagine, come vedremo in seguito.
I post, ovvero gli articoli, sono contenuti caratterizzati da una data di pubblicazione,
requisito fondamentale che wordpress iumpiega per la classificazione temporale dei
nuovi testi.
Per creare un nuovo articolo possiamo trovare la voce aggiungi nuovo nel menu a
sinistra, nel gruppo articoli.
In Wordpress gli articoli devono sempre appartenere ad una categoria (che vedremo
inseguito). Nel caso non venga specificata una categoria dal pannello a destra nella
pagina di creazione di un nuovo post verr selezionata la categoria di default, che in
una nuova installazione uncategorized. E bene sempre aggiornare tale categoria
al fine di non renderla visibile agli utenti. La categoria di default bene che sia quella
di cui posteremo il maggior numero di articoli.
Ogni post pu essere accompagnato da dei tag. I tag servono ad etichettare il contenuto ed ogni post pu avere un numero X di tags. E bene che questi siano pertineti
al contenuto e che non siano pi di una decina, a meno di scelte particolari a fini
SEO.
Quando scriviamo un articolo possiamo pubblicarlo immediatamente o salvarlo
come bozza per pubblicarlo in seguito, o schedulizzare la pubblicazione.
3.2 Pagine
3.3 Autori
3.4 Multimedia
Wordpress di default multimediale. Consente una gestione dinamica ottimale di
audio, video e , naturalmente, foto.
La gestione dei files multimediali pu avvenire in modo diretto tramite la sezione
media del menu laterale. Possiamo caricare senza limitazioni ogni tipo di file. Il
limite di upload di base 64 Mb a meno di restrizioni ulteriori del server.
Dalla versione 2 di wordpress lupload dei files avviene mediante un flash uploader,
che possiede una variante ajax disponibile con plugin esterni.
Alcuni browser o alcune configurazioni di rete bloccano lupload flash pertanto possiamo scegliere in ogni momento di caricare i files con il cosiddetto uploader classico, un normale form con invio html dei files.
Ogni file che viene caricato mediante linterfacia media ha una corrispondenza in
database nella tabella *_posts con parametro post_type con valore attachment,
e specifica sul tipo di file nel campo post_mime_type.
Ogni file caricato pu avere un titolo, una descrizione e tutta unaltra serie di parametri. Mediante plugin aggiuntivi possiamo gestire al meglio anche file video, audio o
altro.
Esistono anche plugin per la modifica in realtime dei files, e persino una sorta di
photoshop per wordpress. Sono molto utili se la gestione dei files deve essere adata a personale che non dispone di softwares esterni.
3.6 Autosave
Wordpress effettua dei salvataggi automatici ogni 30 secondi se rileva modifiche
quando siamo in modifica di un contenuto. Tale funzionalit pu essere disabilitata
o gestita in modo diverso mediante il plugin gratuito WP Auto Save Management.
Se ad esempio scrivete i contenuti direttamente in wordpress si consiglia un plugin
come questo per evitare di generare 10 copie di backup in mezzora e riempire il database di immondizia.
Quando per caso usciamo senza salvare le modifiche, rientrando in modifica di quello stesso contenuti comparir lavviso vi un salvataggio automatico... che consente
di recuperare eventuali modifiche non salvate.
3.8 Le categorie
Le categorie servono a raggruppare gli articoli rapidamente, aiutano il lettore nella
ricerca e mantengono ordinato il sito. Wordpress di default, e quasi tutti i temi, sono
predisposti per organizzare i contenuti degli articoli in categorie.
Le categorie possono essere annidate (gerarchicamente) e possono essere visualizzate in qualunque punto di un tema.
La differenza dai tag riassunta da wordpress nel seguente esempio: se scriviamo la
ricetta di un dolce e lo mettiamo sotto la categoria dolci, possiamo usare tag come
cioccolato, biscottini, glassa.
Ogni articolo pu appartenere a ciascuna categoria presente in archivio, senza limitazioni. Nel caso di categorie gerarchizzate, quasi sempre bene infatti includere larticolo anche nella categoria madre pi generica.
Le categorie possono essere aggiunte al volo in fase di creazione di un post.
10
4) Ottimizzazione di base
4.1 Plugin SEO fondamentali
Se fate un sito commerciale, deve essere trovato.
Tra migliaia di plugin SEO, dopo anni di esperienza, ecco quelli che consiglio come
fondamentali:
- Platinum SEO
- Quick Cache
- DB Cache Reloaded
- Smart 404
- Post Teaser
- SEO Smart Links
- SEO Search Terms
- Post control core
- Post control
- XML Sitemap
- 404 report
- Similar Posts
11
12
Il terzo metodo, ovvero la modifica del tema wordpress per linserimento di contenuti malevoli, che possono andare dai semplici link alliniezione di virus o sniffer, viene
attuato sfruttando degli exploit della funzione per la modifica del tema che vi nel
pannello amministrativo di wordpress.
Tale funzione tra le vulnerabilit maggiori del cms, in quanto prevede la modifica
diretta dei files presenti nel server, e le query di modifica, essendo piene di codice
html, php e js native nei files del tema, non soggetta alla messa in sicurezza che
wordpress attua sempre sui dati in post mediante la funzione sanitize.
Nella pratica quindi molto facile hackerare un tema, mentre molto dicile hackerare i contenuti.
Una soluzione molto ecace contro questi problemi il plugin WP Firewall. Tale
plugin gratuito impedisce tutte le query contenenti codice pericoloso, tuttavia il suo
funzionamento preclude anche le funzioni che espongono il sito agli attacchi.
Dopo installato il plugin, infatti, non sar possibile usare la funzione per la modifica
dei files del tema dallinterfaccia wordpress.
Nel caso servissero funzioni bloccate, possiamo sempre disattivarlo temporaneamente.
Si possono anche impostare dei report via mail in caso di attacchi. Nel report sono
anche riportate le query che hanno scatenato lallarme.
Ulteriori livelli di sicurezza possono essere raggiunti mediante restrizioni da applicare
al file .htaccess.
13
5) I temi
5.1 Struttura di base di un tema
Questo argomento molto vasto, e per una rapida panoramica si consiglia questo
articolo:
http://yoast.com/wordpress-theme-anatomy/
Analizziamo tuttavia gli aspetti principali di un tema di wordpress.
Wordpress consente di tenere in archivio X temi, ovvero grafiche, e possono essere
attivati con un click.
Un tema , nella pratica, il modo di presentare i contenuti. E composto da files CSS e
PHP, in pi a volte contengono anche files JS.
Le sue parti in PHP richiamano mediante funzioni o placeholders i contenuti che lengine di wordpress ha gi preparato in anticipo, e sui quali sono gi state applicate le
mutazioni richieste dai vari plugins.
Il tema quindi lavora solo in fase di realizzazione della pagina finale, mentre i dati
sono sempre ricavati e assemblati a monte.
Wordpress consente, di default, la distinzione tra 4 templates diversi allinterno di un
tema, destinati alla visualizzazione dei diversi tipi di contenuto: home page, articoli,
pagine ed archivi:
- index.php
- Single.php (usato per mostrare i contenuti di un singolo post)
- Page.php (usato per visualizzare le pagine)
- Archive.php / category.php / tag.php (che visualizzano liste di contenuti)
Non eseste una struttura canonica per i templates di un tema, potremmo anche
usare 10 templates o solo uno. Si distinguono templates diversi solo per migliorare la
visualizzazione e rendere pi agevoli gli interventi di manutenzione del php.
Possiamo infatti avere anche temi fatti da 1 solo file (index.php) che verrebbe usato
di default per la rappresentazione di tutte le tipologie di contenuto.
Vi sono poi altre pagine che possono facoltativamente essere impiegate:
- 404.php (usata per gli errori 404)
- author.php (impiegata di default per visualizzare il profilo di un autore)
Nota: un tema pu prevedere infiniti modelli (templates), e mediante un plugin aggiuntivo specifichiamo quale modello vogliamo utilizzare per ogni singola pagina,
salvando tale informazaione come postmeta associato alla pagina o al post.
Per assurdo, potremmo avere un sito con 10 post identici e visualizzare ognuno con
un layout diverso. La stessa differenziazione pu essere operata con lintero tema,
cambiando tema per ogni post.
14
I requisiti fondamentali per un tema sono solo 2: il file index.php ed il file style.css
Tali files devono risiedere in radice del tema, ed il tema deve stare in wp-contents/
themes/
Wordpress trova i temi analizzando, nella cartella themes, i file style.css che trova
nelle cartelle.
Un tema viene ritenuto tale quando lo style.css contiene, allinizio del file, i tag descrittivi, che sono i seguenti, messi sottoforma di commento:
Theme Name: Tema XXXX
Theme URI: http://wordpress.org/
Description: Theme for Unoformat
Author: Igor Nardo - Andrea Cinque
Version: 1.0
License: reserved
Solo il tag theme name obbligatorio, gli altri sono omissibili.
Anch wordpress infividui un tema come tale, quindi, dobbiamo avere una cartella
contenente un file style.css che contenga questo codice:
@charset utf-8;
/* CSS Document */
/*
Theme Name: Tema Unoformat
*/
Scritto questo, il file style.css pu essere vuoto, e possiamo anche mettere tutti i css
in una sottocartella diversa.
La parte dinamica del tema, ovvero il PHP, solitamente composto da 4 elementi:
- header.php
- the loop
- sidebar.php
- footer.php
Queste parti sono solitamente divise in files diversi, e wordpress si aspetta che sia
cos quando deve includere nel tema i vari plugins.
15
functions.php
Il function.php un file opzionale (ma ormai obbligatorio) mediante il quale possiamo estendere le classi native del core di wordpress, inserire nuove sidebars e menu,
o specificare al volo interventi dinamici sui contenuti, inserendo funzioni collegate
agli hooks di wordpress.
Vedremo in seguito il funzionamento del file functions.php in modo pi specifico.
5.3.1 header.php
In questo file ci sono solitamente tutti i tag html di apertura della pagina, dal doctype
alla chiusura del </HEAD>
E fondamentale che la chiusura dellhead sia inclusa nel file header.php perch
usato come tag di riconoscimento per tutti i plugin che devono inserire nuovi contenuti nellhead dellhtml.
Tuttavia nellheader.php possibile proseguire lhtml aprendo il <BODY> e scrivendo
cos una sola volta tutta la parte di html e php che dovr essere ripetuta in tutti i templates del tema, come logo, menu, eccetera...
Nellheader, come in tutte le altri parti del tema, possiamo inserire ogni tipo di html e
php, js o css che vogliamo, senza restrizioni.
In questo punto non possiamo per inserire contenuti che devono essere ricavati
allinterno del LOOP di wordpress, che non sono qui disponibili.
16
5.3.2 Il loop
The Loop la parte pi complessa del tema, e prevede per ciascuna pagina un
lavoro di estrazione e rappresentazione dei contenuti dinamici mediante le funzioni
native del core.
Il loop inizia con una query che determina quale pagina (o gruppo di pagine) dobbiamo estrarre. E basato su un ciclo WHILE e finisce con un ENDWHILE. Il file che
contiene il loop deve contenere, allinterno di tale elemento, tutto il codice necessario
per visualizzare le parti realizzate dal loop, come titolo, contenuti testuali, categorie e
tags, estrazione dei postmeta, estrazione dellautore e quantaltro.
Per ciascun tipo di pagina (ovvero tipo di template allinterno del tema) possiamo
estrarre parti diverse dal loop, ad esempio possiamo fare in modo che le pagine
visualizzino solo il titolo ed il contenuto testuale, e ricavare invece autore e categorie
per gli articoli.
La struttura dei templates del tema pu importare esternamente la parte relativa al
loop.
Wordpress ad esempio, qualora debba visualizzare una pagina, user di default il
modello page.php.
In page.php tuttavia possiamo, per tenere il codice in ordine, inserire solo il richiami
per header, footer, loop e sidebar.
Per importare uno specifico loop basta chiamare il loop loop-page.php o loop-single.php e richiamarlo scrivendo, allinterno del template, il seguente comando:
get_template_part( loop, page );
In automatico wordpress importer, in quel punto, il file loop-page.php
Il secondo parametro della funzione get_template_part pertanto la specifica del
loop da importare, che corrisponde alla parte di nome del file separata dal trattino -
Uno stesso template pu contenere istruzioni condizionali per importare loop diversi,
come la seguente, usata per scegliere un loop custom sono nel caso dellhome page
<?php
if(is_front_page() ){
get_template_part( loop, index );
}else{
get_template_part( loop, page );
}
?>
NB is_front_page una funzione nativa che true qualora la pagina sia quella selezionata
da gestionale come home page del sito.
17
wp_login_form
wp_lostpassword_url
wp_register
wp_meta
bloginfo
get_bloginfo
get_current_blog_id
wp_title
single_post_title
single_cat_title
single_tag_title
single_term_title
single_month_title
get_archives_link
wp_get_archives
calendar_week_mod
get_calendar
allowed_tags
edit_bookmark_link
edit_comment_link
edit_post_link
edit_tag_link
get_admin_url
get_home_url
5.3 Le sidebars
Una sidebar unarea dellhtml atta ad ospitare i cosiddetti widget, che sono porzioni di codice statico o dinamico selezionabili dal pannello di amministrazione di
wordpress.
A scapito del nome non deve necessariamente essere su una colonna, ma pu stare
dovunque nel template.
Un tema pu avere infinite sidebars.
Per inserire nellhtml una sidebar dinamica (precedentemente abilitata) basta inserire questo codice di esempio:
<?php dynamic_sidebar(nomesidebar_custom); ?>
In questo modo verr inserita la sidebar che nel gestionale compare come
nomesidebar_custom.
Nel caso ad esempio volessimo avere pi di una sidebar, suciente inserire questo
codice nel file functions, che vedremo dopo:
register_sidebar(
array( name => login_sidebar);
);
Nel pannello gestionale per linserimento dei widget troveremo immediatamente una
nuova sidebar disponibile e pronta ad accogliere i widget o del testo.
Se volessimo specificare del codice html che delimiti automaticamente la sidebar,
come div o liste, possiamo aggiungere alla funzione register_sidebar alcuni parametri opzionali:
register_sidebar(array(
name => login_sidebar,
before_widget => <div class=login>,
after_widget => </div>,
before_title => <h2>,
after_title => </h2>
));
18
5.4 I menu
Per divenire pi CMS che BLOG, dalle ultime versioni wordpress, ha ideato una gestione customizzata dei menu.
I menu sono liste non ordinate di elementi linkabili che pu essere customizzata inserendo manualmente le voci prescelte dalla lista di pagine e categorie, oppure inserendo manualmente link a qualunque url.
Possiamo inserire infiniti menu nel tema. Per far comparire lopzione dei menu sul
gestionale wordpress, che compare nel menu a sinistra di wp-admin sotto la voce
aspetto, dobbiamo usare il file functions.php del tema inserendo, ad esempio, questo codice:
function funzioni_post_setup() {
add_theme_support( menus );
}
add_action( after_setup_theme, funzioni_post_setup );
La funzione add_action il metodo impiegabile per agganciarsi agli hook di wordpress, ovvero eseguire la funzione specificata al secondo parametro di add_actions
quando wordpress si trova nella condizione after_setup_theme, che per lappunto
un hook. Questo tema verr visto in seguito.
Linserimento del controllo post setup serve perch wordpress aggiunga i menu
solo dopo che il tema stato installato.
Per richiamare un menu inseriamo questo:
<?php
wp_nav_menu( array( menu => menu_pagina, container_class => menu-pagina ) );
?>
Dal gestionale dei menu dovremo assegnare al menu un nome uguale al parametro menu assegnato alla funzione wp_nav_menu (menu_pagina).
Tra i parametri accettati dalla funzione vi container_class, che attribuir direttamente la classe specificata al tag <UL> di apertura del menu.
19
20
6) I plugins
Usare wordpress senza plugins pressoch impossibile, proprio per la sua natura
scalabile secondo la quale le funzionalit di base sono estremamente ridotte e generiche. I plugins sono il modo naturale per adattare un sito wordpress alle proprie
esigenze, modificare il modo di visualizzare i contenuti, estendere le funzionalit,
migliorare lesperienza di navigazione.
Premesso che esistono plugins per tutto, il primo posto in cui cercarli indubbiamente wordpress.org.
Nella sezione plugin di wp-admin, alla voce Aggiungi nuovo, vi un motore di
ricerca molto pratico per trovare quello che ci serve.
Se ad esempio volessimo un plugin per creare le sitemap xml, ci basta scrivere xml
sitemaps per vedere varie opzioni possibili.
Per scegliere il migliore, possiamo basarci sulla descrizione, sul punteggio e sul numero di download (disponibile visualizzando i dettagli).
Un buon metodo scegliere quelli che hanno rating alto (le stelline) e molte valutazioni. Ci nonostante, non detto che poi il plugin sia quello che fa per noi. Bisogna
valutare la compatibilit con la versionedi wordpress installata e, una volta testato,
vedere se svolge le funzioni dichiarate.
Quando scegliamo un plugin, nel caso il sito abbia una certa importanza e desideriamo garantire uno standard qualitativo nel tempo, bene verificare che i creatori dei
plugin abbiamo una certa adabilit, e che vi siano gli upgrade necessari nel corso
del tempo per fare fronte a successive versioni del cms. Per farlo, possiamo visitare
la home page del plugin dalla pagina dei dettagli dello stesso.
21
6.4 Testing
Prima di installare un plugin eseguire sempre un backup del database, per sicurezza.
Linstallazione identica a quella dei temi: possiamo installare i plugin dallinterfacciadi wp-admin, scaricarli e ricaricarli zippati sempre dallinterfaccia di wp-admin
oppure caricarli via ftp nella cartella wp-content/plugins, ed attivarli in seguito dal
gestionale.
Non tutti i plugin sono programmati in modo impeccabile, e pu capitare rare volte che linstallazione di un plugin progiudichi il funzionamento di un altro, o blocchi
lintero sito.
Vi sono alcuni plugins che per loro natura o perch scritti male confliggono.
Limportante sempre testare il sito dopo linstallazione, e fare attenzione ad eventuali avvisi di errore che potrebbero comparire in wp-admin.
Nel caso di conflitti, bene procedere alla disattvazione progressiva di tutti i plugin
installati fino a trovare quello responsabile, procedendo per esclusione.
In questo modo si noter anche se sia un plugin specifico a dare problemi o se sia la
convivenza di pi plugin insieme.
Nel caso di conflitti, spesso possibile trovare un plugin alternativo che non generi il
problema rtiscontrato.
Nelcaso di un sito web standard, visibile al pubblico, di contenuti misti (testi/immagini) vi sono alcuni plugin di base che bene installare:
Platinum SEO Pack:
Consente di specificare i meta tag html generali e per ogni pagina, consente di stabilire quali pagine indicizzare e come gestire altri meta tag importanti come il canonical
url.
Google XML Sitemaps:
Genera automaticamente la sitemap per Google, utile per indicizzare rapidamente i
contenuti, che va poi segnalata a Google mediante i webmaster tools.
Contact Form 7:
Consente di inserire facilmente un form contatti nelle pagine.
Clean Up:
Serve a rimuovere, mediante un pulsante nella bacheca del Wp-admin, tutte le informazioni vecchie e inutili dal database, come le revisioni ed i post cancellati.
Post teaser:
consente una migliore gestione dellabstract dei post da mostrare nelle liste di articoli, che evita la visualizzazione di contenuto duplicato o dei post interi nelle liste.
Wordpress Backup (by BTE):
un ottimo gestore dei backup, che invia per e-mail le parti di wordpress backuppate a
intervalli regolari predefinibili.
22
WP Missed Schedule:
I post schedulati di wordpress hanno spesso il problema di non venire pubblicati al
momento schedulato, questo per un conflitto tra le impostazioni della maggior parte
degli hosting ed il funzionamento base dei post schedulati. Questo plugin risolve il
problema, garantendo la pubblicazione.
Wp Super Cache:
E un modo ecace per preservare le prestazioni del sito anche con grande carico di
visitatori. Wordpress notoriamente un CMS pesante senza plugin di caching, per
questo WP Super Cache fortemente consigliato anche dal team di Automattic.
DB Cache reloaded:
Riduce vertiginosamente il carico sul server cachizzando tutte le chiamate al database. E possibile specificare a quali tabelle fare empre chiamate realtime senza cachizzarle.
7) Functions.php
Importante: le estensioni vengono inserite mediante hooks. Sfruttando gli hooks di
wordpress possiamo modificare le funzioni di base, ma per conoscere la loro lista
completa possiamo visitare questa pagina:
http://codex.wordpress.org/Function_Reference
Il file functions.php non deve essere incluso manualmente nel template, la sua presenza nella cartella del tema ne causa lautoinclusione.
I postmeta sono variabili aggiuntive associate alle pagine che consentono di creare
nuove coppie nomecampo-valore molto utili per arricchire la struttura delle pagine
con nuove caratteristiche.
Nel caso i postmeta vadano inseriti a mano, ci viene incontro un eccellente plugin
chiamato More Fields. Tramite More Fields possiamo creare gruppi di postmeta
per ogni tipo di dato possibile, come numeri, testo o altro.
Mediante i postmeta possiamo, ad esempio, specificare unimmagine come in primo
piano per un post, estendere i campi presenti per creare un gestionale di annunci,
inserire specifiche tecniche di prodotti e molto altro.
Come fare?
Si usa la funzione register post type di Wordpress, che far comparire nel menu del
wp-admin la nuova voce relativa al custom post type.
I nuovi post type possono essere nominati a piacimento, tuttavia in wordpress buona rebola usare una radice che faccia riferimento al plugin per il quale il post type
stato generato. Se il plugin si chiama ad esempio ecommerce bene chiamare i
nuovi tipi di post non solo prodotti ma ecommerce_prodotti.
Esempio:
add_action( init, create_post_type );
function create_post_type() {
register_post_type( acme_product,
array(
labels => array(
name => __( Ecommerce Prodotti ),
singular_name => __( Ecommerce_Prodotti )
),
public => true,
has_archive => true,
)
);
}
Una volta aggiunto questo codice al file functions.php nella cartella del tema, troveremo nel menu a sinistra una nuova voce riportante il nome Ecommerce Prodotti,
che ci consentir di creare nuove pagine contraddistinte da questo post_type nel
database, che potranno essere estratte con query specifiche.
Questo ci consente anche, con il plugin more_fields, di inserire nuovi campi custome (postmeta) specifici per questa tipologia di pagina.
Con questo processo possiamo adattare facilmente wordpress ad accogliere qualunque tipo di contenuto.
7.3 Hooks
Gli hoocks sono letteralmente degli agganci tramite i quali estendiamo le funzioni di
wordpress. La documentazione uciale si trova qui:
http://codex.wordpress.org/Plugin_API
La lista delle action tipiche durante lesecuzione qui:
http://codex.wordpress.org/Plugin_API/Action_Reference
24
ACTION HOOKS
Gli action hooks sono usati dove wordpress ci consente di infilare un pezzo del nostro codice allinterno di una funzione nativa.
Hanno principalmente 3 funzioni:
- Infilare un pezzo di html
- modificare lo stato di variabili globali in quel punto del programma
- modificare i parametri delle funzioni (do_action_ref_array() )
Gli action hooks si richiamano mediante la funzione add_action()
Questa funzione si aspetta 2 parametri:
- dove (quale funzione di wordpress estendere)
- cosa (quale funzione personalizzata eseguire)
A differenza dei filter hooks che vedremo poi, gli action hooks non devono per forza
avere un return della funzione, in quanto possono eseguire funzioni a s quali, per
ipotesi, un mail() o una qualche query custom al database.
In questo semplice esempio tratto dal codex di wordpress, vediamo come fare in
modo, tramite un hook, di ricevere una mail alla pubblicazione di un nuovo articolo.
25
class emailer {
function send($post_ID) {
$friends = bob@example.org,susie@example.org;
mail($friends,sallys blog updated,I just put something on my blog: http://blog.
example.com);
return $post_ID;
}
}
add_action(publish_post, array(emailer, send));
Questo add_action quindi si aggancia allhook publish_post ed esegue la funzione
send della classe emailer, nel momento in cui viene eseguita la funzione di pubblicazione.
Se quindi, ad esempio, volessimo includere del testo html extra come dei meta tag
html nellead del sito, possiamo estendere la funzione wp_head, con un hook come
questo:
function lamiafunzione (){
echo <meta name=miometa content=valoredel_meta />;
}
add_action( wp_head, lamiafunzione );
FILTER HOOKS
I filtri sono un po pi complessi degli action hooks. Un filtro una funzione che
viene eseguita allinterno di un normale ciclo di wordpress allo scopo di manipolare i
dati in corso di esecuzione.
Dove previsto, i contenuti possono essere quindi passati per funzioni da noi create,
custom, che devono restituire in output, mediante il comando return, i dati modificati che hanno ricevuto in ingresso.
Facciamo un esempio classico di filtro.
Fingiamo di voler eliminare dal testo di un post la parola banana.
La creazione del contenuto viene agganciata allhook the_content, pertanto ci servono 2 cose: la funzione di replace e lattivazione del filtro.
26
function togli_banana($content)
{
$content = str_replace(banana, ,$content);
return $content;
}
add_filter(the_content,togli_banana);
Con questo codice inserito nel file functions.php, da tutti i testi del sito verr eliminata la parola banana, senza che la cancellazione avvenga effettivamente nei dati del
database.
Ovviamente si possono operare trasformazioni molto pi complesse con i dati oggetto del filtro.
7.4 Shortcodes
Gli shortcodes sono sicuramente una delle migliori innovazioni delle ultime versioni
di wordpress. Assolvono ad una funzione fondamentale: inserire nel corpo delle pagine del contenuto dinamico parametrizzabile mediante un semplice placeholder.
Questo rende facile a chiunque funzioni complesse come inserire in un post una gallery fotografica, del codice html di youtube o ogni altro tipo di contenuto.
Uno shortcode ha questa forma:
[NOMESHORTCODE]
Il codice che vedremo a breve sostituisce automaticamente lo shortcode con il risultato della funzione corrispondente.
I parametri possono essere passati alla funzione mediante lo shortcode in questo
modo:
[NOMESHORTCODE MIAVAR=valore]
Vedremo ora come abilitare lo shortcode in questione, ad esempio per stampare in
un punto preciso del post la frase [NOME] mangia la mela.
27
Nel file functions.php abilitiamo lo shortcode, ed inseriamo una funzione che abbia
come return ci che noi desideriamo venga printato.
Ricordiamo che non sono filtri, pertanto il contenuto originale non viene modificato,
ma subisce solo laggiunta nel punto preciso dello shortcode.
Il return della funzione pu anche essere vuoto.
Fingiamo che nel corpo del nostro post abbiamo aggiunto lo shortcode
[MANGIA NOME=Marco]
Il nome dello shortcode MANGIA e il parametro si chiama NOME
function aggiungi_frase( $atts ) {
extract( shortcode_atts( array(
nome => gianni,
), $atts ) );
return $nome. mangia la mela;
}
add_shortcode( MANGIA, aggiungi_frase );
La funzion extract, molto utile usando gli shortcode, estrae larray bidimensionale
$atts che viene generato automaticamente al passaggio delle variabili mediante
shortcode, e genera una serie di variabili chiamate come il primo elemento di ciascun
record dellarray.
La variabile nome si chiamer quindi $nome nel resto della funzione.
nel caso sia vuota assumer il valore di default gianni.
Alla fine quindi, in un post dove avevamo scritto ad esempio:
Lerba verde il cielo azzurro, [MANGIA NOME=MARCO], meglio un uovo oggi che
una gallina domani.
troveremo scritto, in fase di visualizzazione del lato pubblico (NON DI EDITING!) questa frase:
Lerba verde il cielo azzurro, Marco mangia la mela, meglio un uovo oggi che una
gallina domani.
28
9 Plugins
9.1 Cos un plugin
Un plugin un codice autonomo che amplia le funzioni di base senza modificare il
core del software.
I plugin sono di molti tipi, ve ne sono milioni gratuiti ed anche alcuni a pagamento,
possono essere creati autonomamente o installati automaticamente dal gestionale
wp-admin.
I plugin sono installati nella cartella wp-content/plugins
29
Lultimo parametro della funzione add_options_page definisce quale funzione dovr essere chiamata
dopo il click sul pulsante. Potremo quindi poi creare una funzione dal nome website_settings_options che stamper il codice da noi desiderato come interfaccia gestionale. In mancanza di tale
codice, nel gestionale vedremo tutto il codice html generato dal plugin.
30
function website_settings_options()
{
if (!current_user_can(manage_options)) {
wp_die( __(Non hai il permesso di accedere alla pagina) );
}
}
A questo punto, dopo lIF, possiamo aggiungere il form, ed il codice completo diverr
quindi il seguente:
<?php
/*
Plugin Name: Website Settings
*/
add_action(admin_menu, website_settings_menu);
function website_settings_menu() {
add_options_page(Website Settings, Website Settings, manage_options,
website_settings, website_settings_options);
}
function website_settings_options() {
if (!current_user_can(manage_options)) {
wp_die( __(You do not have sucient permissions to access this page.) );
}
?>
<div class=wrap>
<form method=post action=<?php echo $_SERVER[REQUEST_URI]; ?>>
<h2>Website Settings</h2>
<input type=text name=mia_var_generale />
<p class=submit>
<input type=submit name=submit value=<?php _e(Update options »); ?> />
</p>
</form>
</div>
<?php } ?>
31
(chiave primaria)
(supporto multiuser per gestione di pi blog)
(nome della variabile)
(valore della variabile)
(se yes lopzione viene caricata da wp_load_alloptions() - yes di default)
32
SOAP lacronimo di Simple Object Access Protocol , e rappresenta un procollo basato sul linguaggio XML per lo scambio di informazioni da parte delle applicazioni via
HTTP. Il protocollo SOAP una raccomandazione del World Wide Web Consortium
dal 2003 ed oggi uno dei metodi per permettere la comunicazione su internet dei
programmi attraverso il protocollo HTTP che certamente un protocollo supportato
da tutti i browser e da tutti i server permettendo quindi semplicit di utilizzo ed implementazione; inoltre SOAP basandosi sulla comunicazione HTTP permette linteroperabilit di differenti sistemi operativi con differenti tecnologie e differenti linguaggi
di programmazione.
Fonte: http://blog.glue-labs.com
Lautenticazione SOAP con Wordpress consente ad utenti di un sito esterno di essere riconosciuti dal sito wordpress come utenti registrati presso lo stesso, pur senza
effettuare una reale registrazione.
Allatto della prima autenticazione, viene creato nel database wordpress un utente
corrispondente a quello che ha effettuato laccesso.
Per raggiungere questo obiettivo possibile usare il plugin WP Soap Authentication,
che una volta configurato ci agevola nellautenticazione SOAP.
Il plugin scaricabile gratuitamente dalle risorse di wordpress, o installabile dal pannello wp-admin.
Pe lutilizzo del plugin necessario, come da definizione del protocollo SOAP, che vi
sia a disposizione il servizio atto ad interrogare il database utenti originale, e restituire a wordpress la risposta SOAP XML necessaria.
Dopo installato il plugin e verificato la funzionalit del servizio, possibile configurare il pluin inserendo tutte le specifiche del servizio che dovr chiamare.
Bug del plugin e risoluzione
Il funzionamento di questo plugin ha un problema, pi che un bug, riguardante laccesso di utenti le cui credenziali siano cambiate nel database originale, oppure non
pi presenti in esso, ma solo tra gli utenti di wordpress.
Il plugin infatti progettato in modo che un utente, dopo la prima autenticazione, sia
in grado di autenticarsi su wordpress anche se non risulta pi tra gli utenti del servizio SOAP, o se le sue credenziali vengono modificate.
Nel caso Wordpress non sia gestito come sito a parte, e quindi la lista utenti debba
essere univoca, tale logica consentirebbe ad utenti eliminati di proseguire con laccesso al sito wordpress, e va pertanto modificata.
33
34