WordPress visite 39

Un sito multilingua in WordPress senza utilizzare plugin

5 min

Come vi abbiamo spesso detto, quando si gestisce un sito in WordPress è bene limitare il più possibile l’uso dei plugin. Il seguente metodo vi permetterà di creare un sito multilingua senza l’uso di plugin. Ciò comporta anche un controllo maggiore sulle traduzioni che, se realizzate da un professionista, saranno sicuramente più fedeli al testo originale e quindi più attendibili. Del resto se vogliamo scalare posizioni nei motori di ricerca, un buon testo,
ma soprattutto un testo con frasi di senso compiuto, ha sicuramente il suo valore in termini di SEO.

Come è possibile creare manualmente un sito multilingua in WordPress?
Attraverso i campi personalizzati e l’utilizzo delle condizioni “if/else”.

Probabilmente ci sono diversi modi per gestire le diverse lingue di un sito, ma questo mi sembra un metodo abbastanza immediato e logico/intuitivo.

Contenuto bloccato: accettare utilizzo dei cookie e ricaricare la pagina per visualizzarlo
Contenuto bloccato: accettare utilizzo dei cookie e ricaricare la pagina per visualizzarlo

Come utilizzare i campi personalizzati

Nel pannello di WordPress creiamo una nuova pagina. Per le lingue differenti da quella principale (l’italiano nel nostro caso) andiamo ad aggiungere un campo personalizzato.

Se il pannello dei campi personalizzati non viene visualizzato clicchiamo in alto a destra su Impostazioni schermata e mettiamo una spunta su “Campi personalizzati”

Clicchiamo su “Aggiungi nuovo” e scriviamo il Nome del campo, ad esempio “lingua” (ovviamente senza virgolette) e indichiamo come Valore la lingua desiderata, ad esempio en (inglese), fr (francese), de (tedesco), o quant’altro.

Contenuto bloccato: accettare utilizzo dei cookie e ricaricare la pagina per visualizzarlo
Contenuto bloccato: accettare utilizzo dei cookie e ricaricare la pagina per visualizzarlo

Un’unica accortezza, utilizziamo un Valore differente per le diverse homepage, ad esempio scriviamo en-home, fr-home, de-home e via dicendo.

Ripetiamo l’operazione per tutte le pagine in lingua straniera. Fatelo subito quando create un nuovo contenuto in modo da non dimenticarvene. Non dobbiamo fare altro all’interno di WordPress.

Come utilizzare le condizioni if/else

L’utilizzo delle condizioni if/else ci permetterà di “smistare il traffico” nelle varie lingue:

  1. il file page.php ridirezionerà alle homepage e alle pagine delle diverse lingue
  2. il file category.php ridirezionerà alle categorie delle diverse lingue
  3. il file single.php ridirezionerà agli articoli delle diverse lingue

Questo piccolo schema vi sarà molto più chiaro nel proseguimento dell’articolo.

1. Le operazioni nel file page.php

Apriamo il file page.php e analizziamo come procedere.
Per prima cosa avvertiamo WordPress del nostro utilizzo dei campi personalizzati (nel nostro caso il nome del Campo è “lingua”) attraverso questa stringa di codice:

<?php $lingua = get_post_meta($post->ID, 'lingua', TRUE); ?>

Procediamo adesso con la seconda parte del codice, utilizzando appunto le condizioni if/else.

<?php 
if ($lingua == "en-home") {
include 'en-index.php';
} elseif ($lingua == "en") {
include 'en-page.php';

} elseif ($lingua == "fr-home") {
include 'fr-index.php';
} elseif ($lingua == "fr") {
include 'fr-page.php';

} elseif ($lingua == "de-home") {
include 'de-index.php';
} elseif ($lingua == "de") {
include 'de-page.php';

} elseif ($lingua == "ne-home") {
include 'ne-index.php';
} elseif ($lingua == "ne") {
include 'ne-page.php';

} else  {
include 'it-page.php';
} 
?>

Se conoscete come utilizzare if/else vi sarà facile leggere questo codice, abbastanza immediato anche per chi mastica semplicemente un pò di inglese. Con questo codice diciamo quanto segue:

