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.
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:
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
2. Habilitar tradução de slugs para o site
3. Selecionar o uso slugs diferentes para cada idioma
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') ) ); }