WordPress è diventato POP

Prendo spunto da un articolo letto qualche giorno fa per portale il ragionamento della cultura di massa su quello che, dal mio punto di vista, sta succedendo all’interno della community di WordPress.

Lo voglio riassumere cosi:

nel bene o nel male WordPress sta diventato POP.

Si tratta ovviamente di considerazioni personali ma su cui mi piacerebbe confrontarmi…

Se parliamo di WordPress non possiamo più riferirci ad uno strumento relegato a piccole nicchie di persone Nerd che nel buio della loro cameretta lo installano e lo configurano per il proprio blog personale.
Non possiamo più parlare di gente sfigata senza vita sociale che passa il tempo davanti a righe di codice per realizzare temi e plugin “homemade” a proprio uso e consumo per poi condividerli con altri 4 amici.

Sarebbe sciocco non rendersi conto di quanto il processo mentale legato a logiche “open source” abbiano creato una community aperta a culture diverse e competenze eterogenee dove esperienze e storie completamente differenti stiano confluendo e vivendo in un ecosistema auto-sostenibile ed in continua crescita.

C’è chi con WordPress non solo si è inventato un lavoro, ma ne ha fatto un vero e proprio business.
Questo è il bello della logica opensource.
Anche quando è contaminato anche da interessi personali ed economici.
(nota: che poi mi piacerebbe sapere cosa ne pensa Richard Stallman di questo aspetto)

Ed è per questo che adesso, oltre al Nerd, è facile trovare anche chi dopo un analisi di mercato fa sviluppare un template che possa coprire il più ampio numero di bisogni per poi vederlo e cercare di fare soldi.

Poi ci sono le persone “normali” che una volta ti chiedevano aiuto anche solo per accedere al login di WordPress, mentre adesso, uno su cinque, come le sorpresine kinder, vuole essere autonomo e con un impegno davvero minimo è in grado di avere il suo sito pronto e configurato ed iniziare a buttarci dentro contenuti in meno di un’ora.

La possibilità di rendere le persone così autonome possiamo e dobbiamo considerarla una cosa positiva, fa parte del processo di miglioramento continuo dell’usabilità di questo strumento, ma io, da pecora nera quale sono, non riesco a viverla sempre bene.
A volte mi trovo a pensare che sia meglio che il meccanico faccia il meccanico e che il dentista faccia il dentista…

Non voglio essere fraintesto perchè sono davvero contento di vedere così tante persone presenziare ad un WordCamp, venire ogni mese ai Meetup e partecipare a giornate per contribuire in qualsiasi modo a questo progetto ma c’è qualcosa che non mi torna e non credo credo sia la paura del “giochino” che mi è stato rubato.

Diciamo che voglio sperare che tutto questo volontariato, tutto questo fermento, non sia fatto “solo” per il propro tornaconto, per raggiungere il posto di potere o per riempire un vuoto nella propria vita ma che sia davvero motivato dall’essere protagonisti della rivoluzione culturale che Matt Mullenweg sta portando avanti come un trattore.

Cito non testualmente da un intervista rilasciata un po’ di tempo fa: “WordPress ha circa il 60% del mercato. Il problema è come raggiungere il restante 40%

Purtroppo però, come in un qualsiasi gruppo sociale, a volte bisogna convivere con qualche conflitto e con qualche compromesso cercando di non ascoltare troppo le dissonanze.

Il lato positivo è che abbiamo vinto: WordPress è ovunque.
Chiunque lavori in ambito web lo conosce e lo sa usare quel minimo che serve.
Tocca solo che ce ne rendiamo conto.

Imparare ReactJs – day #1

Imparare ReactJs

Learn JavaScript, Deeply. Learn JavaScript, Deeply. Learn JavaScript, Deeply. Learn JavaScript, Deeply… ”

Voglio prendere sul serio il suggerimento di Matt ed imparare ad utilizzare javascript in modo più approfondito.
Voglio farlo un po’ per WordPress ed un po’ perchè sono veramente convinto che il futuro del web sia Javascript e per iniziare ho deciso di partire ed imparare ad utilizzare ReactJs integrandolo nei miei prossimi progetti WordPress (si, è vero Calypso mi ha impressionato).

Imparare ReactJs – da dove iniziare

Il primo problema che mi si è presentato è che non sapevo neppure da dove partire, quindi ho iniziato a cercare un po’ di materiale: guide, tutorial, esempi, video, ecc…

