Чтобы пользовательские виды объектов в WordPress стали многоязычными, их следует объявить в соответствии с рекомендуемой процедурой WordPress:

  1. Проверьте, чтобы они были зарегистрированы в перехватчике ‘init
  2. Никогда не используйте вызов GetText для пользовательского типа записей
  3. Всегда используйте константы TRUE и FALSE. 0 и 1 могут не сработать.
  4. С полной документацией можно ознакомиться в WordPress Codex – http://codex.wordpress.org/Function_Reference/register_post_type

Вот рабочий пример кода, который мы используем на своем сайте.

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

                ...

Затем можно выбрать, переводимы ли эти пользовательские виды объектов, или нет.

Если вы пользуетесь модулем Управления переводами, перейдите в WPML->Управление переводами и щелкните вкладку Настройка многоязычного контента. Если же у вас нет модуля Управления переводами, эти настройки находятся в WPML->Параметры перевода.

Настройка многоязычного контента внизу окон редактирования

Когда пользовательские виды объектов переводимы, у них есть языковые атрибуты. Каждая запись будет отображаться только на определенном языке и их можно будет переводить на другие.

WPML отфильтрует их по языкам при использовании API-вызовов WordPress для загрузки.

Если же они не переводимы, WPML не будет фильтровать пользовательский вид объектов и записи будут отображаться на всех языках. Этот вариант удобен, если данные на отдельных языках не уникальны.