Estender
EstenderTraduzindo widgets Elementor adicionais

Traduzindo widgets Elementor adicionais

Gato AI Translations for Polylang pode traduzir páginas Elementor baseadas em widgets.

O plugin inclui suporte para todos os widgets do Elementor e Elementor PRO. Para widgets personalizados ou de terceiros, você pode estender o suporte à tradução via hooks PHP.

Traduzindo strings

Para declarar propriedades traduzíveis adicionais em um widget Elementor, use o filtro gatompl:elementor_widget_type_translatable_properties.

O filtro recebe um mapa [widgetName => properties]. A entrada properties pode conter:

  • Nomes de controles simples — ex.: 'author_name'
  • Caminhos com ponto — ex.: 'author_avatar.alt' (corresponde a settings.author_avatar.alt)
  • Campos repeater — declarados como um sub-array [repeaterName => [...subFields]]

Esses elementos se combinam livremente, e o aninhamento pode ir a qualquer profundidade.

Por exemplo, este hook torna:

  • O controle simples author_name e o caminho com ponto author_avatar.alt traduzíveis no widget blockquote
  • O sub-campo name do repeater traduzível dentro do repeater slides do widget 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;
    }
);

O mesmo filtro funciona tanto para controles simples quanto para campos repeater — não existe um hook separado para repeaters.

Traduzindo referências a entidades

Uma propriedade pode armazenar o ID de uma entidade (um post, termo de taxonomia, item de mídia ou menu) que deve ser remapeado para a entidade correspondente no idioma de destino no momento da tradução. Use o filtro adequado:

Tipo de referênciaFiltro
Custom posts e mídiagatompl:elementor_widget_type_custompost_and_media_reference_properties
Termos de taxonomiagatompl:elementor_widget_type_taxonomy_term_reference_properties
Menus por IDgatompl:elementor_widget_type_menu_reference_by_id_properties
Menus por sluggatompl:elementor_widget_type_menu_reference_by_slug_properties

A estrutura é a mesma do filtro de propriedades traduzíveis — nomes simples, caminhos com ponto ou sub-arrays para repeaters.

// 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;
    }
);

Descobrindo nomes de widgets e propriedades

Execute a query GraphQL Translate custom posts e inspecione o campo elementorData na resposta. Cada widget expõe seu widgetType e sua árvore de settings — é lá que você encontrará os nomes das propriedades (incluindo caminhos aninhados com ponto e campos repeater) que precisa passar para os hooks acima.

Inspecionando elementorData na resposta GraphQL de Translate custom posts
Inspecionando elementorData na resposta GraphQL de Translate custom posts

Consulte o guia Recuperando dados do page builder para traduzir para saber como executar essa query.

Onde encontrar exemplos

As próprias integrações do plugin são uma referência útil. Explore este arquivo dentro do plugin que você instalou:

  • wp-content/plugins/gato-ai-translations-for-polylang/src/ConditionalOnContext/LicenseIsActive/ConditionalOnModule/Elementor/Constants/WidgetTypes.php