Permalink multi-idioma en qtranslate
Estoy usando el plugin qtranslate en mi sitio WordPress para hacerlo multi-idioma.
Ahora tengo un requisito como:
Para inglés la URL debería verse como www.sitio.com/contacto-en Para francés la URL debería verse como www.sitio.com/fr/contacto-fr
¿Cómo puedo lograr esto? (usando qTranslate)
Nota: No debe aparecer ningún ID de publicación en medio
Según la publicación en https://wordpress.stackexchange.com/questions/24061/multilingual-permalinks-qtranslate probé http://www.3dolab.net/en/qtranslateslug-plugin-widget pero están ocurriendo errores de "página no encontrada". Parece que el autor ha dejado de mejorar ese plugin según el comentario 29 en esa página.

En la configuración de qTranslate en el panel de administración, abre las opciones avanzadas y marca el botón de radio para usar prefijos de idioma después del nombre del dominio. Asumo que tienes el francés listado en la configuración de Idiomas del plugin, ¿correcto? Puedes esperar que las fechas se muestren incorrectamente después de eso, usa la función date de PHP para corregirlo en la configuración de tu idioma particular (editar idioma). Como j F. Ve un ejemplo en minexrussia.com/2011 donde el prefijo ru se coloca de la misma manera.
Para evitar el prefijo en, selecciona inglés como idioma predeterminado y marca la configuración en Opciones avanzadas para no mostrar el prefijo para el idioma predeterminado. Sugiero eliminar todos los demás idiomas excepto en y fr en la configuración del plugin.

Tenemos el plugin "qtranslateslug-plugin-widget" funcionando en el área de administración para almacenar slugs en la tabla de slugs, y he implementado mi propio código en el lado del usuario.
En la página wp-blog-header.php
he añadido mi código justo antes de la inclusión del archivo wp-load.php
. Tomé la URL de $_SERVER['REQUEST_URI']
, y usando el slug e idioma en ella, recuperé el nombre de la publicación y asigné la URI modificada a $_SERVER['REQUEST_URI']
apropiadamente.
Por ejemplo:
Antes de editar: $_SERVER['REQUEST_URI'] = '/fr/slug-en-frances';
Después de editar: $_SERVER['REQUEST_URI'] = '/nombre-de-publicacion';
Permíteme explicarlo de manera más detallada:
Asignar
$_SERVER['REQUEST_URI']
a una variableObtener el slug dividiéndolo con la barra (
/
)Verificar el slug en la tabla de slugs de la base de datos que usa el plugin "qtranslateslug-plugin-widget" y obtener el ID de la publicación desde allí
Usando el ID de la publicación, obtener el nombre de la publicación desde la tabla de posts
Unirlo de la manera que mostré en el ejemplo anterior
Asignarlo de nuevo a
$_SERVER['REQUEST_URI']

Por favor, echa un vistazo a http://wordpress.org/plugins/qtranslate-slug/
Qtranslate es un buen plugin pero desafortunadamente hoy está desactualizado. Qtranslate Slug es un complemento para QTranslate, que añade soporte para traducciones de enlaces permanentes y corrige algunas deficiencias de QTranslate desde WordPress 3.0.
