Импорт многоязычного контента в WordPress: WooCommerce, CSV и XML
Узнайте, как массово импортировать многоязычный контент в WordPress с помощью плагина Экспорт и импорт WPML. WPML назначает правильный язык каждой строке — записям, страницам, произвольным типам записей, таксономиям, товарам WooCommerce и их вариациям — и связывает переводы между языками. Это работает с любым источником — другим сайтом WordPress, электронной таблицей или внешней системой, такой как PIM или платформа бронирования.
Введение
Зачем нужен этот плагин
Экспорт и импорт WPML работает вместе с плагином импорта для WordPress, который Вы уже используете. Плагин импорта переносит Ваши данные. Экспорт и импорт WPML добавляет информацию о языке в конце, чтобы каждая строка попала в нужный язык, а каждый перевод был связан со своим оригиналом.
Интеграции
Экспорт и импорт WPML работает со следующими инструментами экспорта и импорта:
- WP All Export Pro и WP All Import Pro — экспорт с сайта WordPress с автоматическим включением информации о языке, а также импорт записей, товаров и таксономий из CSV или XML.
- Встроенный инструмент экспорта/импорта WooCommerce (ТоварыЭкспорт и ТоварыИмпорт) — переносит товары через один CSV-файл с включением информации о языке в экспорт.
- Встроенный инструмент экспорта/импорта WordPress — переносит записи, страницы и произвольные типы записей через WXR-файлы.
- Плагин WP Import Export.
- Пользовательские конвейеры CSV или XML — любой инструмент, который может добавить столбцы языка в свои строки.
Устаревшая версия: плагин WPML All Import
WPML All Import — это устаревший плагин, предшественник Экспорт и импорт WPML. Он больше не поддерживается и не рекомендуется к использованию. Процедура на этой странице — это современный способ импорта многоязычного контента на сайт WordPress; используйте его вместо любых рабочих процессов, описанных в документации старого плагина.
Экспорт: получение файла импорта
Все, что Вы импортируете, начинается с файла. Есть два способа получить его:
- Экспортировать с сайта WordPress. Используйте поддерживаемый инструмент экспорта, и информация о языке будет добавлена автоматически.
- Подготовить самостоятельно. Ваши данные хранятся в электронной таблице или внешней системе (PIM, MLS, ERP, платформа бронирования), и Вы добавляете столбцы языка в файл вручную — см. Подготовка собственного файла в разделе «Импорт».
Настройка
При экспорте с сайта WordPress установите и активируйте на нем:
- WP All Export Pro (или другой поддерживаемый инструмент экспорта).
- Экспорт и импорт WPML — он добавляет информацию о языке в каждую экспортируемую строку.
Если Вы подготавливаете файл самостоятельно, устанавливать ничего не нужно — вся работа происходит в самом файле.
Запуск экспорта
Экспортируйте Ваш контент WordPress с помощью выбранного инструмента экспорта. При активном плагине Экспорт и импорт WPML файл экспорта уже содержит столбцы языка для каждой строки — вручную ничего добавлять не нужно. Перейдите к разделу «Импорт».
Импорт: перенос данных
Настройка
Установите и активируйте эти плагины на сайте, куда Вы импортируете данные:
- Плагин импорта: WP All Import Pro, встроенный инструмент импорта WooCommerce, встроенный импортер WordPress или WP Import Export.
- WPML и WPML Перевод строк.
- Экспорт и импорт WPML (дополнение, рассматриваемое на этой странице).
- WPML Multilingual & Multicurrency for WooCommerce, если Вы импортируете товары WooCommerce.
Настройте WPML для каждого языка, который Вы планируете импортировать. Языки перевода уже должны существовать в WPMLНастройкиЯзыки до запуска импорта.
Мастер первого импорта
При первом открытии WPMLЭкспорт и импорт короткий мастер спросит, экспортируете ли Вы контент с этого сайта или с другого сайта или системы.

При экспорте с этого сайта мастер также спрашивает, какой инструмент Вы используете — встроенные инструменты экспорта/импорта WordPress или WooCommerce, WP All Export и WP All Import, WP Import Export или другой метод.

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

