Le variabili relative alle pagine in WordPress

Visto che per l’ennesima volta mi sono scordato di appuntarmi in Tomboy il contenuto di queste variabili, lo faccio adesso anche sul blog, così magari vi tornano utili.

Si tratta di alcune variabili globali di WordPress relative alla paginazione di post (quando leggete “post” intendo dire articolo e pagina statica) e di pagine d’archivio. Trovate segnalato se la variabile va usata all’interno del loop; per dichiararla globale si usa global $variabile;.

Variabili globali di post e pagina

$multipage

Dice se un post è suddiviso in più pagine o no. Va usata nel loop.
Ad esempio, se un post è suddiviso in 5 pagine, il valore sarà true.

$numpages

Contiene il numero di pagine di un post suddiviso in più pagine. Va usata nel loop.
Ad esempio, se un post è suddiviso in 5 pagine, il valore sarà 5.

$page

Contiene il numero di pagina visualizzata di un post suddiviso in più pagine.
Ad esempio, se stiamo visualizzando la pagina 3 di un post suddiviso in 5 pagine, il valore sarà 3.

$pages

È un array contenente tanti elementi quante sono le pagine di un post. Va usato nel loop.
Ad esempio, se un post è suddiviso in 3 pagine, l’array conterrà 3 elementi (0, 1, 2) e ciascun elemento conterrà una parte del post.

Variabili globali d’archivio

$paged

Contiene il numero di pagina visualizzata di un archivio.
Ad esempio, se stiamo vedendo la pagina 5 dell’archivio del tag “wordpress”, il valore sarà 5.

$wp_query->max_num_pages

Contiene il numero totale di pagine in cui un archivio è suddiviso. Non è una variabile globale, ma un elemento dell’array $wp_query, che quindi andrà dichiarato globalmente (global $wp_query;)
Ad esempio, se abbiamo impostato WordPress per mostrare 5 post per pagina e abbiamo 20 post con tag “wordpress”, il valore sarà 4 per la pagina d’archivio del tag “wordpress”.

Autenticazione multifattoriale con Perfect Paper Passwords

Qualche mese fa ho scritto un post sul plugin One-Time Password che ha lo scopo di rendere più sicura l’autenticazione nella propria area amministrativa di WordPress mediante l’uso dell’omonima tecnica detta One-Time Password. In breve, con questo sistema possiamo autenticarci alla Bacheca di WordPress usando una password usa-e-getta che può sostituire la password di WordPress (ottimo in caso di utilizzo in un Internet Cafè) o aggiungersi ad essa.

Oltre a questo plugin, ne esiste un altro che fa qualcosa di molto simile: Perfect Paper Passwords. Con esso avrete a disposizione una password usa-e-getta che si aggiunge (e non si sostituisce) a quella di WordPress.

Autenticazione forte

