WPML le permite utilizar direcciones URL exclusivas para contenido personalizado en distintos idiomas. Esto incluye la traducción del slug de la entrada como también el nombre del tipo de entrada personalizada.

Las direcciones URL para los tipos de entradas personalizadas incluyen el nombre del tipo de entrada y el nombre de la página. Normalmente, los tipos de entradas personalizadas en diferentes idiomas se muestran de la siguiente manera:

  • /houses/my-green-house/
  • /casas/mi-casa-verde/

La primera parte de la dirección URL, en negrita, es el tipo de entrada. El segundo tipo es el nombre de página.

Para traducir nombres de páginas, haga clic en el botón Editar cerca del campo del enlace permalink en el editor de entradas. Dado que WPML utiliza distintas entradas para cada idioma, puede definir los nombres individualmente.

Editar el enlace permalink de la página
Editar el enlace permalink de la página

Traducir nombres de tipos de entradas personalizadas

Para permitir a WPML traducir los nombres de los tipos de entradas personalizadas, debe aprovechar el módulo de Traducción de Cadenas.

Declarar tipos de entrada personalizadas en PHP

Si usted registra tipos de entradas personalizadas, mediante PHP, WPML captura estas llamadas y registra el slug para traducir.

Declarar tipos de entradas personalizadas con Types

Para definir tipos de entradas personalizadas con PHP, puede utilizar nuestro plugin Types. Types va a declarar automáticamente tipos de entradas personalizadas, para que usted pueda traducirlos en WPML.

Diríjase a Types y edite un tipo de entrada personalizada. Si no está habilitado para traducción de nombres, verá un enlace a la pantalla de configuración de WPML:

Types se vincula con WPML para configurar la localización del slug
Types se vincula con WPML para configurar la localización del slug

Habilitar la localización del nombre del tipo de entrada personalizada en WPML

Luego dirigirse a WPML:> Página de Ajustes. Encontrará la nueva sección para localizar slugs.

La lista de verificación para habilitar la localización del nombre del tipo de entrada personalizada, es:

1. Convertir en traducible el tipo de entrada personalizada

Configurar el tipo de entrada personalizada como Traducir
Configurar el tipo de entrada personalizada como Traducir

2. Habilitar la traducción de slugs del sitio

Habilitar la traducción de entradas personalizadas y slugs base de taxonomías
Habilitar la traducción de entradas personalizadas y slugs base de taxonomías

3. Seleccionar el uso de distintos slugs en diferentes idiomas

Hacer clic en la casilla de verificación para permitir la localización de cada nombre de tipo de entrada personalizada
Hacer clic en la casilla de verificación para permitir la localización de cada nombre de tipo de entrada personalizada

Ahora ya puede traducir los nombres de tipos de entradas personalizadas. Introducir sus traducciones, pulsar Guardar y aparecerán en las URL.

Traducir archivos de tipos de entradas personalizadas

Cuando se registran tipos de entradas personalizadas de forma manual, WordPress permite definir un slug archivo especial utilizando:

has_archive

A partir de la versión 3.2, WPML permite que has_archive se establezca a una cadena. Sin embargo, si el valor de la cadena es diferente a rewrite['slug'], o si no se determina el slug del nombre del TEP, el slug archivo no se puede traducir.

Ejemplo código 1:

En este ejemplo de código, determinamos 'has_archive' => true. Si consideramos que el slug book ha sido traducido a libro en español, los enlaces del archivo se encuentran de la siguiente manera:

  • Inglés (idioma predeterminado): http://mydomain.tld/book/
  • Español (idioma secundario): http://mydomain.tld/es/libro/
add_action( 'init', 'create_post_type' );
function create_post_type() {
 register_post_type( 'book',
 array)
 'labels' => array(
 'name' => __( 'Books', 'textdomain' ),
 'singular_name' => __( 'Book', 'textdomain' )
 ),
 'public' => true,
 'has_archive' => true,
 'publicly_queryable' => true,
 'exclude_from_search' => false,
 'show_ui' => true,
 'show_in_menu' => true,
 'query_var' => true,
 'rewrite' => array('slug' => 'book'),
 'supports' => array('title','editor', 'custom-fields','thumbnail')
 )
 );
}

Ejemplo código 2:

En este ejemplo de código, establecemos una cadena específica para el parámetro 'has_archive' => 'my-books'. Ahora los enlaces del archivo se encuentran de la siguiente manera:

  • Inglés (idioma predeterminado): http://mydomain.tld/my-books/
  • Español (idioma secundario): http://mydomain.tld/es/mis-libros/
add_action( 'init', 'create_post_type' );
function create_post_type() {
 register_post_type( 'book',
 array(
 'labels' => array(
 'name' => __( 'Books', 'textdomain' ),
 'singular_name' => __( 'Book', 'textdomain' )
 ),
 'public' => true,
 'has_archive' => 'my-books', // No utilizar las funciones de obtener texto para este parámetro
 'publicly_queryable' => true,
 'exclude_from_search' => false,
 'show_ui' => true,
 'show_in_menu' => true,
 'query_var' => true,
 'rewrite' => array('slug' => 'book'),
 'supports' => array('title','editor', 'custom-fields','thumbnail')
 )
 );
}