Archivi tag: Wordpress

Statistiche annuali per il tuo blog!

Ho appena terminato di riscrivere un mio vecchissimo plugin.

Questo plugin vi permette di creare le statistiche annuali del vostro blog, come vedrete alla fine di questo post.

E’ in corso di approvazione sul repository di WordPress.org, E’ stato approvato, potete scaricarlo da wordpress.org oppure installarlo direttamente dalla bacheca del vostro sito, cercando wpit blog stats.

Se volete provarlo e magari darmi suggerimenti per migliorarlo, sarete i benvenuti.

Potete scaricarlo dal link che trovate in fondo a questo post.

Qui  quello che mostra:

Anno Nr.articoli Media caratteri per articolo Caratteri tot per articolo Media commenti Commenti totali
2014 16 3,235 51,747 4 51
2013 53 1,401 74,211 2 67
2012 20 2,749 54,975 5 85
2011 51 1,708 87,107 4 181
2010 115 2,961 340,409 4 387
2009 177 2,768 489,918 6 1,034
2008 432 1,465 632,636 5 2,074
2007 263 1,996 524,716 4 1,023
2006 91 1,988 180,853 2 135
2005 42 1,004 42,138 4 129
2004 95 863 81,904 3 194
2003 3 189 565 1 2
Tags: , , ,

Come fare un bel sito

Come fare un bel sito?

Questa è la domanda che, prima o poi, chiunque voglia essere presente sul Web, si pone.

Cominciamo con i dovuti disclaimer: quelle che scriverò sono solo ed esclusivamente mie opinioni, non è la verità assoluta, forse però dovresti, in ogni caso, darmi ascolto.

Pensi che stia parlando di te, sì, è probabile che stia parlando, proprio, della tua (in)competenza.

Fatte le dovute specificazioni, torniamo all’argomento, che poi vengo ripreso perché divago troppo: Come fare un bel sito?

Il design

Facciamo un passo indietro. Progettare e disegnare un sito è esattamente come disegnare e progettare un ponte, una strada, un tostapane, né più, né meno.

Nel mondo del web si è diffusa una strana credenza, che non è un mobile, è proprio una errata interpretazione di un concetto fondamentale: il concetto di design, di design industriale, concetto che noi italiani abbiamo sviluppato all’estremo negli anni ’60 e ’70.

Steve Jobs

Un genio, Steve Jobs(1955 – 2011), disse:

It’s not just what it looks like and feels like. Design is how it works.

Che tradotto in italiano, suona così:

Il design non riguarda solo l’aspetto del prodotto, o l’effetto che fa tenerlo in mano. Il design è come funziona.

Steve Jobs l’ha detta giusta poi vi spiegherò il perché. Il problema è di come è stata recepita, o meglio della comprensione del testo.

Di tutto il messaggio del co-fondatore di Apple, ciò che è stato recepito è che le cose devono essere, esteticamente, bellissime, tutto il resto è andato perduto.

(in)comprensione

In nome di questa (in)comprensione del testo, si sono perpetrati i più gravi crimini contro il povero e inconsapevole Web, contro i poveri  e inconsapevoli utenti e contro i poveri e inconsapevoli business.

I market place

Themeforest (ma anche tutti gli altri market place, parlo di lui solo perché è il più noto) è il punto nodale di questa (in)comprensione del testo: ha fatto convergere quasi tutti i seguaci di questa religione.

Ti stai chiedendo cosa è themeforest, scusami, l’avevo dato per scontato.

Themeforest è un market place, un mercato virtuale per creatori di temi grafici per WordPress, ma anche per altre piattaforme, che permette ai creatori di temi grafici e plugin, di incontrare la richiesta degli utilizzatori e quindi di vendere le proprie “opere d’arte”.

Su themeforest la ricerca è estetica, vengono utilizzate immagini evocative e il risultato è: bello per bello.

Il cliente che, giustamente, non ha alcuna competenza nella progettazione e disegno di siti web, tende a guardare solo l’estetica ma tu, professionista, dovresti avere la preparazione richiesta (altrimenti perché un cliente si rivolgerebbe ad un/una professionista?) e dovresti spiegare al cliente perché la scelta effettuata è errata.

Ora, tu, professionista, che invece di spiegare al cliente che sta sbagliando e che sei quello/a che saccheggia themeforest, quotidianamente, alla ricerca di temi che dovresti realizzare tu (sei un/a professionista, o no?), tra l’altro, perché proponi al cliente quel tema, sì, proprio quel tema?

Orrore e raccapriccio

Un tema che in home page ti pubblica decine di immagini a width 100%, che ti elenca i post, uno ad uno, con relativa immagine, lo scroll che ti mette a tutto schermo un singolo post: hai mangiato pesante ieri notte?

Un tema che, quando arrivi al singolo post tramite un link su social network, ti presenta un’immagine a tutto schermo e una frase, che è il titolo, sulla quale non puoi fare clic; ah, era solo una citazione, non c’è nessun articolo, a no, aspetta, faccio un po’ di clic a casaccio.