Больше ничего настраивать не нужно — эта страница является всем интерфейсом плагина.
Подготовка собственного файла: электронные таблицы и внешние системы
Добавьте три столбца к каждой строке Вашего файла. С их помощью WPML объединяет переводы и помечает каждую строку правильным языком:
_wpml_import_translation_group. Уникальное значение, общее для всех языковых версий одного элемента контента. Для товаров используйте артикул. Для всего остального сгенерируйте собственный ID и повторно используйте его для исходной строки и каждого ее перевода._wpml_import_language_code. Код языка ISO для строки (enдля английского,esдля испанского,frдля французского,pt-ptдля европейского португальского и так далее)._wpml_import_source_language_code. Только для строк перевода; код языка оригинала. Оставьте его пустым для строк на исходном языке.
Используйте каждое значение группы перевода только для одного элемента контента. WPML сохраняет группу каждого связанного элемента, в том числе после импорта. Строка, которую Вы импортируете позже с тем же значением группы, присоединяется к переводам этого элемента.
Для строк записей и товаров можно добавить еще два необязательных столбца:
_wpml_import_after_process_post_status. Статус, который получает запись после нажатия Запустить импорт WPML. Используйте название статуса WordPress:publish,draft,pendingилиprivate. Пишитеpublish, а неpublished._wpml_import_tea. Установите значение1в исходной строке, чтобы отправить этот элемент на автоматический перевод. Этот столбец работает только при включенном режиме «Переводить все автоматически» в WPML — см. Автоматический перевод импортированного контента.
Поручите подготовку файла ИИ-ассистенту
Вам не обязательно добавлять эти столбцы вручную. Передайте Ваш CSV-файл или файл экспорта ИИ-ассистенту вместе с такой инструкцией: «Добавь столбцы импорта WPML _wpml_import_translation_group, _wpml_import_language_code и _wpml_import_source_language_code в этот файл. Английские строки являются оригиналами; свяжи каждый перевод с его оригиналом по артикулу». Ассистент заполнит три столбца за секунды. Проверьте несколько строк перед импортом.
Вот рабочий пример для записей блога. В файле есть столбец language и столбец original с заголовком английской записи, которую переводит строка:
title,content,language,original
Summer Sale,Our summer sale starts on June 1.,English,
Soldes d'été,Nos soldes commencent le 1er juin.,French,Summer Sale
Инструкция для этого файла:
Добавь столбцы _wpml_import_translation_group, _wpml_import_language_code и _wpml_import_source_language_code в этот CSV. Английские строки являются оригиналами. Для каждой английской строки создай короткий ID из ее заголовка и используй его в качестве группы перевода. Назначь каждому переводу группу той английской строки, которая указана в столбце оригинала. Используй коды языков en и fr. Оставь исходный язык пустым в английских строках и установи en в переводах.
Результат с сокращенным контентом:
title,content,language,original,_wpml_import_translation_group,_wpml_import_language_code,_wpml_import_source_language_code
Summer Sale,...,English,,summer-sale,en,
Soldes d'été,...,French,Summer Sale,summer-sale,fr,en
Для WP All Import Pro и аналогичных инструментов подготовьте две электронные таблицы: одну для таксономий (рубрики, метки, категории товаров), другую для записей и товаров. Встроенный инструмент импорта WooCommerce принимает одну электронную таблицу, поскольку категории товаров находятся внутри строк товаров.
Произвольные атрибуты WooCommerce для вариативных товаров
Если у Вас есть вариативные товары с произвольными атрибутами, добавьте дополнительный столбец в строки переведенных товаров: _wpml_import_wc_local_attribute_labels. Значение представляет собой JSON-объект пар slug:translation. Для французского вариативного товара с атрибутами Size (Размер) и Color (Цвет):
{"size":"Taille","color":"Couleur"}
Слаг — это название атрибута в нижнем регистре, где пробелы заменены дефисами.
Сначала импорт таксономий, затем записей
Если у Вас есть отдельный файл для таксономий, всегда импортируйте его первым. Рубрики, метки и любые другие таксономии должны существовать до того, как записи и товары смогут на них ссылаться. Затем импортируйте записи, страницы, товары и другие типы контента.
Если Вы разделили данные на один файл для каждого языка, импортируйте все языковые файлы перед запуском этапа связывания WPML.
Вы запускаете импорт WPML только один раз, после того как все данные загружены. Этап связывания обрабатывает таксономии до записей, а затем заново подключает каждую запись к элементам на ее собственном языке — таким образом, записи, которые были импортированы, пока элементы еще не были связаны, в итоге прикрепляются к элементам на правильном языке.
Сопоставление столбцов языка в плагине импорта
Каждый плагин импорта обрабатывает произвольные поля по-своему. Важнейшим шагом является сопоставление трех столбцов WPML с произвольными полями (или метаданными элемента для таксономий). В WP All Import Pro это происходит на Шаге 3 мастера импорта:
- Для записей и товаров. Откройте Custom Fields, добавьте три поля, перетащите столбцы языка в поля Value и используйте названия столбцов без скобок в полях Name.
- Для таксономий. Откройте Term Meta, добавьте три поля метаданных элемента и сопоставьте столбцы языка таким же образом.

