WPML позволяет использовать уникальные URL-адреса для пользовательского контента на разных языках, включая перевод краткого заголовка записи и имени пользовательского типа записи.

URL-адреса пользовательских типов записей включают имя типа записи и название страницы. Обычно пользовательские типы записей на разных языках будут выглядеть следующим образом:

  • /дома/мой-зеленый-дом/
  • /houses/my-green-house/

Первая полужирная часть URL-адреса — тип записи. Вторая часть — название страницы.

Чтобы перевести название страницы, нажмите кнопку Изменить возле поля с постоянной ссылкой в редакторе записей. Так как WPML использует разные записи для каждого языка, их имена можно задать отдельно.

Редактирование постоянных ссылок страниц

Дальше необходимо перевести имя типа записи. Этот процесс будет посложнее.

Перевод имен пользовательских типов записей

Чтобы WPML мог переводить имена пользовательских типов записей, необходимо использовать модуль перевода строк.

Объявление пользовательских типов записей в PHP

Если вы регистрируете пользовательские типы записей вручную – через PHP – добавьте вызовы _x() вокруг имени краткого заголовка. WPML фиксирует эти вызовы и будет знать, что вы переводите URL-адреса.

Когда краткий заголовок проходит через функцию _x() с контекстом краткого заголовка URL-адреса, WPML обнаруживает его и регистрирует в таблице перевода строк.

'slug' => _x( 'book', 'URL slug', 'your_text_domain' )

Объявление пользовательских типов записей с Types

Чтобы определить пользовательские типы записей без PHP, можно воспользоваться нашим плагином Types. Types автоматически объявит пользовательские типы записей, чтобы вы могли перевести их в WPML.

Перейдите в Types и измените пользовательский тип записи. Если он не включен для перевода имен, вы увидите ссылку на экран настройки WPML:

Ссылки Types к настройкам локализации кратких заголовков WPML

Включение локализации имен пользовательских типов записей в WPML

Затем перейдите в WPML->Управление переводами->Настройка многоязычного контента. Вы увидите новый раздел для локализации кратких заголовков.

Контрольный список для включения локализации имени пользовательского типа записи:

1. Убедитесь, что пользовательский тип записи можно перевести

Установите флажок пользовательского типа записи на Перевести

2. Включите перевод кратких заголовков на сайте

Установите флажок, чтобы разрешить локализацию имен типов записей для всего сайта

3. Выберите использование разных кратких заголовков на разных языках

Установите флажок, чтобы разрешить локализацию каждого имени пользовательских типов записей

Теперь все готово для перевода имен пользовательских типов записей. Добавьте их переводы, нажмите Сохранить, после чего они должны появиться в URL-адресах.

Перевод архивов пользовательских типов записей

Если вы регистрируете пользовательские типы записей вручную, WordPress позволяет задать определенный короткий заголовок архива с помощью:

has_archive

В настоящее время WPML не поддерживает перевод кратких заголовков архивов пользовательских типов записей, когда их значение не «TRUE». Но мы уже включили эту проблему в наш список дел для решения в ближайшее время. Вернитесь к этому разделу спустя некоторое время за новостями по поводу этой функции.

*Уточнение: WPML 3.2 позволяет задать has_archive строке, но если значение строки отличается от ключа пользовательского типа записей, архив получит зарегистрированный ключ по умолчанию.

Пример:


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' => __( 'book-archive', 'textdomain' ),

            'publicly_queryable' => true,

            'exclude_from_search' => false,

            'show_ui' => true,

            'show_in_menu' => true,

            'query_var' => true,

            'rewrite' => array('slug' => _x( 'book', 'URL slug', 'textdomain' )),

            'supports' =>array('title','editor', 'custom-fields','thumbnail')

        )

    );

}

Даже если задать has_archive для «book-archive», вместо этого WPML будет использовать «book». Вот что будет отображаться в постоянной ссылке записи.