Niente, vabbè, gioco un po’ con il magic mouse, sfioro e faccio uno scroll, mi si apre una roba bianca, a destra, c’è del testo: eureka, è l’articolo!

Ma come è ben studiato questo tema, è proprio comodo.

Mi raccomando, poi, quando arriva l’utente che ti dice che non riesce a leggere il post, digli che per te funziona tutto bene.

In pratica hai dato del cretino al tuo utente, ma forse, il cretino sei tu, prima per aver scelto un tema di merda che soddisfa solo il tuo ego, poi per essere un incompetente, visto che ci sarà un js scritto con il culo, scusatemi il termine tecnico, che tu non sai come correggere. Tanto per fare un esempio, è come se in un hotel chiamaste la reception perché non riuscite ad aprire la porta della camera e loro vi rispondessero che con la loro chiave si apre, magari state provando ad aprire la porta sbagliata oppure vi hanno dato la chiave errata, in pratica avete perso un cliente.

Un texan, half pound, cheeseburgher al tre!

menu mobile hamburgerUn bel 10+ poi lo dobbiamo dare per l’intelligenza, creativa, che vi ha portato a sostituire il menù di navigazione, in modalità desktop, con l’hamburger. Sì, l‘hamburger è quella roba li, l’immagine qui a destra, quella che vedete sui vostri telefonini  e non capite a che serve. Se su un sito mobile potrebbe avere senso, forse, su un sito desktop, per me è una cagata pazzesca! (Scusami signor Fantozzi se mi approprio di una delle tue perle, migliori)

Un clic è per sempre, o meglio, il deserto dei Tartari

Dovete sapere che, ogni giorno, una quantità enorme di persone passa la propria giornata a studiare soluzioni per ridurre al minimo i clic che deve fare un utente per raggiungere il contenuto. È cosa di pubblico dominio, basta utilizzare un motore di ricerca qualsiasi. Ad ogni clic perdi una grossa fetta di utenti, e aumenta in scala logaritmica ad ogni clic, fino a rimanere deserto, il tuo sito, ovviamente.

Tu sei più brava/o, sei più furbo/a e quindi decidi di costruire un labirinto di clic, per rendere sempre più difficile la navigazione al tuo utente, perché il tuo scopo è quello di perdere utenti, non attrarli.

Sono in dubbio se credere che tu sia un genio o un cretino/a, aspetta, il dubbio mi è passato, so esattamente cosa sei.

User first

Mobile first, il mantra, la parola d’ordine dei nuovi guru, degli pseudo guru, tua; cazzate, cazzate e ancora cazzate!

User first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, ti è chiaro?

User first!

Ciò che conta, è solo ed esclusivamente l’esperienza utente.

Devi studiare e disegnare il tuo sito in base all’esperienza utente, devi fare in modo che l’utente possa trovare subito e in fretta le informazioni, quante volte vedo siti di alberghi e ristoranti dove per trovare numero di telefono e indirizzo devo fare la caccia al tesoro, troppe volte.

Devi coccolare il tuo utente, aiutarlo, devi rendergli la vita facile, a meno che tu abbia dei buoni motivi per non far sapere nulla di te, ma in quel caso, I suppose, non ti apri un sito su internet.

Mobile first è una stronzata, chiunque strutturi la progettazione in base a una tecnologia, è un cretino/a.

AI tempi degli antichi romani la tecnologia faceva passi da gigante in centinaia di anni, nel ‘900 in decine, ora in decine di secondi, ciò che è valido ora, potrebbe non esserlo più domani: la tecnologia va utilizzata, non deve utilizzare noi.

Per prima cosa studia chi sono i tuoi utenti, cosa fanno, come si comportano, poi realizza il tuo sito utilizzando le tecnologie e le tecniche migliori, disponibili al momento, per aiutarli a raggiungere i contenuti.

Sviluppa in modo da sfruttare al meglio queste tecnologie, quindi sviluppa un sito mobile perfetto per tutti i dispositivi mobili, sviluppa il sito desktop perfetto per tutti i browser e per tutte le piattaforme e sviluppa, in generale, mettendo in primo piano l’utente, non il tuo ego smisurato, non una tecnologia.

Monitora sempre il comportamento del tuo utente, perché dovrai fare continui aggiustamenti e miglioramenti, perché non è detto che tutto quello che hai progettato e pensato sulla carta, poi, sia giusto.

The end?

And last, but not least (e per ultimo ma non meno importante), crea ottimi contenuti, contenuti di qualità e soprattutto, contenuti accessibili, sì, accessibili; accessibile significa dare importanza a tutti i propri utenti e, egoisticamente parlando, significa non discriminare una parte importante di utenti potenziali e poi, accessibile, significa corretto.

Yes, the end

Steve Jobs l’ha detta giusta poi vi spiegherò il perché.

Siete ancora in attesa della spiegazione che vi avevo promesso all’inizio del post?

