• User Attivo

    Cambiare lingua delle singole pagine wordpress

    Salve, vorrei poter cambiare lingua alle singole pagine, alcune pagine sono in inglese e per adesso non posso un sito totalmente in multilingua. Io vorrei solo cambiare la parte in alto:

    <html dir="ltr" lang="it-IT">
    ```e mettere inglese o tedesco, come posso fare ? Con joomla c'è l'impostazione per le singole pagine, con wp non la trovo e non trovo neppure un plugin che permetta di farlo.
    Grazie
    ps: questo solo per dire al motore di ricerca che la pagina è in inglese o in italiano.

  • User Attivo

    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....


  • User Attivo

    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


  • User Attivo

    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.


  • User Attivo

    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]
    😉


  • User Attivo

    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


  • User Attivo

    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...


  • User Attivo

    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

  • User Attivo

    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.

  • User Attivo

    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>

    😉


  • User Attivo

    Grazie, ho però notato un rallentamento delle pagine inserendo quel codice, è normale?


  • User Attivo

    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?


  • User Attivo

    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.


  • User Attivo

    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)