se il Campo lingua è “en-home” includi il file “en-index.php”, altrimenti se il Campo lingua è “en” includi il file “en-page.php”, altrimenti se……. altrimenti carica il file “it-page.php”

Il file “page.php” diventerà quindi un semplice switch attraverso il codice appena scritto.
Ma dove allora finisce il contenuto del nostro page in italiano? Se state seguendo con attenzione questo procedimento avrete capito che si trasforma in “it-page.php”.

2. Le operazioni nel file category.php

Vi starete chiedendo adesso come procedere con le categorie che non dispongono dei campi personalizzati.
Dovremo creare categorie differenti per le varie lingue e inserire il seguente codice nel file category.php:

<?php 
if (is_category( 'nome categoria inglese' )) {
include 'en-category.php';

} elseif (is_category( 'nome categoria francese' )) {
include 'fr-category.php';

} elseif (is_category( 'nome categoria tedesco' )) {
include 'de-category.php';

} else  {
include 'it-category.php';
} 
?>

Il significato di questo codice mi sembra abbastanza chiaro, carica un differente file category in base al nome della categoria. La funzione php “is_category” serve proprio a questo scopo, ad identificare la categoria.

3. Le operazioni nel file single.php

Per il file single.php abbiamo due modi differenti con cui potremmo procedere. Potremmo comportarci come abbiamo fatto per il file page.php, ossia inserire il campo personalizzato in ogni articolo che inseriamo, ma c’è una strada molto più semplice, che automatizzerà il tutto. Analizziamo il codice:

<?php
if ( in_category( 'nome categoria inglese' )) {
include 'en-single.php';
} elseif ( in_category( 'nome categoria francese' )) {
include 'fr-single.php';
} elseif ( in_category( 'nome categoria tedesco' )) {
include 'de-single.php';
} else  {
include 'it-single.php';
} 
?>

In questo caso utilizziamo la funzione php “in_category” che determina in quale categoria abbiamo inserito il nostro articolo. Basterà quindi selezionare la categoria giusta quando inseriamo un nuovo articolo e in automatico il nostro sito si visualizzerà nella lingua giusta.

Ultime operazioni

I più svegli avranno già capito che dovrete creare una serie di file per ogni lingua straniera, in modo da gestirli in maniera separata e quindi più comoda. Conviene copiarsi tutti i file in lingua italiana e rinominarli come segue:

  • en-home.php
  • en-page.php
  • en-single.php
  • en-category.php
  • en-header.php
  • en-sidebar.php
  • en-footer.php

A questo punto apriamo en-home, en-page, en-category, en-single ed al posto del “get” utilizziamo “include”, quindi ad esempio trasformiamo:

<?php get_header(); ?>
...
<?php get_sidebar(); ?>
...
<?php get_footer(); ?>

in

<?php include 'en-header.php'; ?>
...
<?php include 'en-sidebar.php'; ?>
...
<?php include 'en-footer.php'; ?>

Ripetiamo la procedura per le varie lingue. A prima occhiata la procedura può sembrare complessa, in realtà è molto semplice, bisogna solo entrare nel meccanismo. Ora possiamo modificare i testi in lingua straniera a nostro piacimento con le nostre traduzioni professionali.

p.s.: non dimenticate di modificare le immagini 😉

Riproduzione riservata © La riproduzione è concessa solo citando la fonte con link all'articolo. Condividi l'articolo


Articolo a cura di: Del Re Valerio
Dott. in Comunicazione e Pubblicità per le Organizzazioni. Sono l'ideatore del blog Robadagrafici.com e mi occupo di comunicazione visiva, grafica e web, per le aziende.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *



Potrebbe anche interessarti

wordpress

WordPress

Avatar personalizzato nei commenti

1 min Se utilizzi cms, se hai un blog personale o ne gestisci…

wordpress

WordPress

Installare e configurare WordPress in locale (sul proprio pc)

4 minQuando si sta imparando ad utilizzare un CMS come WordPress e/o si…

wordpress

WordPress

Un plugin WordPress per visualizzare temi diversi per dispositivi diversi

1 minIl vostro Cliente vi ha commissionato un sito internet che non sia…