Questa una prima selezione delle cose che mi sono sembrate più interessanti:

  1. https://facebook.github.io/react/docs/getting-started.html
  2. https://scotch.io/tutorials/learning-react-getting-started-and-concepts
  3. https://www.codementor.io/reactjs/tutorial/the-reactjs-quick-start-guide
  4. https://blog.risingstack.com/the-react-way-getting-started-tutorial/
  5. https://www.codementor.io/reactjs/tutorial/react-js-flux-architecture-tutorial
  6. http://buildwithreact.com/ – Build with React is a periodical of tutorials and advanced articles for the ReactJS library.
  7. https://zapier.com/engineering/react-js-tutorial-guide-gotchas/
  8. https://egghead.io/technologies/react – Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it’s easy to try it out on a small feature in an existing project. (video)
  9. http://cosenonjaviste.it/react-tutorial/ (ita)
  10. http://www.html.it/articoli/react-linterfaccia-utente-costruita-componente-su-componente/ (ita)

Cosa ho imparato

ReactJs è una libreria javascript per costruire interfaccie utente fatte da componenti riutilizzabili.
Nei primi tutorial che ho letto sembra che il suo utilizzo sia piuttoto semplice ma per essere utilizzata in una applicazione reale ha bisogno di altri componenti per poter gestire richieste a servizi esterni.

 

Photon aggiunge il supporto per il fomato WebP

Photon Adds WebP Support for Faster Loading Images

Per chi non sapesse cosa sia Photon dico brevemente che è uno dei moduli di JetPack che permette il caricamento delle immagini attraverso la CDN di WordPress.com

Mentre se non conosci ancora le immagini con estensione .webp questo è quello che dice Wikipedia:

Il WebP è un formato aperto di compressione per le immagini specifico per l’utilizzo web sviluppato da Google a partire dal codec video VP8, per questo è strettamente collegato al formato di compressione audio/video WebM. È un formato appositamente creato per ottimizzare il caricamento delle immagini sulle pagine web a discapito della qualità.

(https://it.wikipedia.org/wiki/WebP)

WordPress 4.3 beta1

Ieri è stata rilasciata la prima beta del nuovo ciclo di sviluppo relativo a WordPress 4.3

Come al solito parecchie le novità:

  1. I menu posso essere gestiti anche tramite il customizer (se il template lo supporta). Ormai la tendenza è qualla di rendere modificabile ogni aspetto direttamente dell’anteprima del template. Per chi non avesse ancora avuto modo di provarlo anche lato codice e di itegrarlo nel proprio template posso dire che è molto semplice.
  2. Gestione integrata da admin della favicon
    Dal menu “impostazioni” e poi “generale” dopo titolo e motto troviamo la “site icon“.
    Questi i 3 link attualmente gestiti di default dall’hook generato con wp_head

    <link rel="icon" href="favicon-32x32.jpg" sizes="32x32" />
    <link rel="apple-touch-icon-precomposed" href="favicon-180x180.jpg">
    <meta name="msapplication-TileImage" content="favicon-270x270.jpg">

    wordpress-favicon

  3. Un grosso miglioramento nella gestione e generazione delle password utente (che non verranno più inviate via mail).
    Per chi vorrà continuare ad usare delle non-password come giulia-82, matrix o 123password dovrà anche spuntare un checkbox prima di poter salvare.wordpress-password-generator
  4. Aggiunto supporto all’editor visuale per alcune sintassi tipiche del Markdown
    Tutte cose che si potevano fare anche attraverso i pulsanti presenti sopra l’editor ma per chi è abituato ad usare Markdown potrà beneficiarne sopratutto in termini di velocità.
    Le sintassi supportate sono:

    • “## nome titolo” per gli h2 (da h2 ad h6)
    • “> testo indentato” per generare un blockquote
    • “- elenco non numero” per generare un tag ul
    • “1) elenco ordinato” per generare un tag ol

    (provatelo che è più semplice a farlo che a spiegarlo)
    wordpress-tinymce-markdown

  5. Migliorato il comportamento responsivo nelle pagine di elenco post (tutte quelle gestite tramite la classe wp_list_table).
    Per chi usa tabblet, smartphone e/o device a bassa risoluzione sarà un miglioramento sicuramente molto comodo in termini di usabilità.wordpress-responsive-admin-table

Anche per gli sviluppatori ci sono un po’ di cose tra cui la suddivisione dei termini nel caso siano presenti in più tassonomie e l’introduzione di “singular.php” nella gestione della gerarchia delle pagine nel caso non siano preseti “post.php” e “page.php”

