qTranslate è un plugin molto utile per chi vuole tradurre un sito wordpress in altre lingue, questo plugin però ha un piccolo deficit, quello dei campi personalizzati. Mi sono imbattuto in questo problema qualche giorno fa’ e sono riuscito a risolverlo.

Veniamo alla soluzione del problema.

Per visualizzare un campo personalizzato su un post utilizziamo la solita funzione wordpress. La prima variabile contiene l’id del post, la seconda il nome del campo personalizzato ed infine il terzo valore determina il ritorno della funzione. Se true torna una stringa altrimenti torna un array di valori.

1
$campopersonalizzato=get_post_meta($post-id, 'campopersonalizzato', true);

Per utilizzare il nostro amato plugine e fare la traduzione del campo personalizzato, modifichiamo il codice aggiungendo la funzione di qTranslate che si occupa del riconoscimento della lingua.

1
$campopersonalizzato=qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage(get_post_meta($post-id, 'campopersonalizzato', true));

Si, il nome della funzione è particolare, ve ne sarete sicuramente accorti. Il funzionamento è garantito. Io utilizzo la versione 2.5.31 di qTranslate compatibile con l’ultimo WordPress 3.4.1.

Non è ancora finita.

Per utilizzare questa funzione nel campo personalizzato, bisogna utilizzare i tag di traduzione di qTranslate. Se per esempio avete attivato italiano e inglese sul vostro sito utilizzate la seguente sintassi nel campo “Valore”:

1
[:it] questo è il testo in italiano [:en] questo è il testo in inglese.

Questo è il metodo più rapido di utilizzo. Un metodo sicuramente più pulito è quello di utilizzare un hook di riscrittura della funzione get_post_meta() includendo la funzione di qTranslate.

Per chi avesse qualche dubbio o richiesta non esistate a contattarmi.

Se vi è stato utile cliccate sul tasto “Like” o sul bottone +1