Estendere
EstendereTradurre elementi Bricks aggiuntivi

Tradurre elementi Bricks aggiuntivi

Gato AI Translations for Polylang può tradurre pagine e modelli Bricks basati su elementi.

Il plugin include il supporto per tutti gli elementi forniti da Bricks. Per gli elementi Bricks personalizzati o di terze parti, puoi estendere il supporto alla traduzione tramite hook PHP.

Tradurre le stringhe

Per dichiarare proprietà traducibili aggiuntive su un elemento Bricks, usa il filtro gatompl:bricks_element_type_translatable_properties.

Il filtro riceve una map [elementName => properties]. La voce properties può contenere:

  • Nomi di controlli semplici — ad es. 'separatorText'
  • Percorsi con punti — ad es. 'home.text' (corrisponde a settings.home.text)
  • Campi repeater — dichiarati come sotto-array [repeaterName => [...subFields]]

Questi elementi si combinano liberamente e l'annidamento può raggiungere qualsiasi profondità.

Ad esempio, questo hook rende:

  • Il controllo semplice separatorText e il percorso home.text traducibili sull'elemento breadcrumbs
  • Il sotto-campo title del repeater traducibile all'interno del repeater items dell'elemento team-members
add_filter(
    'gatompl:bricks_element_type_translatable_properties',
    static function (array $translatableProperties): array {
        $translatableProperties['breadcrumbs'][] = 'separatorText';
        $translatableProperties['breadcrumbs'][] = 'home.text';
        $translatableProperties['team-members']['items'][] = 'title';
        return $translatableProperties;
    },
    10,
    1
);

Lo stesso filtro funziona sia per i controlli semplici sia per i campi repeater — non esiste un hook separato per i repeater.

Tradurre i riferimenti a entità

Una proprietà può memorizzare l'ID di un'entità (un articolo, un termine di tassonomia, un elemento multimediale o un menu) che deve essere rimappato all'entità corrispondente nella lingua di destinazione al momento della traduzione. Usa il filtro corrispondente:

Tipo di riferimentoFiltro
Custom post e mediagatompl:bricks_element_type_custompost_and_media_reference_properties
Termini di tassonomiagatompl:bricks_element_type_taxonomy_term_reference_properties
Menu per IDgatompl:bricks_element_type_menu_reference_by_id_properties
Menu per sluggatompl:bricks_element_type_menu_reference_by_slug_properties

La forma è la stessa del filtro delle proprietà traducibili — nomi semplici, percorsi con punti o sotto-array per i repeater.

// Custom post / media reference
add_filter(
    'gatompl:bricks_element_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:bricks_element_type_taxonomy_term_reference_properties',
    static function (array $properties): array {
        $properties['related-category'][] = 'category_id';
        return $properties;
    }
);
 
// Menu reference by ID
add_filter(
    'gatompl:bricks_element_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:bricks_element_type_menu_reference_by_slug_properties',
    static function (array $properties): array {
        $properties['menu-picker'][] = 'menu_slug';
        return $properties;
    }
);

Scoprire i nomi degli elementi e delle proprietà

Esegui la query GraphQL Translate custom posts e ispeziona il campo bricksData nella risposta. Ogni elemento espone il suo name e il suo albero di settings — è lì che troverai i nomi delle proprietà (inclusi i percorsi annidati con punti e i campi repeater) che devi passare agli hook qui sopra.

Ispezione di bricksData nella risposta GraphQL di Translate custom posts
Ispezione di bricksData nella risposta GraphQL di Translate custom posts

Consulta la guida Recuperare i dati del page builder da tradurre per sapere come eseguire questa query.

Dove trovare esempi

Le integrazioni del plugin stesso sono un riferimento utile. Esplora questo file all'interno del plugin che hai installato:

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