Un barbatrucco facile facile per chi gestisce un sito multilingua in WordPress ed il noto plugin WPML, come far apparire qualcosa in più (o di meno, o di diverso) se il sito viene visualizzato in italiano piuttosto che in inglese o in aramaico.
Basta utilizzare un po’ di PHP condizionale (lo abbiamo già visto riguardo WordPress e WooCommerce).
Possiamo, ad esempio, che un particolare box di informazioni appaia solo negli articoli in italiano ma non in quelli in altre lingue, o che una particolare funzione si attivi solo quando si visualizzano le pagine in francese.
Ma vediamo nel dettaglio il codice che ci serve.
Nel file del tema relativo alla parte che vogliamo modificare, che sia l’header piuttosto che il singolo articolo, inseriamo questo codice PHP:
<?php if(ICL_LANGUAGE_CODE=='it'){ ?> /* Inserire qui il contenuto (testo, PHP o HTML) */ /* da visualizzare solo nelle pagine in italiano */ <?php } ?>
Con lo stesso sistema, possiamo inserire un filtro o altra azione nel file functions.php del tema:
if(ICL_LANGUAGE_CODE=='it'){ /* Inserire la funzione da attivare */ /* solo nelle pagine in italiano */ }
Com’è facile immaginare, ci si può sbizzarrire sia con le funzionalità del PHP (con i vari else, elseif etc), sia con il codice permesso da WMPL.
4 risposte
Nel functions.php NON funziona. Sai per caso come mai? Forse c’è da dichiarare qualche variabile globale o includere qualche file esterno?
Grazie.
Ciao Vincenzo, io ho usato il condizionale descritto nel post in più di un’occasione direttamente nel file functions.php, e non ricordo di aver preso mai accorgimenti particolari.
La sintassi è corretta?
L’istruzione viene direttamente dalla documentazione di WPML, forse li c’è scritto qualcosa di più, hai guardato?
rob
Ciao si la sintassi è corretta. Ho trovato una soluzione comunque. La posto qui per coloro che magari si troveranno nello stessa condizione.
Credo innanzitutto sia un problema del template che NON dichiara correttamente le globali di wpml. Comunque per risolvere usate:
global $sitepress;
$sitepress->get_current_language() <– come risultato è identico a ICL_LANGUAGE_CODE quindi tira fuori il codice lingua.
Grazie 1000 per la risposta così veloce 🙂
Vincenzo
Ciao Vincenzo, grazie per il feedback, molto apprezzato! 🙂
rob