Se non l’avete trovata non è colpa mia, e se siete professionisti del Web e non avete trovato la risposta, cambiate mestiere.

(n.d.a.: mi scuso per aver utilizzato una terminologia troppo tecnica, cretino, cagata, etc. ma nel contesto era fondamentale essere molto tecnici e precisi. Nessun sito è stato maltrattato durante la scrittura di questo articolo. Se volete sapere come si fanno bene le cose, pagatemi o pagate un altro professionista, accertatevi, però, che non sia uno di quelli di cui parlo in questo post. Se volete insultarmi, fate pure, ho le spalle larghe e fondamentalmente non me ne frega nulla. Se vi ho aiutato, sono felice. Una birra non la rifiuto, mai)

 

Tags: , , , , , , , , , , , , , , , , , , , , , , , ,

Come fare un bel sito

Come fare un bel sito?

Questa è la domanda che, prima o poi, chiunque voglia essere presente sul Web, si pone.

Cominciamo con i dovuti disclaimer: quelle che scriverò sono solo ed esclusivamente mie opinioni, non è la verità assoluta, forse però dovresti, in ogni caso, darmi ascolto.

Pensi che stia parlando di te, sì, è probabile che stia parlando, proprio, della tua (in)competenza.

Fatte le dovute specificazioni, torniamo all’argomento, che poi vengo ripreso perché divago troppo: Come fare un bel sito?

Il design

Facciamo un passo indietro. Progettare e disegnare un sito è esattamente come disegnare e progettare un ponte, una strada, un tostapane, né più, né meno.

Nel mondo del web si è diffusa una strana credenza, che non è un mobile, è proprio una errata interpretazione di un concetto fondamentale: il concetto di design, di design industriale, concetto che noi italiani abbiamo sviluppato all’estremo negli anni ’60 e ’70.

Steve Jobs

Un genio, Steve Jobs(1955 – 2011), disse:

It’s not just what it looks like and feels like. Design is how it works.

Che tradotto in italiano, suona così:

Il design non riguarda solo l’aspetto del prodotto, o l’effetto che fa tenerlo in mano. Il design è come funziona.

Steve Jobs l’ha detta giusta poi vi spiegherò il perché. Il problema è di come è stata recepita, o meglio della comprensione del testo.

Di tutto il messaggio del co-fondatore di Apple, ciò che è stato recepito è che le cose devono essere, esteticamente, bellissime, tutto il resto è andato perduto.

(in)comprensione

In nome di questa (in)comprensione del testo, si sono perpetrati i più gravi crimini contro il povero e inconsapevole Web, contro i poveri  e inconsapevoli utenti e contro i poveri e inconsapevoli business.

I market place

Themeforest (ma anche tutti gli altri market place, parlo di lui solo perché è il più noto) è il punto nodale di questa (in)comprensione del testo: ha fatto convergere quasi tutti i seguaci di questa religione.

Ti stai chiedendo cosa è themeforest, scusami, l’avevo dato per scontato.

Themeforest è un market place, un mercato virtuale per creatori di temi grafici per WordPress, ma anche per altre piattaforme, che permette ai creatori di temi grafici e plugin, di incontrare la richiesta degli utilizzatori e quindi di vendere le proprie “opere d’arte”.

Su themeforest la ricerca è estetica, vengono utilizzate immagini evocative e il risultato è: bello per bello.

Il cliente che, giustamente, non ha alcuna competenza nella progettazione e disegno di siti web, tende a guardare solo l’estetica ma tu, professionista, dovresti avere la preparazione richiesta (altrimenti perché un cliente si rivolgerebbe ad un/una professionista?) e dovresti spiegare al cliente perché la scelta effettuata è errata.

Ora, tu, professionista, che invece di spiegare al cliente che sta sbagliando e che sei quello/a che saccheggia themeforest, quotidianamente, alla ricerca di temi che dovresti realizzare tu (sei un/a professionista, o no?), tra l’altro, perché proponi al cliente quel tema, sì, proprio quel tema?

Orrore e raccapriccio

Un tema che in home page ti pubblica decine di immagini a width 100%, che ti elenca i post, uno ad uno, con relativa immagine, lo scroll che ti mette a tutto schermo un singolo post: hai mangiato pesante ieri notte?

Un tema che, quando arrivi al singolo post tramite un link su social network, ti presenta un’immagine a tutto schermo e una frase, che è il titolo, sulla quale non puoi fare clic; ah, era solo una citazione, non c’è nessun articolo, a no, aspetta, faccio un po’ di clic a casaccio.

Niente, vabbè, gioco un po’ con il magic mouse, sfioro e faccio uno scroll, mi si apre una roba bianca, a destra, c’è del testo: eureka, è l’articolo!

Ma come è ben studiato questo tema, è proprio comodo.

Mi raccomando, poi, quando arriva l’utente che ti dice che non riesce a leggere il post, digli che per te funziona tutto bene.