Sappiamo che per autenticarsi a un sistema informatico con ragionevole sicurezza è buona cosa utilizzare un’autenticazione a due fattori:

  • qualcosa che si sa (username e password)
  • qualcosa che si ha (un oggetto, che può essere un token, una smartcard, una chiavetta USB, la SIM del telefono, la biometria o anche un semplice taccuino con password usa-e-getta.

Questo è anche il sistema usato da molte banche per i loro servizi online. In questo modo, anche se un malintenzionato dovesse entrare in possesso delle vostre credenziali, non potrebbe accedere al sistema perché non ha il secondo fattore di autenticazione, il quale appunto cambia continuamente.

Questo plugin vi dà la possibilità di implementare in WordPress il sistema OTP in modo facile e gratuito.
Continua a leggere

Evitare il texturize di WordPress

Nel cantiere continuamente aperto, che è questo blog, ho trasferito tutti gli shortcode che andavo copiando di tema in tema in un plugin apposito, UBN Shortcodes, in modo da averli sempre disponibili anche su temi che intendo solo provare. Si tratta di funzioni che mi aiutano parecchio nella stesura degli articoli; unito poi all’uso di AddQuicktag 1 la cosa diventa straordinaria.

Mentre facevo questa operazione, ho aggiunto uno shortcode dedicato all’elemento pre e mi sono accorto che WordPress cambiava le virgolette diritte " in quelle tipografiche “. Mi chiedevo come mai, visto che se usavo direttamente quell’elemento il cambio non veniva operato. Era chiaro che bisognava dare uno sguardo al file /wp-includes/formatting.php e, di preciso, alla funzione wptexturize($text), una vecchia conoscenza per chi ha a che fare con la creazione di temi e plugin. Questa funzione, che appunto trasforma alcuni caratteri in altri, non viene eseguita su quei caratteri che si trovano all’interno di alcuni elementi HTML prestabiliti, e cioè:

$default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt');

Come vedete, troviamo anche il nostro pre. Alla riga successiva, troviamo un altro array, ma stavolta dedicato agli shortcode da non “texturizzare”. L’array, però, contiene solo code:

$default_no_texturize_shortcodes = array('code');

Per questo motivo il mio shortcode [pre] subiva gli effetti "nefasti" di wptexturize.

Per includere in un tema o in un plugin anche altri shortcode all'array, è sufficiente aggiungere un filtro. Infatti, se nel file formatting.php guardiamo un po' oltre, vediamo questa riga:

$no_texturize_shortcodes = '(' . implode('|', apply_filters('no_texturize_shortcodes', $default_no_texturize_shortcodes) ) . ')';

dove la presenza di apply_filters ci consente di ampliare gli shortcode che non subiscono alcuna modifica al loro contenuto. Più tecnicamente, dobbiamo creare un array di elementi HTML da assegnare a no_texturize_shortcodes che verranno quindi aggiunti all'array principale $default_no_texturize_shortcodes.

Basta così creare una funzione apposita nel proprio tema o plugin che può suonare più o meno così:

add_filter('no_texturize_shortcodes',  'ubn_no_texturize_shortcodes');

function ubn_no_texturize_shortcodes( $shortcodes_array ) {
	$shortcodes_array = array( 'pre', 'tt' );

	return $shortcodes_array;
}

Ho inserito sia pre che tt, cioè due shortcode che uso io: potete sostituirli con quelli che volete o aggiungerne d altri. Questa semplice funzione vi garantisce che il testo inserito all'interno rimarrà intatto. Con questa tecnica si può allargare, ovviamente, pure l'array dedicato ai "tags", anche se comunque non vedo necessità di farlo.

Note

  1. Scrissi qualcosa su AddQuicktag in questo post.

Password OTP (usa e getta) per WordPress

Se vi è mai capitato di voler accedere al vostro blog mentre vi trovavate in un ambiente non sicuro e non lo avete fatto perché giustamente non vi fidavate, sappiate che potete far uso del metodo della One Time Password 1 (OTP), oggi disponibile anche per WordPress. Probabilmente conoscerete già questo sistema perché molte banche lo fanno usare ai loro clienti (mi riferisco a quelle specie di chiavette che generano numeri). In breve, si tratta di accedere a un ambiente amministrativo (nel nostro caso alla Bacheca di WordPress) usando non l’unica password che abbiamo precedentemente scelto noi, ma una password che può essere usata una sola volta, quindi una password “usa e getta”. La volta successiva che ci vogliamo autenticare alla Bacheca inseriremo un’altra password, diversa dalla precedente.

È evidente la scomodità di dover sempre digitare una password diversa e non memorizzabile, ma è un piccolo prezzo da pagare se si vuole accedere senza paura in ambienti non sicuri al pannello amministrativo di WordPress. Se il keylogger 2 del PC condiviso che stiamo usando nell’Internet Café ha memorizzato la One Time Password, possiamo stare sicuri che essa è ormai inservibile.

Un sistema del genere certamente può dare una mano per aumentare la garanzia di sicurezza della nostra Bacheca anche se vi accediamo sempre e solo dalla nostra Linux box (su cui non girano malware 3 di sorta), ma tornerà utile soprattutto a chi è sempre in viaggio e fa uso del PC in ambienti non adeguatamente protetti (o di cui noi non ci fidiamo).

Continua a leggere

L’immensa utilità delle espressioni regolari

Dopo anni di onorato servizio ho mandato in pensione il plugin WP CodeBox, che mi serviva per pubblicare righe di codice senza che WordPress le eseguisse ed evidenziandone anche la sintassi in base al linguaggio. Funziona bene il plugin, ma c’è stato sempre un aspetto che, pur sopportandolo, non mi andava giù: durante la scrittura del post contenente codice, dovevo restare in modalità HTML senza passare a quella Visuale, altrimenti tutti i caratteri come < venivano trasformati nelle rispettive entità HTML.

Ho deciso, quindi, di provare il plugin SyntaxHighlighter Evolved che fa la stessa cosa del precedente ma usando gli shortcode e preservando i caratteri anche in modalità Visuale. Tra gli altri vantaggi, questo plugin è sviluppato insieme ad Automattic ed è pure usato su wordpress.com.

Ecco cosa ho combinato: magari vi torna utile.

Continua a leggere

Un plugin per aggiungere contenuto privato ai post

Leggevo oggi il post di Jeff Starr che rilanciava un’idea di Jean-Baptiste Jung: aggiungere al post un blocco di testo da mostrare solo agli utenti che abbiano un preciso ruolo. In un blog monoutente la funzione è pressoché inutile (semmai si può usare per aggiungere una nota personale al post o un testo per gli utenti registrati), ma in un blog multiutente credo che si riveli più utile.

Mentre Jeff e Jean-Baptiste si limitavano a una funzione da implementare nel proprio functions.php che mostrava il testo privato solo a un determinato tipo di utenti, ho esteso lo script in modo da scegliere in fase di composizione dell’articolo chi potesse vedere la “nota privata” avendo presenti i ruoli di WordPress, e cioè (in ordine decrescente): amministratore, editore, autore, collaboratore, sottoscrittore. Se scrivo una nota per l’amministratore, la vedrà solo lui; se la scrivo per l’editore, la vedrà lui e l’amministratore; se la scrivo per il sottoscrittore, la vedrà lui e tutti quelli superiori a lui. Se lo si vuole, si può inserire una nota solo per un determinato ruolo, escludendo tutti gli altri, anche se superiori di ruolo.

Una volta completato il plugin, l’ho inviato a Jeff che lo ha reso disponibile a tutti.

Il codice usato nel plugin si potrebbe utilizzare incollandolo nel proprio functions.php, ma se si cambia tema tutte le note diverranno visibili a chiunque. Col plugin invece questo non succede.

Continua a leggere

Acrobat.com e Google Maps: shortcode per WordPress

Dopo la serie su YouTube ecco altri due shortcode da usare in WordPress. Ricordo che gli shortcode in WordPress, nel caso degli esempi di questo articolo e detto in maniera semplice, consentono di incorporare codice web di servizi come Google e Acrobat. Se, ad esempio volete pubblicare una mappa di Google Maps, Google vi fornisce un pezzo di codice da incollare nella pagina web, qualcosa del tipo:

<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.it/maps?hl=it&amp;ie=UTF8&amp;ll=37.540222,13.95813&amp;spn=4.555009,9.788818&amp;z=7&amp;output=embed"></iframe><br /><small><a href="http://maps.google.it/maps?hl=it&amp;ie=UTF8&amp;ll=37.540222,13.95813&amp;spn=4.555009,9.788818&amp;z=7&amp;source=embed" style="color:#0000FF;text-align:left">Visualizzazione ingrandita della mappa</a></small>

Se volete modificare le dimensioni della mappa restituita, dovete modificare i due parametri width e height.

Tutto questo, però, può essere semplificato con uno shortcode, più semplice da utilizzare e gestire. Vediamo come farlo per Google Maps e Acrobat.com.
Continua a leggere