Se siete in zona ne parliamo dal vito il 14 luglio al WordPress Meetup Torino

 

 

 

 

Le performance di WordPress con PHP7

Lo scorso weekend ero a Verona per il PHPDay che come ogni anno si dimostra un evento di grandissimo interesse e con un’impeccabile organizzazione.

In uno dei primo talk Davey Shafik ha presentato le novità di PHP7 con “What to Expect When You’re Expecting: PHP 7” e tra le cose più importanti sì è perlato di performance.

“Performance, Performance, Performance” deve essere stato il mantra durante tutto il ciclo si sviluppo e dai benchmark sembra che i risultati siano notevoli.

performance-php7

Passiamo adesso al nostro caro WordPress:

wordpress-php7

Possiamo vedere chiaramente che dai questi test l’impatto prestazionale sia veramente incredibile. Stiamo parlando di un miglioramento con un fattore 2.4x che in percentuale diventa 59% (cinquantanovepercento).

Dopo aver visto questa slide io rimango folgorato quasi come S. Paolo sulla via di Damasco e continuo ad interrogarmi su quali siano gli elementi responsabili di questo grandissimo miglioramento.

La risposta arriva qualche talk dopo da Patric Allaert che con il suo “PHP Datastructures and the impact of PHP 7 on them” toglie i miei dubbi.

php7-perfomace-array

Facendo WordPress un grandissimo uso di array ecco che avendone ottimizzato la gestione sia nella creazione che nella lettura ne abbiamo un beneficio enorme.

Teoricamente il rilascio è previsto per Ottobre 2015 e quindi entro la fine di questo anno potremmo valutare un upgrade dei nostri server e/o chiedere ai nostri provider come poter beneficiare di questa nuova versione.

Per chi non l’avesse ancora vista qui l’infografica preparata da Zend: https://pages.zend.com/ty-infographic.html

WordPress: Visualizzare solo i “contenuti” di cui si è autore

Nelle situazioni in cui più persone partecipano alla preparazione degli articoli sullo stesso sito a volte ci si trova davanti ad una grande quantita di contenuti in cui si fatica a filtrare le proprie bozze.

Quando necessario, per semplificare le cose, aggiungo questa piccola funzione che filtra post, pagine e Custom Post Type sulla base dell’utente loggato verificando 3 cose:

  1. se non faccio parte del gruppo “administrator” (gli admin continueranno e vedere tutti i contenuti)
  2. se sono in area di amministrazione
  3. se non sono nella pagina dei media (in modo che possa vedere tutte le foto caricate)

L’hook usato è il “pre_get_posts” che ci permette di aggiungere una condizione prima di effettuare la query rendendo il tutto molto più performante.

Queste poche righe vanno aggiunte nel file function.php oppure linkate tramite un include o require.

WordPress: preparare trappole per i furbetti

Se dopo esserti protetto dai tanti attacchi bruteforce continui a vedere nei log errori 404 a percorsi non convenzionali (es. phpmyadmin, phpinfo, test, cgi, register, admin, system, ecc…) è possibile che qualche BOT automatico stia facendo una scansione cercando potenziali falle.

Una delle possibili soluzioni è l’implementazione di una semplice blackhole in php. In pratica si tratta di una trappola che scatta ogni volta che si tenta di visitare alcune url.

Via .htaccess si effettua il redirect verso un specifico file php che si occupa tracciare l’ip e quante più informazioni possibili presentando poi una pagina in cui lo si informa che la cosa non ci è piaciuta.

Per chiudere il giro, ad ogni acesso controlleremo che l’IP non sia uno dei quelli precedentemente tracciatati e nel caso gli diremo che il suo IP è stato bloccato:

“You have been banned from this domain”

 

Per completezza devo dire che questa tecnica presenta dei problemi di perfomace nel caso, con il tempo, il numero di IP da controllare dovesse diventare molto grosso in quanto richiedere la lettura di una file ed il confronto di una stringa per ogni pageview.

Al momento l’unica alternativa che conosco è fail2ban ma non sempre è possibile chiedere al proprio servizio di hosting la sua implementazione.

Ecco come procedere:

  1. Scarichiamo dal sito di Perishable Press il file Blackhole.zip e scompattiamo in una directory nella root del nostro sito e modifichiamo le variabili che troviamo dentro index.php (mittente, destinatario,soggetto)
  2. Aggiungiamo le regole al nostro .htaccess per intercettare le url “maliziose”
  3. Facciamo in modo di caricare il file blackhole.php dentro il nostro fuctions.php

