Riepilogo post nella categoria Wordpress

Molte volte si presenta la necessità di dover modificare una parte del codice HTML di un sito Wordpress. Le strategie per farlo sono molte, a partire dalla modifica diretta dei file di template, passando per la creazione di child template basati sul template originale, e ancora hook su plugin già presenti per modificarne le funzionalità.

Tuttavia, tutte le opzioni sopra riportate sono scomode, controintuitive, ed esose in termini di tempo.

Consideriamo una modifica molto banale al codice HTML finale di un sito Wordpress, ovvero, la riscrittura di tutte le frasi "Read more" oppure "Error page". Questa necessità capita quasi sempre quando si installa un template da themeforest: il supporto alla traduzione è spesso incompleto o parziale, ed andare ad agire sui file di traduzione è noioso e fa perdere tempo.

Fortunatamente, esiste un metodo per "agguantare" il codice HTML del sito prima che venga mandato in output ai browser client, ricalcolarlo a proprio piacimento, e mandarlo in output modificato così come è stato da noi definito.

Tutto questo è fattibile con un semplicissimo plugin, che incollo qui sotto. Ovviamente, questa soluzione è "quick and dirty". Non è da considerarsi lo stato dell'arte per effettuare modifiche al behaviour del proprio template. E' da usare solo quando si ha fretta, o il template è davvero troppo complicato o vetusto da impedirne una rapida modifica.

<?php
/*
Plugin Name: Final Output Buffer
Plugin URI: https://www.mauriziofonte.it/
Description: Il plugin definitivo per la modifica dell'output HTML di Wordpress.
Version: 1.0
Author: Maurizio Fonte
Author URI: https://www.mauriziofonte.it/
License: Questo plugin è concesso con licenza GPL
*/

function wp_mf_is_login_page ( ) {
    return in_array ( $GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php' ) );
}

function wp_mf_finaloutputbuffer ( $buffer ) {
	
	if ( is_admin() || wp_mf_is_login_page () ) return $buffer;
	
	// correzione di tutti i testi "Read More"
	$buffer = str_ireplace ( 'read more', 'Continua a leggere...', $buffer );
	
	// correzione di tutti i testi "Related posts"
	$buffer = str_ireplace ( 'related posts', 'Articoli correlati', $buffer );
	
	// correzione di tutti i testi "goto homepage"
	$buffer = str_ireplace ( 'goto homepage', 'Ritorna alla Home', $buffer );
	
	// correzione di tutti i testi "error 404"
	$buffer = str_ireplace ( 'error 404', 'Errore 404', $buffer );
	
	return $buffer;
}

function wp_mf_finaloutputbuffer_buffer_start() { 
	if ( ! is_admin() && ! wp_mf_is_login_page () ) ob_start ( "wp_mf_finaloutputbuffer" ); 
}

function wp_mf_finaloutputbuffer_buffer_end() { 
	if ( ! is_admin() && ! wp_mf_is_login_page () ) {
		$html = ob_get_clean ();
		echo $html;
	}
}

add_action ( 'after_setup_theme', 'wp_mf_finaloutputbuffer_buffer_start' );
add_action ( 'shutdown', 'wp_mf_finaloutputbuffer_buffer_end' );

Questo codice va inserito all'interno di un file PHP che chiamerete "final-output-buffer.php", ed inserito dentro una cartella, chiamata anch'essa "final-output-buffer", creata all'interno della cartella "wp-content/plugins" della vostra installazione di Wordpress.

Questo plugin funziona nel seguente modo:

  1. Aggiunge un hook dopo il caricamento del template, wp_mf_finaloutputbuffer_buffer_start
  2. Aggiunge un hook su completamento di tutte le azioni di Wordpress, wp_mf_finaloutputbuffer_buffer_end
  3. Istanzia l'output buffer di PHP dichiarando come callback la funzione wp_mf_finaloutputbuffer

Quindi, il flow di esecuzione è il seguente:

  1. Wordpress fa il setup dei plugin e dei template
  2. A completamento della 1), triggera l'esecuzione di wp_mf_finaloutputbuffer_buffer_start, che controlla che la pagina attualmente "in lavorazione" NON sia una pagina di amministrazione o la pagina di login: nel qual caso, procede come se questo plugin non esistesse, altrimenti, istanzia l'output buffer con callback su wp_mf_finaloutputbuffer
  3. Il sito costruisce il "proprio" HTML ignaro di quello che farà wp_mf_finaloutputbuffer
  4. Il codice HTML "originale" viene agganciato da wp_mf_finaloutputbuffer, che lo ricalcola sulla base del codice PHP di replace che è stato inserito dallo sviluppatore
  5. Viene richiamata la funzione wp_mf_finaloutputbuffer_buffer_end, che manda in output il codice HTML sulla base del ricalcolo della 4)

