20
Jul/09
1

Cómo crear un sitio web multilenguaje, compartiendo temas, plugins, uploads, base de datos y usuarios registrados

WordPress logo

En este post, detallo paso a paso las acciones a seguir para configurar un sitio web multilenguaje, compartiendo el repositorio de temas y plugins, una misma base de datos y, sobre todo, los mismos usuarios.

Con esto, logramos facilitar el proceso de actualización y configuración de la UI, ya que alcanzará con agregar -o actualizar- una única vez el diseño gráfico, mantendrá un único repositorio de archivos subidos (uploads) y los usuarios podrán registrarse en una versión (idioma) en particular, y poder cambiarse a otro idioma sin tener que volver a loguearse.

Algunas consideraciones:

  • La configuración de cada wordpress permanece separada, por lo que se pueden configurar formatos de fechas y horas, links, páginas y posts, de manera individual sin que afecte los restantes idiomas.
  • Si bien el presente documento se puede utilizar para instalar distintos idiomas bajo subdominios (p.e. es.misitio.com), algunas prácticas de SEO recomiendan que se instalen bajo subdirectorios, ya que mejora el posicionamiento en buscadores.
  • Todavía no está testeado el mecanismo de actualización a futuras versiones de WordPress
  • Los únicos archivos de configuración que se modifican, son “wp-config.php” y “wp-includes/capabilities.php”
  • Requiere 2 instalaciones de WordPress y su correspondiente configuración y mantenimiento individual.

Antes que nada, utilizaremos las siguientes premisas:

  1. La URL del sitio web es: www.misitioweb.com
  2. La raíz del usuario en el servidor web es: /home/misitio/
  3. Se instalará en los idiomas: español (es) e inglés (en)

 

Instalación de WordPress

1)      Instalar Wordpress bajo el directorio /public_html/es

2)      Instalar Wordpress bajo el directorio /public_html/en

Compartir Temas y Plugins

3)      Copiar el directorio “/home/misitio/public_html/es/wp-content” a la raiz del www

  • Destino final: “/home/misitio/public_html/wp-content”

4)      Eliminar el directorio “/home/misitio/public_html/es/wp-content”

5)      Eliminar el directorio “/home/misitio/public_html/en/wp-content”

6)      Modificar el archivo de configuración “wp-config.php” de cada uno de los idiomas

/** WordPress absolute path to the Wordpress directory. */
if ( !defined('ABSPATH') )
        define('ABSPATH', dirname(__FILE__) . '/');
/** PERSONALIZACION PARA MULTIPLES LENGUAJES */
define( 'WP_CONTENT_DIR', ABSPATH . '../wp-content' );               

define( 'WP_CONTENT_URL', 'http://www.misitioweb.com/wp-content');
/** ---------------------------------------- */
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

 

Compartir contenido de Uploads

 7)      Ir al panel de administración de Wordpress, Settings > Miscellaneous

 

Compartir Base de Datos

8)      Exportar la base de datos correspondiente al español, editar el archivo SQL y modificar “wp_” por “wpes_”. (Obs: Unicamente en los nombres de tablas)

9)      Exportar la base de datos correspondiente al inglés, editar el archivo SQL y modificar “wp_” por “wpen_”. (Obs: Unicamente en los nombres de tablas)

10)   Importar la base de datos correspondiente al español, en la base correspondiente a español

11)   Importar la base de datos correspondiente al inglés, en la base correspondiente a español

12)   Eliminar las tablas originales (las que comienzan por “wp_”)

13)   Modificar el archivo de configuración de español “wp-config.php” con la siguiente información

  • $table_prefix  = ‘wp_’; => $table_prefix  = ‘wpes_’;

 14)   Editar el contenido de la tablas “wpes_options”

  • Cambiar “wp_user_roles” por “wpes_user_roles”

 15)   Editar el contenido de la tablas “wpes_usermeta”

  • Cambiar “wp_capabilities” por “wpes_capabilities”
  • Cambiar “wp_user_level” por “wpes_user_level”
  • Cambiar “wp_usersettings” por “wpes_usersettings”
  • Cambiar “wp_usersettingstime” por “wpes_usersettingstime”

 16)   Modificar el archivo de configuración de inglés “wp-config.php” con la siguiente información

  • $table_prefix  = ‘wp_’; => $table_prefix  = ‘wpen_’;

 17)   Editar el contenido de la tablas “wpen_options”

  • Cambiar “wp_user_roles” por “wpen_user_roles”

 18)   Editar el contenido de la tablas “wpen_usermeta”

  • Cambiar “wp_capabilities” por “wpen_capabilities”
  • Cambiar “wp_user_level” por “wpen_user_level”
  • Cambiar “wp_usersettings” por “wpen_usersettings”
  • Cambiar “wp_usersettingstime” por “wpen_usersettingstime”

 Compartir configuración de Usuarios

19)   Renombrar la tabla “wpes_users” por “wp_users”

20)   Renombrar la tabla  “wpes_usermeta” por  “wp_usermeta”

21)   Eliminar las tablas “wpen_users” y “wpen_usermeta”

22)   Modificar el archivo de configuración “wp-config.php” de cada uno de los idiomas

/** PERSONALIZACION PARA MULTIPLES LENGUAJES */
…
/** ---------------------------------------- */
/** PERSONALIZACION PARA COMPARTIR LA TABLA DE USUARIOS */
define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
define('CUSTOM_CAPABILITIES_PREFIX', 'wp_');
/** ---------------------------------------- */

/** Sets up WordPress vars and included files. */

 23)   Modificar el archivo de configuración ” wp-includes/capabilities.php” de cada uno de los idiomas

 Donde dice:

$this->cap_key = $wpdb->prefix . 'capabilities';

Reemplazar por:

if (defined ('CUSTOM_CAPABILITIES_PREFIX')) {
        $this->cap_key = CUSTOM_CAPABILITIES_PREFIX . 'capabilities';
}
else {  
        $this->cap_key = $wpdb->prefix . 'capabilities';
}
Comments (1) Trackbacks (0)
  1. Fede
    11:23 on Octubre 28th, 2009

    Hola Gastón,

    estoy siguiendo este artículo a ver como me queda así.

    La sección “Compartir Base de Datos” ¿no es lo mismo que instalar en la misma base de datos pero con diferente prefijo de tabla? ¿O hay algo que me estoy perdiendo?

Leave a comment

No trackbacks yet.