O WPML lhe permite usar URLs exclusivos para cada conteúdo personalizado em diferentes idiomas. Isso inclui a tradução do slug do post, bem como o nome do tipo de post personalizado.

Os URLs para tipos de post personalizados incluem o nome do tipo de post e o nome da página. Normalmente, tipos de posts personalizados em diferentes idiomas serão da seguinte forma:

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

A primeira parte do URL, em negrito, é o tipo de post. A segunda parte é o nome da página.

Para traduzir o nome das páginas, clique no botão Editar ao lado do campo permalink no editor de posts. Como o WPML usa posts diferentes para cada idioma, você pode definir seus nomes individualmente.

Editando permalinks da página
Editando permalinks da página

Tradução de nomes de tipos de post personalizados

Para permitir que o WPML traduza o nome dos tipos de post personalizados, você precisa usar o módulo String Translation.

Declaração de tipos de post personalizados em PHP

Se você estiver registrando tipos de post personalizados manualmente, com PHP, o WPML obterá essas chamadas e registrará o slug para tradução.

Declaração de tipos de post personalizados com o Types

Para definir tipos de post personalizados sem PHP, é possível utilizar nosso plugin Types. O Types declarará automaticamente os tipos de post personalizados para que você possa traduzi-los no WPML.

Use o Types para editar um tipo de post personalizado. Se não estiver habilitado para tradução de nomes, você verá um link para a tela de configuração do WPML:

Link no Types para configurar a localização de slug no WPML
Link no Types para configurar a localização de slug no WPML

Habilitação da localização de nome de tipo de post personalizado no WPML

Em seguida, acesse a página WPML -> Configurações. Lá aparecerá uma nova seção para a localização de slugs.

Os passos para ativar a localização do nome de tipos de post personalizados são:

1. Habilitar a tradução do tipo de post personalizado

Definir o tipo de post personalizado como Traduzir
Definir o tipo de post personalizado como Traduzir

2. Habilitar tradução de slugs para o site

Habilitação da tradução de slugs de base de taxonomia e post personalizado
Habilitação da tradução de slugs de base de taxonomia e post personalizado

3. Selecionar o uso slugs diferentes para cada idioma

Clique na caixa de seleção para permitir a localização do nome de cada tipo de post personalizado
Clique na caixa de seleção para permitir a localização do nome de cada tipo de post personalizado

Agora está tudo pronto para você traduzir os nomes dos tipos de post personalizados. Digite as traduções deles, clique em Salvar e eles aparecerão então nos URLs.

Tradução de arquivos de tipos de post personalizados

Quando você registra manualmente tipos de post personalizados, o WordPress lhe permite definir um slug de arquivo diferente usando:

has_archive

Desde a versão 3.2, o WPML permite que has_archive seja definido para uma string. Mas se o valor da string for definido para algo diferente de rewrite['slug'], ou se o slug do nome do tipo de post personalizado não estiver definido, o slug do arquivo não será traduzível.

Código de exemplo 1:

Nesse exemplo de código, definimos 'has_archive' => true. Supondo que o slug book em inglês foi traduzido como libro em espanhol, os links de arquivo ficam assim:

  • Inglês (idioma padrão): http://meudominio.tld/book/
  • Espanhol (segundo idioma): http://meudominio.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')
 )
 );
}

Código de exemplo 2:

Nesse exemplo de código, definimos uma string específica para o parâmetro 'has_archive' => 'my-books'. Agora os links de arquivos ficam assim:

  • Inglês (idioma padrão): http://meudominio.tld/my-books/
  • Espanhol (segundo idioma): http://meudominio.tld/es/my-books/
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', // Do not use the gettext functions for this parameter
 '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')
 )
 );
}