Para tornar multilíngues os tipos personalizados no WordPress, é preciso que eles sejam declarados conforme o procedimento recomendado pelo WordPress:

  1. Certifique-se de que eles estejam registrados no gancho ‘init’
  2. Nunca use uma chamada GetText para o tipo de post personalizado
  3. Sempre use as constantes TRUE e FALSE. 0 e 1 talvez não funcionem.
  4. Consulte o WordPress Codex para a documentação completa – http://codex.wordpress.org/Function_Reference/register_post_type

Veja abaixo um exemplo em uso no nosso próprio site.

<?php

add_action('init', 'icl_theme_register_custom', 0);

function icl_theme_register_custom() {

        register_taxonomy(

        'service_type',

        array('post', 'page'),

        array(

            'hierarchical' => true,

            'label' => 'Service type',

            'query_var' => true,

            'rewrite' => true

        )

    );



        register_post_type( 'testimonial',

        array(

            'description' => __( 'Testimonials.' ),

            'labels' => array(

                'name' => __( 'Testimonials' ),

                'singular_name' => __( 'Testimonial' ),

                'add_new' => __( 'Add New' ),

                'add_new_item' => __( 'Add New Testimonial' ),

                'edit' => __( 'Edit' ),

                'edit_item' => __( 'Edit Testimonial' ),

                'new_item' => __( 'New Testimonial' ),

                'view' => __( 'View Testimonial' ),

                ...

Daí, você pode escolher se esses tipos personalizados são traduzíveis ou não.

Se você estiver usando o módulo Translation Management, acesse WPML -> Translation Management e clique na guia “Configuração de conteúdo multilíngue”. Caso contrário, sem o módulo Translation Management, essas opções podem ser encontradas em WPML -> Opções de tradução.

Configuração de conteúdo multilíngue na parte inferior das telas de edição

Quando os tipos personalizados são traduzíveis, eles têm atributos de idioma. Cada entrada aparecerá apenas para um idioma específico e você poderá traduzi-las para outros idiomas.

O WPML filtra as entradas por idioma quando as chamadas à API do WordPress são usadas para carregá-las.

Quando não são traduzíveis, o WPML não filtra o tipo personalizado e as entradas aparecem para todos os idiomas. Isso é útil caso os dados não sejam exclusivos para cada idioma.