Se abbiamo fatto tutto bene, tentando di accedere ad una di quelle URL, dovremmo trovarci davanti a quella bella pagina rossa che vedete qui in alto e il nostro IP dovrebbe essere stato aggiunto al file blackhole.dat. (ricordatevi che poi è da togliere)

Qui sotto due piccoli snippets che spero possano esservi d’aiuto:

Nota: io aggiungo al soggetto della mail che ricevo anche il SERVER_NAME in modo che sappia su che sito è stato tentato l’accesso: $_SERVER['SERVER_NAME']

 

WordPress dal 2003 ad oggi

Bluehost ha pubblicato una bella infografica sull’evoluzione di WordPress dall’anno delle sua prima release pubblica. Il lontano 2003.

A rileggere le features introdotte da versione a versione sembra passato davvero tantissimo tempo e la cosa sorprendente è che il livello di retrocompatibilità è altissimo anche con template vecchi di oltre 7 anni che continuano a girare senza problemi.

Il mio primo post è di quasi 10 anni fa, datato 26 maggio 2005, e ricordo ancora la vecchia procedura di installazione della versione 1.5.1.

Copiando in parte dalla infografica ho fatto un elenco (molto parziale) delle principali funzionalità introdotte di volta in volta.

  • Versione 1.2
    • RSS import
    • Thumbnail creation
    • Plugin support
    • Custom Fields
  • Versione 1.5
    • theme system
    • static page advancements
  • Versione 2.0
    • Persistent cache
    • New usuer rol system
    • New administration interface
  • Versione 2.1
    • Autosave
  • Versione 2.3
    • New Tax system
    • Speed optimization
  • Versione 2.5
    • Shortcode API
  • Versione 2.6
    • Gallery sorting capabilities
    • Press This bookmarklet
  • Versione 2.8
    • Build-in theme installar
    • Improved UI
    • Improved API
  • Versione 2.9
    • Image editing
    • Bulk plugin features
    • Trash/Undo features
    • Oembed visual support
    • Custom Post Type Support
  • Versione 3.0
    • Custom headers and backgound
    • Custom Menu
    • Simplified Taxonomy
  • Versione 3.1
    • Post Format
    • Admin Bar
  • Versione 3.4
    • Theme Customizer
  • Versione 3.5
    • New Media Manager
    • Build-in audio/video support
    • Enganced autosave
  • Versione 3.7
    • Automatic manteinance protocol
    • Enhanced password protocol
    • Improved search
  • Versione 3.8
    • Sidebar Widgets
  • Versione 3.9
    • Live widgets
    • Headers preview
  • Versione 4.0
    • Language select during Install
    • Media Embeds
  • Version 4.1
    • Drag and drop themes
  • Versione 4.2
    • Press This revamped
    • Customizer theme installer

Riferimenti: https://www.bluehost.com/

WordPress: cambiare il permalink della ricerca

Questo è un’altro degli snippets che uso normalmente sui template WordPress che mi chiedono di sviluppare.
Il primo pezzo (template_redirect) si occupa semplicemente di modificare il permalink base delle ricerca da “http://www.nomesito.com/?s=query” a “http://www.nomesito.com/search/query/“.

Con il secondo gestisco il caso in cui NON voglio che la keyword usata per la ricerca sia “search“.
Vado quidi a modificare la “search_base” ed a creare la regola di rewrite.
Ovviamente è necessario rigenerare i permalink in modo che la regola venga gestita correttamente.

Mark Jaquith aveva scritto anche un plugin ma oltre al fatto che non gestiva la modifica della “search_base” preferisco gestirlo via codice includendolo dimanicamente dentro functions.php

Awesome WordPress Toolbox

Anche se in rete esistono già molte raccolte di link legate a WordPress voglio provare a raccogliere le risorse che ho accumulato in un repo che avevo aperto parecchio tempo fa.

Questo il link: Awesome WordPress

Il taglio che mi piacerebbe dare, che in qualche modo potrebbe differenziarsi dalle altre, è relativo al tipo di risorse elencate che vogliono essere di supporto a chi sviluppa cercando di seguire quelle che sono le best practices.
Non ho l’obiettivo di creare una raccolta completa ma un’elenco di risorse capace di aiutare e velocizzare il lavoro di tutti i giorni.

Al momento ci sono circa una trentina di link che con il tempo spero di far crescere cercando di evitare link a risorse premium.

Ringrazio in anticioo tutto quelli che avranno voglio di contribuire facendo delle commit o condividendolo sui diversi social