Если столбцы не сопоставлены, WPML будет нечего читать при запуске этапа связывания.
Что Вы увидите между импортом и этапом связывания
Пока Вы не запустите Экспорт и импорт WPML, весь импортированный контент находится под Вашим языком по умолчанию, а WPML автоматически удерживает записи и товары в статусе Черновик, чтобы контент на разных языках не попал на фронтенд. Это ожидаемое промежуточное состояние, а не признак неудачного импорта. После этапа связывания контент публикуется — или переводится в статус, который Вы указали в столбце _wpml_import_after_process_post_status.

Для неподдерживаемых плагинов импорта Вам нужно будет опубликовать записи вручную после завершения этапа связывания.
Запуск импорта WPML
После завершения работы плагина импорта:
- Откройте WPMLЭкспорт и импорт в админ-панели WordPress.
- Нажмите Запустить импорт WPML.


WPML считывает столбцы языка каждой строки, назначает язык этой строке и связывает переводы с их оригиналом. В больших каталогах это может занять несколько минут. По завершении Ваш импортированный контент публикуется на правильном языке, а каждый перевод связан со своим оригиналом.
Выборочно проверьте результат в бэкенде и на фронтенде:
- Откройте список типов записей или товаров — убедитесь, что каждая строка отображается под правильным флагом языка.
- Перейдите на фронтенд и переключите языки — каждая переведенная страница должна загружать свою переведенную версию, а не возвращаться к оригиналу.

