Permalink multilingue in qtranslate
Sto utilizzando il plugin qTranslate per il mio sito WordPress per renderlo multilingue.
Ora ho un requisito come:
- Per l'inglese l'URL dovrebbe essere www.sitename.com/contact-en
- Per il francese l'URL dovrebbe essere www.sitename.com/fr/contact-fr
Come posso realizzarlo? (il plugin utilizzato è qTranslate)
Nota: Non dovrebbe apparire alcun ID articolo nell'URL
Come suggerito nel post https://wordpress.stackexchange.com/questions/24061/multilingual-permalinks-qtranslate ho provato http://www.3dolab.net/en/qtranslateslug-plugin-widget ma ricevo errori "pagina non trovata". Sembra che l'autore abbia smesso di sviluppare quel plugin, come indicato nel 29° commento di quella pagina.

Nelle impostazioni di qTranslate nel pannello di amministrazione, apri le opzioni avanzate e seleziona il pulsante radio per utilizzare i prefissi della lingua dopo il nome del dominio. Suppongo che tu abbia il francese elencato nelle impostazioni delle Lingue del plugin, corretto? Dopo questa modifica, potresti notare che le date vengono visualizzate in modo errato; utilizza la funzione PHP date
per correggere questo problema nelle impostazioni della lingua specifica (modifica lingua). Ad esempio, j F
. Vedi un esempio su minexrussia.com/2011 dove il prefisso "ru" è posizionato nello stesso modo.
Per evitare il prefisso "en", seleziona l'inglese come lingua predefinita e attiva l'impostazione nelle Opzioni avanzate per non mostrare il prefisso per la lingua predefinita. Suggerisco di rimuovere tutte le altre lingue tranne l'inglese (en) e il francese (fr) nelle impostazioni del plugin.

Sì, ho il francese nella mia lista di lingue. La data non dovrebbe comparire nell'URL. La mia richiesta di base è che voglio poter assegnare slug diversi per le diverse lingue. Ad esempio: /contact-en per l'inglese, /contact-fr per il francese come descritto nella mia domanda.

Avendo il plugin "qtranslateslug-plugin-widget" funzionante nella parte amministrativa per memorizzare gli slug nella tabella degli slug, ho inserito il mio codice nella parte utente.
Nella pagina wp-blog-header.php
ho aggiunto il mio codice appena prima dell'inclusione del file wp-load.php
. Ho preso l'URL da $_SERVER['REQUEST_URI']
e, utilizzando lo slug e la lingua in esso contenuti, ho recuperato il nome del post e assegnato l'URI modificato a $_SERVER['REQUEST_URI']
in modo appropriato.
Ad esempio:
Prima della modifica: $_SERVER['REQUEST_URI'] = '/fr/french-slug';
Dopo la modifica: $_SERVER['REQUEST_URI'] = '/post-name';
Lasciatemi spiegare in modo più dettagliato:
Assegna
$_SERVER['REQUEST_URI']
a una variabileOttieni lo slug facendo l'explode con la barra (
/
)Verifica lo slug nella tabella del database degli slug che il plugin "qtranslateslug-plugin-widget" sta utilizzando e ottieni l'ID del post da lì
Ora utilizza l'ID del post per ottenere il nome del post dalla tabella dei post.
Fai l'implode in modo da ottenere il risultato mostrato nell'esempio precedente.
Assegnalo nuovamente a
$_SERVER['REQUEST_URI']

Per favore dai un'occhiata a http://wordpress.org/plugins/qtranslate-slug/
Qtranslate è un ottimo plugin ma purtroppo oggi è obsoleto. Qtranslate Slug è un addon per QTranslate, che aggiunge il supporto per la traduzione dei permalink e corregge alcune carenze di QTranslate a partire da WordPress 3.0.
