Página principal » Documentación » Soporte » Crear Temas multilingües en WordPress » Números ID dependientes del idioma

Números ID dependientes del idioma

Muchos Temas despliegan entradas, páginas y categorías especiales en particular, basados generalmente en números ID. Por ejemplo, una sección de entradas "Especiales" en la página principal o categorías destacadas.

En algunos casos, esos números ID están integrados directamente dentro del código PHP del Tema, mientras que en otros el usuario los elige en la pantalla de configuración del Tema.

Para desplegarse correctamente, el Tema necesita elegir el número ID correspondiente a cada idioma. En WPML, los números ID para entradas, páginas, categorías y etiquetas varían cada vez que cambia el idioma, de manera tal que el Tema necesita utilizar el número ID relacionado con el idioma activo.

WPML proporciona una función API que realiza lo siguiente:

icl_object_id(ID, tipo, devuelve_el_original_si_no_existe)

  • ID: el número ID de la entrada, página, etiqueta o categoría.
  • tipo: ‘post’, ‘page’, ‘tag’ o ‘category’
  • devuelve_el_original_si_no_existe: true cuando WPML debe devolver el número ID del elemento original del idioma si la traducción no existe o false cuando WPML debe devolver un valor NULL si la traducción no existe.

El argumento ID puede ser el número ID del objeto en cada idioma. Lo que realizará la función es buscar el grupo de traducción para ese objeto y luego el número de ID del objeto correspondiente para el idioma activo.

Ejemplo de utilización

icl_object_id(3, 'category', false)

Devuelve el número ID de la categoría que corresponde a la traducción de la categoría 3. Si no existe, devuelve NULL.

Cómo aplicarlo en Temas

Si está escribiendo un Tema que necesita ser utilizado con WPML, pero también desea que se ejecute adecuadamente sin WPML, debería realizar esas llamadas por medio de la función function_exists(). Por ejemplo: puede crear esta función en su archivo functions.php:

function lang_category_id($id){
  if(function_exists('icl_object_id')) {
    return icl_object_id($id,'category',true);
  } else {
    return $id;
  }
}

Esta función devolverá el número ID de la categoría traducida (si existe) o el número ID de la categoría original (si no hay traducción). Si WPML no está instalado, el número ID original de la categoría será devuelto siempre.

Traducir arreglos de números ID

Muchas veces se necesita generar un arreglo completo de números ID para objetos (mayoritariamente, de categorías). Para lograr esto, puede utilizar la función siguiente:

function lang_object_ids($ids_array, $type) {
 if(function_exists('icl_object_id')) {
  $res = array();
  foreach ($ids_array as $id) {
   $xlat = icl_object_id($id,$type,false);
   if(!is_null($xlat)) $res[] = $xlat;
  }
  return $res;
 } else {
  return $ids_array;
 }
}

Además, esta función acepta el tipo de objeto como un argumento.

Por ejemplo: para recuperar un arreglo de números ID para las categorías 1,3 y 6 podríamos realizar la llamada siguiente:

lang_object_ids(array(1,3,6),'category')

Deje una respuesta

Deje aquí comentarios exclusivamente sobre esta página.
Por soporte técnico y comentarios sobre sus funciones, diríjase a nuestro foro. Lo esperamos ahí.

Puede utilizar estas etiquetas:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Suscribirse sin realizar comentarios