Per modificare il plugin secondo le proprie necessità, è sufficiente andare a modificare la funzione wp_mf_finaloutputbuffer, andando ad effettuare preg_match, str_replace, o qualsiasi tipo di funzione di manipolazione di stringhe su $buffer, che contiene tutto il codice HTML.

Se nella vostra installazione dovessero già essere presenti dei plugin che sfruttano questa tecnica, è molto probabile che avrete dei problemi di content encoding, o che il sito mostrerà pagina bianca. Se dovesse succedere, è sufficiente rinominare temporaneamente la cartella "final-output-buffer", in modo che Wordpress disattivi il plugin, e andare ad analizzare la situazione successivamente.

Traduzione Contact Form 7 in Italiano

Postato in Wordpress
Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2016, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.

Stanchi di vedere il vostro modulo di Wordpress Contact Form 7 tradotto male? Nessun problema, vi viene in aiuto la traduzione in italiano per il plugin Contact Form 7, sviluppata per essere comprensibile, con correzione degli errori di validazione, e aggiornata al Febbraio 2016, ovvero all'ultima release di Contact Form 7, la 4.3.1

Pe installare questa traduzione in italiano bastano pochi minuti: è sufficiente scaricare il pacchetto zip contenente la traduzione e sovrascrivere i file della traduzione attuale nella cartella dei languages di Contact Form 7, che dovrebbe essere:

.../wp-content/plugins/contact-form-7/languages/

Con queste traduzioni aggiornate, vengono corretti gli errori sulla traduzione dei messaggi di validazione, che in questo momento erano in parte italiani ed in parte inglesi, dato dal fatto che la traduzione era stata sviluppata nel lontano 2009 ...

Sapevate che creare traduzioni di plugin di Wordpressè facile? Basta usare il tool PoEdit, aprire il file .pot contenente le "stringhe madri" del plugin, ed iniziare la traduzione da zero. Se, invece, volete correggere o aggiornare un file già localizzato, basterà aprire il file #NOME_PLUGIN#-it_IT.po e aggiornare direttamente le stringhe già tradotte in precedenza.

Eccovi il link per scaricare la traduzione in italiano di Contact Form 7 aggiornata al 2016

Se avete bisogno di una traduzione di un plugin difficile da reperire, contattatemi tramite la pagina "contattami", potrei darvi una mano!

Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2012, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.

Oggi vedremo come correggere un problema che ho notato essere molto (troppo) presente sulle installazioni di Wordpress hostate su Aruba: la visualizzazione di pagine di errore 500 internal server error che capitano più spesso dopo l'upgrade di plugin/temi o del core di wordpress.

Personalmente ho lavorato su un paio di siti Wordpress installati su Aruba, e in entrambi mi è capitato almeno una volta questo stranissimo problema, subito dopo l'upgrade del core. L'ultima volta mi è capitato proprio l'altro ieri, con l'aggiornamento alla versione 3.4.

Bando alle ciance, vediamo come risolvere la questione. Andiamo per step.

1. Accedi al tuo pannello di controllo personale di Aruba loggatevi su admin.aruba.it con le vostre credenziali. Spostatevi su "Pannello gestione Hosting Linux"

2. Clicca sulla scheda "Strumenti ed Impostazioni", quindi clicca su "Riparazione Permissions"

3. Conferma l'operazione ed attendi qualche minuto.

L'attesa è necessaria in quanto Aruba modificherà ricorsivamente tutti i permessi di tutti i file e le cartelle presenti sul tuo archivio: ovviamente, va da sè che a maggior quantitativo di file, maggiore è il tempo da attendere per far sì che la modifica si propaghi a tutto il tuo webserver.

NOTA IMPORTANTE: questo è uno dei tanti problemi che possono scatenare un errore 500 Internal Server Error su Wordpress, e più in particolare su Wordpress+Aruba: questa guida potrebbe anche non funzionare nel tuo caso. Infatti, altre volte possono essere problemi nel file .htaccess o nella incompatibilità tra due plugin o tra plugin e temi a scatenare un errore simile, ma essendo questa procedura molto veloce val la pena di tentare :) se vi va bene, vi siete evitati un mal ti testa assicurato!