Перевод дополнительных виджетов Elementor
Gato AI Translations for Polylang может переводить страницы Elementor, основанные на виджетах.
Плагин поставляется с поддержкой всех виджетов Elementor и Elementor PRO. Для пользовательских или сторонних виджетов вы можете расширить поддержку перевода с помощью PHP-хуков.
Перевод строк
Чтобы объявить дополнительные переводимые свойства для виджета Elementor, используйте фильтр gatompl:elementor_widget_type_translatable_properties.
Фильтр получает карту [widgetName => properties]. Запись properties может содержать:
- Простые имена элементов управления — например,
'author_name' - Точечные пути — например,
'author_avatar.alt'(соответствуетsettings.author_avatar.alt) - Поля репитера — объявляются как подмассив
[repeaterName => [...subFields]]
Они свободно сочетаются, а вложенность может быть любой глубины.
Например, этот хук делает следующее:
- Простой элемент управления
author_nameи точечный путьauthor_avatar.altстановятся переводимыми в виджетеblockquote - Подполе
nameрепитера становится переводимым внутри репитераslidesвиджетаreviews
add_filter(
'gatompl:elementor_widget_type_translatable_properties',
static function (array $translatableProperties): array {
$translatableProperties['blockquote'][] = 'author_name';
$translatableProperties['blockquote'][] = 'author_avatar.alt';
$translatableProperties['reviews']['slides'][] = 'name';
return $translatableProperties;
}
);Один и тот же фильтр работает как для простых элементов управления, так и для полей репитера — отдельного хука для репитеров не существует.
Перевод ссылок на сущности
Свойство может хранить ID сущности (запись, термин таксономии, медиафайл или меню), который необходимо переназначить на соответствующую сущность целевого языка во время перевода. Используйте соответствующий фильтр:
| Тип ссылки | Фильтр |
|---|---|
| Custom posts и медиафайлы | gatompl:elementor_widget_type_custompost_and_media_reference_properties |
| Термины таксономии | gatompl:elementor_widget_type_taxonomy_term_reference_properties |
| Меню по ID | gatompl:elementor_widget_type_menu_reference_by_id_properties |
| Меню по slug | gatompl:elementor_widget_type_menu_reference_by_slug_properties |
Структура та же, что и у фильтра переводимых свойств — простые имена, точечные пути или подмассивы для репитеров.
// Custom post / media reference
add_filter(
'gatompl:elementor_widget_type_custompost_and_media_reference_properties',
static function (array $properties): array {
$properties['featured-post'][] = 'post_id';
$properties['gallery']['items'][] = 'image_id';
return $properties;
}
);
// Taxonomy term reference
add_filter(
'gatompl:elementor_widget_type_taxonomy_term_reference_properties',
static function (array $properties): array {
$properties['related-category'][] = 'category_id';
return $properties;
}
);
// Menu reference by ID
add_filter(
'gatompl:elementor_widget_type_menu_reference_by_id_properties',
static function (array $properties): array {
$properties['menu-picker'][] = 'menu_id';
return $properties;
}
);
// Menu reference by slug
add_filter(
'gatompl:elementor_widget_type_menu_reference_by_slug_properties',
static function (array $properties): array {
$properties['menu-picker'][] = 'menu_slug';
return $properties;
}
);Обнаружение имён виджетов и свойств
Запустите GraphQL-запрос Translate custom posts и проверьте поле elementorData в ответе. Каждый виджет отображает свой widgetType и дерево settings — именно там вы найдёте имена свойств (включая вложенные точечные пути и поля репитера), которые нужно передать в хуки выше.

Смотрите руководство Получение данных конструктора страниц для перевода, чтобы узнать, как запустить этот запрос.
Где найти примеры
Собственные интеграции плагина являются полезным справочником. Изучите этот файл внутри установленного плагина:
wp-content/plugins/gato-ai-translations-for-polylang/src/ConditionalOnContext/LicenseIsActive/ConditionalOnModule/Elementor/Constants/WidgetTypes.php