- Home
- Categorie
- Coding e Sistemistica
- WordPress
- Cambiare lingua delle singole pagine wordpress
-
Ciao Lionard84, per caso le pagine in lingua condividono parte dell'url?
Nel senso che le pagine in inglese hanno url tipo www.nomesito.it/en/ ?
Se così fosse si riesce a risolvere con una semplice funzione... Fammi sapere se è così che ti posto il codice necessario....
-
Ciao, grazie della risposta, purtroppo no perchè non sono riuscito ad inserire /en/ nel link, ho provato alcuni plugin che permettevano di modificare tutto il permalink ma mi creavano non pochi problemi sul blog, perciò li ho tolti. Wp non fà inserire directory virtuali nel permalink quindi non saprei neppure come fare sinceramente.
Grazie ancora
-
Ciao, se non esiste per le singole pagine mi puoi scrivere in ogni caso il codice per più pagine (cerco di mettere sotto /en/ le varie pagine in inglese) Grazie.
-
Questo codice è da inserire nel file functions.php del tema
Ipotizzando che wordpress sia installato nella root:
[php]
function get_lingua(){
$url=explode('/',$_SERVER['REQUEST_URI']);
//valore predifinito nel caso gli articoli si trovino nella root
$ret='it-IT';
if(sizeof($url)>1)
{
switch ($url[1])
{
case 'en':{
$ret='en-US';
break;
}
case 'fr':{
$ret='fr-FR';
break;
}
case 'it':
default:{
$ret='it-IT';
break;
}} } return $ret;
}
[/php]Nel file header.php devi invece modificare la prima riga come segue:
[php]
<html dir="ltr" lang="<?php echo get_lingua();?>">
[/php]
-
Grazie, adesso devo solo capire come modificare gli url (permalink) in modo che compaia /en/ , inizialmente pensavo ad una categoria ma questa possibilità sembra valida solo per gli articoli e non per le pagine.
Grazie ancora e ciao
-
Ciao, per le pagina è sufficente creare un pagina con url /en/ e impostare tutte le altre come pagine figlie.
L'impostazione per rendere una pagina "figlia" la trovi sia nel modifica, che nel modifica veloce...
-
Grazie! Mi viene un'altro dubbio, così facendo all'interno delle pagine in inglese compare "
<link rel='up' title='en' href='http://miosito/en[](http://127.0.0.1:8888/en)' /> ```Questo cosa comporta per i motori di ricerca? Visto che la pagina esiste solo per permettere l'uso del codice potrei inserire nel file robot:
Disallow: /en
Che ne pensi? Ciao :D
-
Il codice che mi hai dato lo devo iserire nel functions.php prima dell'ultimo endif;
function get_lingua(){ $url=explode('/',$_SERVER['REQUEST_URI']); //valore predifinito nel caso gli articoli si trovino nella root $ret='it-IT'; if(sizeof($url)>1) { switch ($url[1]) { case 'en':{ $ret='en-US'; break; } case 'fr':{ $ret='fr-FR'; break; } case 'it': default:{ $ret='it-IT'; break; } } } return $ret; } endif;
Oppure dopo l'endif alla fine di tutto il function? Devo sostituirlo a qualcosa o devo solo aggiungerlo?
Riguardo alla parte
<html dir="ltr" lang="<?php echo get_lingua();?>">
devo inserirla al posto di ```
<html <?php language_attributes(); ?>>?><!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>Grazie.
-
La funzione va dopo l'ultimo endif;
Il codice nel header.php deve essere come questo (elimini quindi language_attributes()
<!DOCTYPE html>
<html dir="ltr" lang="<?php echo get_lingua();?>">
<head>
-
Grazie, ho però notato un rallentamento delle pagine inserendo quel codice, è normale?
-
Se mi parti un rallentamento di 1 ms, può essere se è maggiore non penso sia da imputare al codice, soprattutto vista la semplicità dello stesso. Non è che contemporaneamente hai falto altre modifiche?
-
No, nessuna modifica, è solo che impiega alcuni secondi prima di aprire la prima pagina, poi se uno continua a navigare le pagine interne le apre subito, bho magari è un problema del server.
-
Dalla tua descrizione sembra che dipenda da files javascript e/o immagini. Questi una volta scaricati vengono salvati nella cache per cui sono subito prnti ad ogni caricamento di pagina. tutto normale insomma.
Altrimenti potrebbe dipendere dal fatto che stai accedendo ad un file su di un server che al momento è lento (ogni tanto mi capita di notare rallentamenti quando utilizzo jquery sulla cdn di google)