Para construir tipos personalizados en WordPress multilingüe, los tipos deben ser declarados de la forma recomendada por el procedimiento de WordPress:

  1. Asegúrese que estén registrados en la llave ‘init‘.
  2. No utilice nunca la llamada GetText para los tipos de entrada personalizados.
  3. Utilice siempre las constantes TRUE y FALSE. Las opciones 0 y 1 pueden no funcionar.
  4. Consulte la documentación completa de WordPress Codex en http://codex.wordpress.org/Function_Reference/register_post_type

He aquí un ejemplo operativo que utilizamos en nuestro sitio web.

<?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' ),

                ...

Luego, puede definir si estos tipos personalizados son traducibles o no.

Si está utilizando el módulo de administración de traducciones, vaya a WPML->Administración de traducciones y pulse la pestaña Configuración del contenido multilingüe. De otra forma, si no cuenta con el módulo de administración de traducciones, podrá encontrar esas opciones en WPML->Opciones de traducción.

Configuración del contenido multilingüe a final de Editar pantallas

Cuando los tipos personalizados son traducibles, disponen de atributos de idioma. Cada entrada se mostrará para un solo idioma específico y podrá ser traducida a otros idiomas.

WPML filtra las entradas por idioma cuando se utiliza la API de WordPress para cargarlas.

Cuando no son traducibles, WPML no filtra los tipos personalizados y las entradas se muestran en todos los idiomas. Esto es particularmente útil si la información no es única por idioma.