Введение в одновременный перевод страниц с WPML
WPML — один из самых популярных плагинов для мультиязычности в WordPress. Обычно перевод страниц осуществляется по одной, но в некоторых случаях необходимо массово или одновременного переводить сразу несколько страниц, чтобы ускорить процесс локализации сайта. В этой статье я расскажу, как эффективно использовать WPML для одновременного перевода страниц, оптимизируя рабочий процесс.
Расширенные возможности WPML позволяют не просто создавать перевод каждой страницы вручную, но и использовать программные методы для массового создания черновиков перевода, что хорошо подходит для больших сайтов.
Настройка WPML для работы с одновременным переводом
Прежде всего, убедитесь, что у вас установлен и активирован плагин WPML (Multilingual CMS). Для работы с несколькими языками и одновременным управлением переводами понадобится лицензия на Multilingual CMS.
Перейдите в WPML → Языки и добавьте нужные языки для вашего сайта.
Затем настройте автоматическое создание переводов черновиков, чтобы можно было создавать переводы массово:
- В разделе
Переводывключите опцию «Автоматически создавать переводы как черновики». - Это позволит быстро создавать заготовки переводов, которые потом можно отредактировать.
Подключение автоматического создания переводов через код
Если вы хотите программно создавать переводы страниц, можно использовать WPML API. Например, следующий код создаст перевод заданной страницы автоматически:
function wptranslate_create_translation($original_post_id, $target_lang) {
if (!function_exists('icl_object_id')) {
return false; // WPML не активен
}
$translation_id = apply_filters('wpml_get_content_translations', null, $original_post_id, 'post_page');
// Проверяем, существует ли уже перевод
$existing_translation = apply_filters('wpml_get_element_translations', null);
// Клонируем оригинальный пост
$original_post = get_post($original_post_id);
if (!$original_post) {
return false;
}
$translated_post = array(
'post_title' => $original_post->post_title . ' (перевод)',
'post_content' => $original_post->post_content,
'post_status' => 'draft',
'post_type' => $original_post->post_type
);
$new_post_id = wp_insert_post($translated_post);
// Связываем перевод с оригиналом
do_action('wpml_set_element_language_details', array(
'element_id' => $new_post_id,
'element_type' => 'post_' . $original_post->post_type,
'trid' => wpml_get_content_trid('post_' . $original_post->post_type, $original_post_id),
'language_code' => $target_lang,
'source_language_code' => wpml_get_language_information(null, $original_post_id)['language_code'],
));
return $new_post_id;
}Этот пример поможет автоматизировать создание черновиков перевода для страниц или других типов записей.
Массовое создание переводов через WP-CLI
Для тех, кто предпочитает командную строку, WPML поддерживает работу через WP-CLI. Можно написать скрипт, который переберет несколько страниц и создаст для них переводы.
Пример команды для получения списка страниц и программного вызова функции создания перевода:
wp post list --post_type=page --field=ID | xargs -I % wp eval "wptranslate_create_translation(%, 'fr');"Это создаст черновики перевода всех страниц на французский язык.
Практические советы по работе с WPML при одновременном переводе
- Перед массовым созданием переводов сделайте резервную копию базы — на всякий случай.
- Используйте черновики переводов, чтобы не публиковать незавершенный контент.
- Для автоматического перевода можно подключить сервисы, например Google Translate, через WPML Translation Management.
- Оптимизируйте работу с переводчиками, используя WPML Translation Management и возможность назначать задачи.
Обработка ошибок и типичные проблемы
При работе с массовым созданием переводов могут возникнуть следующие проблемы:
- Переводы не создаются: Проверьте, активен ли WPML и правильно ли подключены языки.
- Копирование метаданных и таксономий: Стандартный код клонирует только контент и заголовок, чтобы копировать метаданные, используйте фильтры WPML или допишите обработку в функции.
- Проблемы с правами доступа: Убедитесь, что пользователь, от имени которого выполняется код, имеет права на создание и редактирование страниц.
Пример расширения функции для копирования метаданных
function wptranslate_copy_post_meta($source_post_id, $target_post_id) {
$meta = get_post_meta($source_post_id);
foreach ($meta as $key => $values) {
foreach ($values as $value) {
add_post_meta($target_post_id, $key, maybe_unserialize($value));
}
}
}Вызывайте эту функцию сразу после создания перевода, чтобы сохранить все дополнительные данные.
Заключение
Использование WPML для одновременного перевода страниц — мощный инструмент для разработчиков и контент-менеджеров. Благодаря API плагина и интеграции с WP-CLI можно значительно ускорить процесс локализации сайта, уменьшить ручную работу и улучшить организацию работы с переводами.
Если хотите глубже изучить возможности WPML и оптимизировать процесс перевода, рекомендуем ознакомиться с документацией WPML и использовать сочетания с другими плагинами, например, Clearfy Pro для улучшения производительности сайта.