Если перевод таксономии не связался, откройте элемент в админ-панели WordPress и используйте блок «Языки» этого элемента, чтобы связать его с элементом на языке по умолчанию.
Что не охватывает импорт WPML
Импорт WPML устанавливает язык каждого элемента и связывает его переводы. Он не изменяет другой контент. Проверьте следующее после импорта:
- Родительские страницы, меню и прилепленные записи. WPML не меняет родительскую страницу переведенной страницы, не добавляет импортированные элементы в меню и не копирует настройку прилепленности между языками.
- Ссылки и ID изображений внутри контента. WPML не изменяет ссылки, ID изображений или поля изображений внутри импортированного контента. Отредактируйте их в переводе.
- Скопированные поля. Импорт WPML связывает переводы, но не копирует такие поля, как цена или запас, из оригинала в переводы. Чтобы скопировать их после импорта обновлений, откройте оригинал и сохраните его снова.
- WooCommerce Bookings. Доступные для бронирования товары импортируются без типов посетителей (ребенок, взрослый и т. д.) и ресурсов. Добавьте типы посетителей и ресурсы в переведенные товары после импорта.
Автоматизация: запуск импорта WPML без кликов
Для ночных синхронизаций, фидов поставщиков, конвейеров развертывания или любого запланированного импорта этап связывания WPML может выполняться без пользовательского интерфейса админ-панели. Есть три способа настроить это:
POST-эндпоинт (для импортов на основе Cron, таких как запланированные действия WP All Import)
Это рекомендуемый способ. Добавьте надежный секретный ключ в wp-config.php:
define( 'WPML_IMPORT_KEY', 'your-strong-secret-key-here' );
Затем добавьте вторую команду в настройки Вашего запланированного импорта. Она отправляет POST-запрос на Ваш сайт и передает ключ в теле запроса:
curl -X POST https://yoursite.com/ \
-d 'wpml_import_trigger=your-strong-secret-key-here'
Тот же вызов с wget:
wget -q -O - \
--post-data='wpml_import_trigger=your-strong-secret-key-here' \
https://yoursite.com/
Для ручного планирования в WP All Import Pro добавьте любую из команд сразу после команды импорта.
При выполнении этапа связывания Ваш сайт отвечает статусом 200 и этим сообщением:
Import process completed
Два других ответа сообщают о том, что произошло: 401 означает, что ключ не совпадает, а 204 означает, что обрабатывать больше нечего.
Старый URL-эндпоинт (удален в 5.0.0)
До версии Экспорт и импорт WPML 1.2.0 ключ передавался в URL-адресе:
https://yoursite.com/?wpml_import_trigger=your-strong-secret-key-here
Начиная с версии Экспорт и импорт WPML 5.0.0, этот URL-адрес больше не запускает импорт. Запрос, содержащий ключ в URL-адресе, получает статус 405. Переведите Ваши запланированные импорты на POST-вызов, указанный выше.
Причина кроется в ключе. URL-адрес проходит через журналы сервера, историю браузера и аналитику, и Ваш ключ путешествует вместе с ним. POST-запрос сохраняет ключ в теле запроса.
Хук действия (для импортов, запланированных через PHP)
Если Вы планируете импорт из PHP с помощью Action Scheduler или wp_schedule_single_event, запустите этап WPML одним вызовом действия:
do_action( 'wpml_import_process' );
Чтобы запустить его как одноразовую фоновую задачу сразу после действия импорта:
wp_schedule_single_event( time(), 'wpml_import_process' );
Если импорт не завершается, см. Отладка WPML.
WP-CLI
Для скриптов развертывания, сборок контейнеров или любого конвейера, где недоступен пользовательский интерфейс админ-панели, запустите этап связывания из WP-CLI:
wp wpml import process
Команда сообщает, сколько переводов было связано. Это прямая замена кнопки Запустить импорт WPML.
Автоматический перевод импортированного контента
Вы можете настроить автоматический перевод импортированного контента в WPML. Без этого Вам пришлось бы импортировать контент на одном языке, а затем — при включенном режиме Переводить все автоматически — выбирать все импортированные элементы и отправлять их на перевод самостоятельно, что отнимает много времени при больших объемах и повторных импортах. Вместо этого добавьте в файл еще один столбец:
_wpml_import_tea. Установите значение1в строках на исходном языке, которые Вы хотите перевести автоматически.
При запуске импорта WPML плагин создает задания на автоматический перевод для каждой отмеченной записи на все языки Вашего сайта, для которых еще нет перевода. Строки, для которых Вы импортировали переводы, остаются без изменений.
Для этого необходимо включить режим Переводить все автоматически в WPML — без него флаг будет проигнорирован.
Распространенные ошибки
- В файле импорта отсутствуют три столбца языка. Контент импортируется, но попадает в базу как непомеченные строки на исходном языке; кнопке Запустить импорт WPML нечего связывать. Решение: добавьте столбцы в исходные данные, выполните повторный экспорт и импорт.
- Пропущено сопоставление Custom Fields / Term Meta в WP All Import. Ситуация аналогична отсутствующим столбцам. Данные есть в файле, но плагин импорта не сохранил их в записи. Повторно запустите импорт с сопоставленными полями.
- Языки перевода не настроены на сайте импорта. Импортированные строки для ненастроенного языка попадают в язык по умолчанию. Сначала добавьте недостающие языки в WPMLНастройкиЯзыки, затем повторите запуск.
- Неподдерживаемый плагин импорта. Импортированные записи остаются в статусе «Черновик» после этапа связывания. Опубликуйте их вручную или перейдите на поддерживаемый плагин.
- Собственные скрипты импорта не передают языковые данные. Исправление требуется на уровне скрипта. Три столбца языка (и столбец атрибутов WooCommerce, если применимо) должны достигать строки.
- Контент, добавленный Вашим собственным кодом, не удерживается в статусе «Черновик». WPML удерживает контент в черновиках только для поддерживаемых плагинов импорта. Контент, который Ваш код добавляет с помощью
wp_insert_post, или импорт WooCommerce, запускаемый из PHP или WP-CLI, сохраняет статус, заданный кодом. Создавайте новый контент как черновики самостоятельно и устанавливайте_wpml_import_after_process_post_statusнаpublish. wp exportудаляет столбцы языка у элементов. WP-CLI 2.12.0 поставляется с командой экспорта 2.1.14, которая не записывает метаданные элемента. Послеwp importкаждая рубрика и метка теряет свои столбцы языка. Обновите команду экспорта до версии 2.1.15 или новее, либо экспортируйте через ИнструментыЭкспорт в админ-панели WordPress.
Если при импорте постоянно возникает одна и та же проблема, служба поддержки WPML отвечает на вопросы об импорте круглосуточно и без выходных.
Варианты использования
Перенос многоязычного контента на новый сайт
Самый распространенный сценарий: экспорт контента с одного сайта WPML и его перенос — полностью или частично — на другой.
- На исходном сайте установите Экспорт и импорт WPML вместе с Вашим инструментом экспорта и экспортируйте контент, который хотите перенести (см. Экспорт). Столбцы языка добавляются автоматически.
- На новом сайте выполните настройку импорта — установите плагины и настройте каждый язык с исходного сайта.
- Импортируйте таксономии, а затем контент с помощью Вашего инструмента импорта.
- Нажмите Запустить импорт WPML. Ваш контент появится на нужных языках, а все переводы будут связаны так же, как на исходном сайте.
Сброс WPML и повторный импорт переводов на тот же сайт
Относитесь к экспорту как к резервной копии языковых связей Вашего сайта: языка каждой строки и того, какие строки образуют одну группу перевода. Вы можете поддерживать эту копию в актуальном состоянии автоматически — например, с помощью запланированного ночного экспорта в Вашем инструменте экспорта, сохраняемого в отдельный файл. Если языковые данные WPML когда-либо придут в негодность, Вы сбрасываете WPML и повторно импортируете самый последний экспорт, сделанный, когда данные еще были в порядке, следуя шагам ниже. Единственное, чего это не может сделать: исправить экспорт, сделанный после возникновения проблемы — файл сохраняет то состояние данных, в котором они находились на момент экспорта.
- Выполните экспорт, пока языковые данные не повреждены — или используйте Ваш последний запланированный экспорт. Экспортируйте каждый нужный Вам тип контента вместе с его переводами (см. Экспорт). Три столбца языка фиксируют то, что Вам нужно будет восстановить: язык каждой строки и то, какие строки являются переводами друг друга.
- Сбросьте WPML. Следуйте инструкциям в разделе Сброс WPML. Сброс удаляет все данные WPML — языки, язык каждого элемента, связи между переводами, переводы строк и задания на перевод — и деактивирует WPML. Ваши записи, страницы, товары и таксономии остаются. Снова активируйте WPML.
- Снова настройте языки — тот же язык по умолчанию и те же дополнительные языки, которые были на сайте до сброса.
- Повторно импортируйте тот же файл, обновив существующий контент. Этот шаг отличается от переноса на новый сайт: записи уже существуют, поэтому импорт должен обновить их, а не создавать новые. Используйте WP All Import с сопоставлением записей (сопоставление по ID) или опцию обновления существующих товаров в импортере WooCommerce. Стандартный импортер WordPress не может этого сделать — он только создает новый контент, поэтому он продублирует каждую строку.
- Нажмите Запустить импорт WPML. Назначения языков и группы переводов из файла будут снова привязаны к существующему контенту.
Восстанавливаются только язык каждого элемента и связи между переводами. Переводы строк, задания на перевод и настройки WPML отсутствуют в файле экспорта. Настройте их заново после импорта.
Добавление языка позже
Вы импортировали Ваш каталог на английском и испанском языках, а теперь добавляете французский. Подготовьте файл только с французскими строками. Задайте каждой строке группу перевода ее оригинала, код языка fr и исходный язык en. Импортируйте файл и нажмите Запустить импорт WPML. WPML сохраняет группу каждого связанного элемента, поэтому каждая французская строка присоединяется к переводам своего оригинала.
Ежедневная синхронизация фида поставщика
Ваш поставщик присылает фид товаров каждую ночь. Оригинальные товары на английском языке, и в фиде есть три столбца языка. Запланируйте импорт в WP All Import Pro и добавьте POST-вызов сразу после него. Установите _wpml_import_tea на 1 в строках новых товаров. Каждую ночь новые товары получают свои языки, и WPML отправляет их на автоматический перевод на Ваши другие языки.