扩展翻译额外的 Elementor 小组件
翻译额外的 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]]
这些可以自由混合使用,嵌套深度不限。
例如,以下钩子可实现:
- 在
blockquote小组件上,使扁平控件author_name和点路径author_avatar.alt可翻译 - 在
reviews小组件的slides重复器中,使重复器子字段name可翻译
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(文章、分类术语、媒体项或菜单),在翻译时需要重新映射到目标语言对应的实体。请使用对应的过滤器:
| 引用类型 | 过滤器 |
|---|---|
| 自定义文章和媒体 | 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 |
| 按别名的菜单 | 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;
}
);如何查找小组件名称和属性名称
运行 Translate custom posts GraphQL Query,并检查响应中的 elementorData 字段。每个小组件都会公开其 widgetType 和 settings 树——在那里您可以找到需要传递给上述钩子的属性名称(包括嵌套点路径和重复器字段)。

有关如何运行该 Query 的说明,请参阅获取页面构建器数据以进行翻译指南。
在哪里查找示例
插件自身的集成实现是很好的参考资料。请查看您安装的插件中的以下文件:
wp-content/plugins/gato-ai-translations-for-polylang/src/ConditionalOnContext/LicenseIsActive/ConditionalOnModule/Elementor/Constants/WidgetTypes.php
Prev
Next