In pratica hai dato del cretino al tuo utente, ma forse, il cretino sei tu, prima per aver scelto un tema di merda che soddisfa solo il tuo ego, poi per essere un incompetente, visto che ci sarà un js scritto con il culo, scusatemi il termine tecnico, che tu non sai come correggere. Tanto per fare un esempio, è come se in un hotel chiamaste la reception perché non riuscite ad aprire la porta della camera e loro vi rispondessero che con la loro chiave si apre, magari state provando ad aprire la porta sbagliata oppure vi hanno dato la chiave errata, in pratica avete perso un cliente.

Un texan, half pound, cheeseburgher al tre!

menu mobile hamburgerUn bel 10+ poi lo dobbiamo dare per l’intelligenza, creativa, che vi ha portato a sostituire il menù di navigazione, in modalità desktop, con l’hamburger. Sì, l‘hamburger è quella roba li, l’immagine qui a destra, quella che vedete sui vostri telefonini  e non capite a che serve. Se su un sito mobile potrebbe avere senso, forse, su un sito desktop, per me è una cagata pazzesca! (Scusami signor Fantozzi se mi approprio di una delle tue perle, migliori)

Un clic è per sempre, o meglio, il deserto dei Tartari

Dovete sapere che, ogni giorno, una quantità enorme di persone passa la propria giornata a studiare soluzioni per ridurre al minimo i clic che deve fare un utente per raggiungere il contenuto. È cosa di pubblico dominio, basta utilizzare un motore di ricerca qualsiasi. Ad ogni clic perdi una grossa fetta di utenti, e aumenta in scala logaritmica ad ogni clic, fino a rimanere deserto, il tuo sito, ovviamente.

Tu sei più brava/o, sei più furbo/a e quindi decidi di costruire un labirinto di clic, per rendere sempre più difficile la navigazione al tuo utente, perché il tuo scopo è quello di perdere utenti, non attrarli.

Sono in dubbio se credere che tu sia un genio o un cretino/a, aspetta, il dubbio mi è passato, so esattamente cosa sei.

User first

Mobile first, il mantra, la parola d’ordine dei nuovi guru, degli pseudo guru, tua; cazzate, cazzate e ancora cazzate!

User first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, user first, ti è chiaro?

User first!

Ciò che conta, è solo ed esclusivamente l’esperienza utente.

Devi studiare e disegnare il tuo sito in base all’esperienza utente, devi fare in modo che l’utente possa trovare subito e in fretta le informazioni, quante volte vedo siti di alberghi e ristoranti dove per trovare numero di telefono e indirizzo devo fare la caccia al tesoro, troppe volte.

Devi coccolare il tuo utente, aiutarlo, devi rendergli la vita facile, a meno che tu abbia dei buoni motivi per non far sapere nulla di te, ma in quel caso, I suppose, non ti apri un sito su internet.

Mobile first è una stronzata, chiunque strutturi la progettazione in base a una tecnologia, è un cretino/a.

AI tempi degli antichi romani la tecnologia faceva passi da gigante in centinaia di anni, nel ‘900 in decine, ora in decine di secondi, ciò che è valido ora, potrebbe non esserlo più domani: la tecnologia va utilizzata, non deve utilizzare noi.

Per prima cosa studia chi sono i tuoi utenti, cosa fanno, come si comportano, poi realizza il tuo sito utilizzando le tecnologie e le tecniche migliori, disponibili al momento, per aiutarli a raggiungere i contenuti.

Sviluppa in modo da sfruttare al meglio queste tecnologie, quindi sviluppa un sito mobile perfetto per tutti i dispositivi mobili, sviluppa il sito desktop perfetto per tutti i browser e per tutte le piattaforme e sviluppa, in generale, mettendo in primo piano l’utente, non il tuo ego smisurato, non una tecnologia.

Monitora sempre il comportamento del tuo utente, perché dovrai fare continui aggiustamenti e miglioramenti, perché non è detto che tutto quello che hai progettato e pensato sulla carta, poi, sia giusto.

The end?

And last, but not least (e per ultimo ma non meno importante), crea ottimi contenuti, contenuti di qualità e soprattutto, contenuti accessibili, sì, accessibili; accessibile significa dare importanza a tutti i propri utenti e, egoisticamente parlando, significa non discriminare una parte importante di utenti potenziali e poi, accessibile, significa corretto.

Yes, the end

Steve Jobs l’ha detta giusta poi vi spiegherò il perché.

Siete ancora in attesa della spiegazione che vi avevo promesso all’inizio del post?

Se non l’avete trovata non è colpa mia, e se siete professionisti del Web e non avete trovato la risposta, cambiate mestiere.

(n.d.a.: mi scuso per aver utilizzato una terminologia troppo tecnica, cretino, cagata, etc. ma nel contesto era fondamentale essere molto tecnici e precisi. Nessun sito è stato maltrattato durante la scrittura di questo articolo. Se volete sapere come si fanno bene le cose, pagatemi o pagate un altro professionista, accertatevi, però, che non sia uno di quelli di cui parlo in questo post. Se volete insultarmi, fate pure, ho le spalle larghe e fondamentalmente non me ne frega nulla. Se vi ho aiutato, sono felice. Una birra non la rifiuto, mai)

 

