Alcuni discutono se WordPress sia solo una piattaforma di blogging o un vero CMS; altri, se WordPress sia lo strumento giusto per sviluppare veri e propri applicativi web... ma se fai Startup, non hai tempo per queste discussioni: hai bisogno di costruire un Minimum Viable Product per validare la tua idea e sottoporla a potenziali utenti e investitori. In questo workshop, vedremo gli strumenti adatti per estendere struttura dati e interfacce utente di WordPress, e realizzare rapidamente e con semplicità applicativi web sofisticati.
1. per Startup
Costruisci il tuo MVP* in poche ore con WordPress
* Minimum Viable Product (MVP) is a strategy used for fast and quantitative market testing of a product
or product feature, popularized by Eric Ries for web applications
[wikipedia]
2. Quando «WordPress» e «MVP» si incontrano nella stessa frase…
Will it scale?
E il Data Model?
Ma è un CMS!
7. Localtourguide.io - un marketplace per guide turistiche locali
Gli elementi
Blog
News, Content
marketing…
Pages
About, Why Join?...
Tours
Main feature
Bookings ReviewsGuide
Turisti
3
8. Localtourguide.io - un marketplace per guide turistiche locali
Map to WordPress
Blog
News, Content
marketing…
Pages
About, Why Join?...
Tours
Main feature
4.1
Custom post type + Custom Fields
Bookings Custom post type + Custom Fields
Reviews Tour comments
9. Localtourguide.io - un marketplace per guide turistiche locali
Map to WordPress
Guide Turisti
4.2
Post Author
Custom roles
Tours
Main feature
Guide
Posts 2 PostsBookingsTuristi
Posts 2 PostsBookingsTours
Main feature
11. Localtourguide.io - un marketplace per guide turistiche locali
Strumenti
Custom Roles
Post and User connections
Codex
http://codex.wordpress.or
g/Roles_and_Capabilities
Plugins
http://wordpress.org/plugins/user-
role-editor/
…
Plugins
http://wordpress.org/plugi
ns/posts-to-posts/
https://github.com/scribu/wp-posts-
to-posts/wiki
5.3
12. Codice: Custom post types + capabilities
6.1
Stiamo creando delle nuove «custom
capabilities», che però nessun ruolo possiede.
Occorre assegnarle almeno all’admin,
altrimenti nessuno avrebbe i privilegi necessari
per manipolare questo post type
Da chiamare su init,. i.e. add_action( 'init', 'register_cpt_tour' );
13. Codice: Custom post types + capabilities
6.2
register_cpt_caps aggiunge al ruolo
administrator (ed eventuali altri)
le custom capabilities associate
ad un custom post type
Ora quel custom post type risulta accessibile
(almeno per gli administrator)
N.B. Le operazioni sui ruoli sono da chiamare solo una volta, all’attivazione, perché sono persistenti, i.e.
add_action( 'init', 'register_cr' );
function register_cr()
{
$registered = get_option('ltg_cr_created');
if( empty($registered) ) {
register_cpt_caps('tour');
// altre operazioni sui ruoli
add_option('ltg_cr_created', true);
}
}
14. Codice: Custom post types + capabilities
6.3
register_cr_guide usa clone_role per creare un
nuovo ruolo guide, basato su subscriber,
e aggiunge il solo privilegio di creare e modificare
(ma non pubblicare) i propri post di tipo tour
clone_role crea un nuovo ruolo
copiando uno dei ruoli esistenti in WP_Roles
15. Codice: Custom post types + capabilities
6.4
Un ultima cosa: quando creiamo un nuovo tour,
vogliamo poter selezionare come autore
anche tutti gli user con ruolo guide
16. Codice: Post and User Connections
6.5
…nel frattempo bbiamo creato anche
un custom post type booking
per gestire le prenotazioni
Ogni booking dev’essere collegato a:
• Uno o più partecipanti (user)
• Il relativo tour
Specifichiamo queste relazioni con l’api
del plugin Posts 2 Posts
17. Codice: Post and User Connections
6.6
Abbiamo creato anche un
custom post type booking
per gestire le prenotazioni
Ogni booking dev’essere collegato a
• Uno o più partecipanti (user)
• Il relativo tour
Specifichiamo queste relazioni con l’api
del plugin Posts 2 Posts
Ed ecco il risultato in /wp-admin
18. Configurazione: Custom Fields
6.7
ACF ci permette di gestire i campi
aggiunti con un’interfaccia grafica molto
efficiente.
Ecco il risultato in /wp-admin
19. Cosa manca: gestione bookings
7 I custom post type booking non sono contenuti,
e devono essere nascosti dal front end.
Ma abbiamo comunque bisogno degli url per azioni
di richiesta/accettazione/rifiuto delle prenotazioni
Per manipolare i booking
definiremo degli url virtuali, non
legati a nessun post o pagina
Il ciclo di vita della prenotazione potrà essere gestito
mediante dei custom post status
20. Il Backoffice
8
Un backoffice pronto all’uso e conosciuto da molte persone
http://wp.smashingmagazine.com/2012/05/17/customize-wordpress-admin-easily/
• Il logo nella pagina di login
• I loghi nell’header e footer dell’area amministrazione
• Gli elementi della bacheca
• Lo schema colori
C’è spesso una componente «di facciata» in un MVP.
In questi casi meglio personalizzare graficamente il backoffice
21. Tutto il codice testato e funzionante?
Metti la tua stellina sul repo di github!
Lo pubblico se arrivamo almeno a 20
Promesso!
9
https://github.com/ptbello/localtourguide