Tags: , , , , , , , , , , , , , , , , , , , , , , , ,

10 motivi per non realizzare software open source

L’open source sta vivendo, da anni, una fortuna e una crescita invidiabile, però ora vi dico perché non dovete sviluppare in open source.

1) Open source non è sinonimo di gratis.

Chiunque utilizza un software open source è convinto che debba essere gratis e ti tempesterà di richieste da realizzare in tempo zero gratis, e le pretenderà.

2) Open source e collaborazione

L’open source è nato per condividere, riutilizzare e per collaborare.

Collaborare non significa solamente scrivere codice, significa tradurre, creare tutorial, dirti grazie, ma nessuno fa niente di niente pretendono tutti un codice perfetto senza bug, gratis e lo pretendono subito.

3) Open source è la roba degli altri

Usano tutta roba open source, non hanno mai collaborato a nessun progetto, scrivono una cosetta, o un tema o quello che volete che si appoggia ad un software open source e appena scoprono che qualcuno lo ha utilizzato partono le minacce di adire le vie legali.

4) Se c’è in vendita un plugin o un tema a 30USD, meglio trovarlo crakkato e poi andare a chiedere assistenza e quando ti viene detto che l’assistenza per i temi premium viene erogata dai venditori, ti rispondono che loro non l’hanno comprato e che pretendono assistenza.

5) Mi fai questa modifica? Perché non apri un github pubblico così posso aiutarti?

Fu così che nell’arco di 10 minuti fu aperto il github pubblico, che è li ancora bello e intonso da 11 mesi.

Gli altri 5 hanno un costo, a gratis ne ho messi 5, aggiungete voi a piacere!

Tags: , , , ,

Vuoi farti fare un sito internet? Ecco alcuni consigli pratici per scegliere i professionisti del web

Disclaimer: dal 2006 faccio parte del team italiano di localizzazione e supporto per WordPress, il CMS più utilizzato al mondo e offro i miei servizi professionali tramite GoodPress.

Il primo suggerimento è banalissimo, cerca dei professionisti seri, diffida di chi fa tutto, SEO, SEM, Web Designer, Sviluppo, stampa cataloghi e pulizie.

Fai conto che un buon 30% del nostro lavoro consiste nel rifare lavori già fatti da professionisti di cui sopra, il risultato è che spendi 2 volte i tuoi soldi.

Gli altri suggerimenti, pur apparendo banali agli addetti ai lavori, non sono così banali per i clienti.

1) La registrazione, il controllo e la gestione del dominio deve essere tua, NON delegare e verifica presso il registrant che sia tutto a nome tuo

2) lo spazio web deve essere sotto il tuo controllo, devi avere gli accessi sia ftp ( o sftp o ssh ) e devi avere gli accessi ai database

3) Devi avere accesso al codice e NON accettare MAI e poi mai contratti di licenza e possibilmente utilizza codice open source. (Open source significa codice aperto che ti da il diritto di modificarlo e utilizzarlo come preferisci. Esempi di CMS open source sono Joomla, Drupal e WordPress)

4) Chiedi sempre un contratto con diritti e doveri

Questi 4 punti sono fondamentali perché sono i sistemi utilizzati da professionisti poco seri per bloccarti, per controllarti e per costringerti a lavorare solo con loro. A volte questi sistemi vengono utilizzati anche come ricatti per estorcerti quattrini in maniera fantasiosa.

Recuperare il tutto, spesso, è costoso e a volte impossibile quindi riflettici molto bene prima di legarti mani e piedi dato che il rischio non è solo quello di perdere soldi, ma è quello di perdere tutto quello che hai creato nel tempo sul web.

Il mio mantra è sempre lo stesso:

– Il Cliente deve lavorare con noi perché ha piacere a lavorare con noi, non perché è costretto a farlo causa scelte capestro –

PS: i nostri contratti NON si rinnovano in automatico, alla scadenza decadono ed è il cliente a decidere se rinnovarlo o meno.

Voi avete qualche altro suggerimento da aggiungere?

Tags: , , , , , , , , , , , , , , , , ,

Come creare pagine, post, custom post type in automatico con WordPress

A volte nei plugin è necessario creare delle pagine, questa classe singleton che ho scritto serve proprio per questo scopo.

La classe deve essere inserita in un plugin.

 

<?php

define( WPIT_EVENTS_PAGE_VERSION_NAME , 'wpit-events-page' );
define( WPIT_EVENTS_PAGE_VERSION_NUMBER, '1.1');

class Wpit_Add_Page {

	//A static member variable representing the class instance
	private static $_instance = null;



	/**
	 * Wpit_Add_Page::__construct()
	 * Locked down the constructor, therefore the class cannot be externally instantiated
	 *
	 * @param array $args various params some overidden by default
	 *
	 * @return
	 */

	private function __construct() {

		add_action( 'init', array( $this, 'update_page_check' ) );


	}

	/**
	 * Wpit_Add_Page::__clone()
	 * Prevent any object or instance of that class to be cloned
	 *
	 * @return
	 */
	public function __clone() {
		trigger_error( "Cannot clone instance of Singleton pattern ...", E_USER_ERROR );
	}

	/**
	 * Wpit_Add_Page::__wakeup()
	 * Prevent any object or instance to be deserialized
	 *
	 * @return
	 */
	public function __wakeup() {
		trigger_error( 'Cannot deserialize instance of Singleton pattern ...', E_USER_ERROR );
	}

	/**
	 * Wpit_Add_Page::getInstance()
	 * Have a single globally accessible static method
	 *
	 * @param mixed $args
	 *
	 * @return
	 */
	public static function getInstance( $args = array() ) {
		if ( ! is_object( self::$_instance ) )
			self::$_instance = new self( $args );

		return self::$_instance;


	}

	/**
	 * add_page function.
	 *
	 * @access public
	 * @return void
	 */
	public function add_page() {

		// Do checks only in backend
		if ( is_admin() ) {

			if ( empty( $GLOBALS['wp_rewrite'] ) )
				$GLOBALS['wp_rewrite'] = new WP_Rewrite();

				require_once WPIT_EVENTS_PLUGIN_PATH . 'config/data-page-creation.php';
				global $wpdb;

				foreach ( $pages as $page ) {

				//if page exists $pagina->ID is the id of the page
				$pagina = get_page_by_path( $page['post_name'] );

				//Create the array for insert post
				$arg = array (
					'ID'			=> '',
	    			'post_title'	=> $page['post_title'],
	    			'post_name'		=> $page['post_name'],
	    			'post_content'	=> ( ! empty ( $page['post_content'] ) ? $page['post_content'] : $pagina->post_content) ,
	    			'post_type'		=> $page['post_type'],
	    			'post_status'	=> $page['post_status'],
	    			'post_author'	=> $page['post_author'],
 				);


				//if page doesn't exist I create it
				if ( empty( $pagina ) ) {
				    $post_id = wp_insert_post( $arg );
			    } else {
				    //if page exist add the page ID to the array to modify the right page
				    $arg['ID'] .= $pagina->ID;
				    $page_data = get_post( $pagina->ID );
				    $arg['post_content'] = $page_data->post_content;

				    
				    $post_id = wp_insert_post( $arg  );

			    }

			    //Verify if in data-page-creation.php exist _wp_page_template and if exist value insert it
			    if (isset ($page[ '_wp_page_template' ]) && ! empty($page[ '_wp_page_template' ])) {
				    update_post_meta ( $post_id , '_wp_page_template' ,$page['_wp_page_template'] );
			    }
			} //end foreach

			// Use a static front page
			if ( isset($front_page) && ! empty($front_page) ) {

				$frontpage = get_page_by_path( $front_page['page-slug'] );
				if ( ! empty($frontpage) ) {
					update_option( 'page_on_front', $frontpage->ID );
					update_option( 'show_on_front', 'page' );
				}
			}


			//update version of the plugin
			update_option( WPIT_EVENTS_PAGE_VERSION_NAME , WPIT_EVENTS_PAGE_VERSION_NUMBER );


			} //end if only in the admin

	}

	/**
	 * update_page_check function.
	 *
	 * @access public
	 * @return void
	 */
	public function update_page_check() {
	// Do checks only in backend
		if ( is_admin() ) {
			if ( version_compare( get_site_option( WPIT_EVENTS_PAGE_VERSION_NAME ), WPIT_EVENTS_PAGE_VERSION_NUMBER ) != 0  ) {
			$this->add_page();
			}
		} //end if only in the admin
	}

}// chiudo la classe

//istanzio la classe

$wpit_add_page = Wpit_Add_Page::getInstance();

 
Per prima cosa definiamo 2 costanti, la prima è il nome della option

define( WPIT_EVENTS_PAGE_VERSION_NAME , 'wpit-events-page' );

 
La seconda è la versione del plugin, importante perché se vengono aggiunte pagine deve essere modificata la versione per aggiungere le nuove pagine.

define( WPIT_EVENTS_PAGE_VERSION_NUMBER, '1.1');

 

I dati delle pagine da creare sono contenuti in un file esterno che io ho chiamato

data-page-creation.php

 
ma voi potete chiamarlo come volete.
Una volta creato il file (più avanti metto il tracciato) dovete dire al plugin dove si trova e come si chiama questo file.
Io ho l’abitudine di creare alcune costanti nei plugin e una di queste è quella che definisce il path del plugin

WPIT_EVENTS_PLUGIN_PATH

ed è sempre mia abitudine inserire i file di configurazione in directory ad hoc, in questo caso nella directory

config

Per dire alla classe dove trovare il file di configurazione dovete modificare la riga 83

require_once WPIT_EVENTS_PLUGIN_PATH . 'config/data-page-creation.php';

 

Quello che segue è invece il tracciato del file di configurazione

<?php

//creo l'array delle pagine

//****************************************************************************
// Array completo con tutti i dati, shortcode in post_content
// Eliminare i campi che non servono
// array(
//		'post_title' => 'Post title',
//		'post_name' => 'Post slug',
//		'post_content' => 'content',
//		'post_type' => 'page',
//		'post_status' => 'publish',
//		'post_author' => 1,
//		'_wp_page_template' => 'template.php'
// ),
//
//*****************************************************************************

$pages =  array(
	array(
		'post_title' => 'Login Register',
		'post_name' => 'login-register',
		'post_content' => '',
		'post_type' => 'page',
		'post_status' => 'publish',
		'post_author' => 1,
		'_wp_page_template' => 'login-register.php'
	),
	array(
		'post_title' => 'User Page',
		'post_name' => 'user-page',
		'post_content' => '',
		'post_type' => 'page',
		'post_status' => 'publish',
		'post_author' => 1,
		'_wp_page_template' => 'user-page.php'
	),


);

Come potete vedere ho messo solo i dati che mi interessavano e nello specifico il titolo della pagina, lo slug, il content vuoto (qui potete inserire testo e/o shortcode), il tipo di post (in questo caso una pagina), lo status, l’autore e il template di pagina.
 
Potete aggiungere tutti i campi che vi interessano, incluso inserire la pagina da utilizzare come front page, se ne avete bisogno.
 

Se avete qualche dubbio, suggerimento o miglioramento da apportare i commenti sono per voi :)

Tags: , , , ,

WordPress sicurezza, cancellare o no l’utente admin?

Questo è il resoconto di un paio d’ore sul mio blog:

 Kiev, Ukraine attempted a failed login using an invalid username “admin”.
IP: 85.223.208.26  [block]

14 minutes ago
 Netherlands attempted a failed login using an invalid username “wordpressposted”.
IP: 146.0.74.234  [block]

36 minutes ago
 Netherlands attempted a failed login using an invalid username “admin”.
IP: 146.0.74.234  [block]

45 minutes ago
 Davao, Philippines attempted a failed login using an invalid username “admin”.
IP: 125.60.240.198  [block]

52 minutes ago
 Netherlands attempted a failed login using an invalid username “promuovere”.
IP: 146.0.74.234  [block]

53 minutes ago
 Dadiangas, Philippines attempted a failed login using an invalid username “admin”.
IP: 121.54.34.180  [block]

1 hour 10 mins ago
 Kiev, Ukraine attempted a failed login using an invalid username “admin”.
IP: 85.223.208.26  [block]

1 hour 14 mins ago
 Quezon City, Philippines attempted a failed login using an invalid username “admin”.
IP: 112.198.77.156  [block]

1 hour 15 mins ago
 Philippines attempted a failed login using an invalid username “admin”.
IP: 114.108.232.96  [block]

1 hour 16 mins ago
 Thailand attempted a failed login using an invalid username “admin”.
IP: 223.207.112.125  [block]

1 hour 17 mins ago
 Thailand attempted a failed login using an invalid username “admin”.
IP: 223.207.112.125  [block]

1 hour 17 mins ago
 New Delhi, India attempted a failed login using an invalid username “admin”.
IP: 122.161.187.91  [block]

1 hour 20 mins ago
 Netherlands attempted a failed login using an invalid username “admin”.
IP: 146.0.74.234  [block]

1 hour 24 mins ago
 Greece attempted a failed login using an invalid username “admin”.
IP: 87.202.165.87  [block]

1 hour 27 mins ago
 Jaux, France attempted a failed login using an invalid username “admin”.
IP: 78.224.228.186  [block]

1 hour 33 mins ago
 Mumbai, India attempted a failed login using an invalid username “admin”.
IP: 120.63.58.6  [block]

1 hour 34 mins ago
 Pune, India attempted a failed login using an invalid username “admin”.
IP: 117.219.6.72  [block]

1 hour 35 mins ago
 Netherlands attempted a failed login using an invalid username “escludendo”.
IP: 146.0.74.234  [block]

1 hour 37 mins ago
 Nagpur, India attempted a failed login using an invalid username “admin”.
IP: 183.177.127.91  [block]

1 hour 37 mins ago
 Makati, Philippines attempted a failed login using an invalid username “admin”.
IP: 121.54.54.62  [block]

1 hour 37 mins ago
 Cebu, Philippines attempted a failed login using an invalid username “admin”.
IP: 112.207.193.187  [block]

1 hour 37 mins ago
 Gujranwala, Pakistan attempted a failed login using an invalid username “admin”.
IP: 182.187.91.37  [block]

1 hour 40 mins ago
 Ahmadabad, India attempted a failed login using an invalid username “admin”.
IP: 117.196.42.119  [block]

1 hour 41 mins ago
 Netherlands attempted a failed login using an invalid username “condivido”.
IP: 146.0.74.234  [block]

1 hour 42 mins ago
 Mumbai, India attempted a failed login using an invalid username “admin”.
IP: 114.79.137.13  [block]

1 hour 42 mins ago
 Mumbai, India attempted a failed login using an invalid username “admin”.
IP: 124.153.65.242  [block]

1 hour 42 mins ago
 Philippines attempted a failed login using an invalid username “admin”.
IP: 124.6.181.47  [block]

1 hour 43 mins ago
 Georgia attempted a failed login using an invalid username “admin”.
IP: 94.100.238.158  [block]

1 hour 43 mins ago
 Davao, Philippines attempted a failed login using an invalid username “admin”.
IP: 125.60.240.198  [block]

1 hour 43 mins ago
 Mumbai, India attempted a failed login using an invalid username “admin”.
IP: 120.61.186.46  [block]

1 hour 44 mins ago
 Lebanon attempted a failed login using an invalid username “admin”.
IP: 85.112.64.14  [block]

1 hour 44 mins ago
 Bagumbayan, Philippines attempted a failed login using an invalid username “admin”.
IP: 180.194.29.7  [block]

1 hour 44 mins ago
 Dubai, United Arab Emirates attempted a failed login using an invalid username “admin”.
IP: 217.165.134.60  [block]

1 hour 44 mins ago
 Mumbai, India attempted a failed login using an invalid username “admin”.
IP: 114.143.127.119  [block]

1 hour 44 mins ago
 Montreal, Canada attempted a failed login using an invalid username “admin”.
IP: 64.229.108.154  [block]

1 hour 45 mins ago
 Puno, Peru attempted a failed login using an invalid username “admin”.
IP: 201.240.65.145  [block]

1 hour 46 mins ago
 New Delhi, India attempted a failed login using an invalid username “admin”.
IP: 117.223.16.15  [block]

1 hour 46 mins ago
 Neihu, Taiwan attempted a failed login using an invalid username “admin”.
IP: 101.10.52.29  [block]

1 hour 46 mins ago
 India attempted a failed login using an invalid username “admin”.
IP: 202.137.234.254  [block]

1 hour 47 mins ago
 Uthai Thani, Thailand attempted a failed login using an invalid username “admin”.
IP: 118.172.193.229  [block]

1 hour 47 mins ago
 Italy attempted a failed login using an invalid username “admin”.
IP: 151.22.169.11  [block]

1 hour 47 mins ago
 Taipei, Taiwan attempted a failed login using an invalid username “admin”.
IP: 58.115.246.84  [block]

1 hour 49 mins ago
 Ageo, Japan attempted a failed login using an invalid username “admin”.
IP: 220.156.2.107  [block]

1 hour 49 mins ago
 Trabzon, Turkey attempted a failed login using an invalid username “admin”.
IP: 212.253.90.18  [block]

1 hour 49 mins ago
 Netherlands attempted a failed login using an invalid username “admin”.
IP: 146.0.74.234  [block]

1 hour 49 mins ago
 Aydin, Turkey attempted a failed login using an invalid username “admin”.
IP: 88.253.132.3  [block]

1 hour 49 mins ago
 Philippines attempted a failed login using an invalid username “admin”.
IP: 180.191.91.225  [block]

1 hour 49 mins ago
 Gandhidham, India attempted a failed login using an invalid username “admin”.
IP: 117.212.135.145  [block]

1 hour 50 mins ago
 Ho Chi Minh City, Vietnam attempted a failed login using an invalid username “admin”.
IP: 118.68.174.8  [block]

1 hour 51 mins ago
 New Delhi, India attempted a failed login using an invalid username “admin”.
IP: 117.221.114.198  [block]

1 hour 51 mins ago

Questi sono tutti bot, decidete voi cosa è meglio fare.

Tags: , ,

WordPress Core is Secure – Stop Telling People Otherwise | WordPress Hosting by @WPEngine

wordpress secure

It’s time to clear up the debate once and for all. Despite all the doubts (and some haters), WordPress core is without a doubt one of the most secure platforms you can choose to put a site on. Of course, a WordPress install is only as secure as the plugins it leverages — but that’s another post for another time.

via WordPress Core is Secure – Stop Telling People Otherwise | WordPress Hosting by @WPEngine.

Tags: ,

Underscores | A Starter Theme for WordPress

Hi. I’m a starter theme called _s, or underscores, if you like. I’m a theme meant for hacking so don’t use me as a Parent Theme. Instead try turning me into the next, most awesome, WordPress theme out there. That’s what I’m here for.

My ultra-minimal CSS might make me look like theme tartare but that means less stuff to get in your way when you’re designing your awesome theme. Here are some of the other more interesting things you’ll find here …

viaUnderscores | A Starter Theme for WordPress.

Assolutamente da non perdere l’ennesimo ottimo progetto di automattic.

Tags: ,