WPML

Impara a specificare quali blocchi Gutenberg personalizzati che hai sviluppato devono essere traducibili. Puoi farlo configurando il file wpml-config.xml con l’aiuto del plugin di test Multilingual Tools.

Questa guida è per gli sviluppatori che creano i propri blocchi personalizzati per Gutenberg. Se non sei un autore di plugin, scopri come tradurre i contenuti creati con l’editor Gutenberg.

Primi passi

Per iniziare, installa e attiva:

  1. Plugin core di WPML
  2. WPML Traduzione stringhe
  3. Multilingual Tools

Il plugin Multilingual Tools non dovrebbe essere usato su siti live o di produzione. Usalo solo per i test.

Generare e testare il codice XML per registrare i blocchi Gutenberg per la traduzione

1. Crea un nuovo articolo o una nuova pagina e aggiungi i blocchi Gutenberg che vuoi registrare. Assicurati di aggiungere un contenuto di test in ogni campo che vuoi rendere traducibile, e poi pubblica.

Scorri in basso fino alla sezione WPML: Gutenberg Blocks e copia il codice XML generato.

Copiare il codice XML pre-generato per la revisione
Copiare il codice XML pre-generato per la revisione

Importante: il codice XML generato automaticamente non dovrebbe essere usato così com’è. Devi testarlo e modificarlo prima di renderlo disponibile ai tuoi utenti. Vedi il passaggio successivo.

2. Vai su WPML → Impostazioni e incolla l’XML generato nella scheda Configurazione XML personalizzata.

Assicurati di rivedere attentamente il codice generato automaticamente. Potresti dover rimuovere alcuni campi che non devono essere tradotti, come i campi di configurazione con valori specifici.

Salva quando sei pronto.

3. Torna alla pagina che hai pubblicato e apporta piccole modifiche, come cambiare il testo di un pulsante o un’intestazione.

Fai clic sull’icona più nella sezione Lingua per aprire l’Editor di traduzione avanzato. I campi dei blocchi Gutenberg appaiono nell’editor e sono disponibili per la traduzione.

Controllo dei blocchi Gutenberg traducibili nell’Editor di traduzione avanzato di WPML
Controllo dei blocchi Gutenberg traducibili nell’Editor di traduzione avanzato di WPML

Una volta registrati i blocchi Gutenberg che vuoi rendere traducibili, puoi creare il tuo file di configurazione della lingua. Se ne hai già uno, modificalo per aggiungere il tuo codice XML definitivo.

Esempi di registrazione di blocchi Gutenberg come traducibili

Tradurre le immagini

Supponiamo di avere un’immagine che viene mostrata usando il seguente codice:

Esempio di immagine che deve essere tradotta
<!-- wp:image {"id":3} -->
<figure class="wp-block-image"><img src="http://example.com/wp-content/uploads/2018/07/figure-2.png" alt="Image alt text" class="wp-image-3"/><figcaption>Image Caption</figcaption></figure>
<!-- /wp:image -->

Vuoi tradurre i valori degli attributi figcaption e alt di questa immagine.

Per farlo, devi inserire il seguente codice nel file wpml-config.xml:

Esempio di impostazioni per la traduzione del blocco Gutenberg
<wpml-config>
  <gutenberg-blocks>
    <gutenberg-block type="core/image" translate="1">
        <xpath>//figure/figcaption</xpath>
        <xpath>//figure/img/@alt</xpath>
    </gutenberg-block>
  </gutenberg-blocks>
</wpml-config>

Tieni presente che il type è core/image e non wp:image, poiché questo è il valore restituito dall’API del blocco.

Puoi specificare quali campi del blocco Gutenberg sono link. WPML sostituirà quindi i link con le loro traduzioni, se disponibili.

Traduzione dei link nei blocchi Gutenberg
<wpml-config>
  <gutenberg-blocks>
    <gutenberg-block type="core/some-block" translate="1">
        <xpath type="link">//a/@href</xpath>
    </gutenberg-block>
  </gutenberg-blocks>
</wpml-config>

Traduzione degli attributi del blocco

Ecco un esempio di formato per la definizione di un blocco dell’editor:

Formato per la definizione di un blocco dell’editor
<wpml-config>
  <gutenberg-blocks>
    <gutenberg-block type="my-plugin/my-block" translate="1">
        <xpath label="My Block">//p</xpath>
        <key name="title" />
        <key name="foo">
            <key name="bar1" />
            <key name="bar2" />
        </key>
        <key name="/^[^_]\S+$/" search-method="regex" />
        <key name="something" search-method="wildcards" />
    </gutenberg-block>
  </gutenberg-blocks>
</wpml-config>

Puoi usare l’elemento key nello stesso modo in cui viene usato con la configurazione Testi admin / wp_options. Questo significa anche che puoi avere elementi key all’interno di elementi key padre.

Puoi usare l’attributo label per aggiungere etichette personalizzate opzionali che vengono visualizzate nell’Editor di traduzione avanzato accanto agli elementi del blocco. Quando l’attributo label fa parte del tag gutenberg-block, verrà usato come etichetta di ripiego per gli elementi del blocco che non hanno un’etichetta specifica definita.

Esempio di un’etichetta di ripiego
<wpml-config>
    <gutenberg-blocks>
        <gutenberg-block type="my-plugin/mybutton" translate="1" label="My fallback block label">
            <xpath>//span</xpath>
            <xpath>//a@href</xpath>
        </gutenberg-block>
    </gutenberg-blocks>
</wpml-config>

L’attributo search-method può avere uno di questi due valori:

  • wildcards (predefinito)
  • regex.

Puoi usare i caratteri jolly (wildcard) nello stesso modo dei testi admin. Questo significa che puoi usare un asterisco (*) nell’attributo name. Ecco un esempio di un blocco:

Esempio di un blocco
<!-- wp:my-plugin/my-block
    {
        "myp": {
            "mypTitle":"The title",
            "mypContent":"The Content",
            "_mypSystem:"Meta attribute to not translate"
        }
    }
/-->

Puoi impostare la definizione del blocco usando un carattere jolly:

Definizione del blocco usando un carattere jolly
<wpml-config>
  <gutenberg-blocks>
    <gutenberg-block type="my-plugin/my-block" translate="1">
      <key name="myp">
          <key name="myp*" />
      </key>
    </gutenberg-block>
  </gutenberg-blocks>
</wpml-config>

Questo ti permetterà di tradurre “The title” e “The content”, poiché sono gli unici attributi che iniziano con myp.

La regex ti permette di avere un’espressione regolare nell’attributo name. Questo può essere estremamente utile per configurazioni complesse. Ecco un esempio di un blocco:

Configurazione complessa – esempio
<!-- wp:my-plugin/my-block
    {
        "data": {
            "title":"The title",
            "_title":"e980759463943209f6f1ae09a239e353",
            "content":"The Content",
            "_content":"1502a7b825dfe7b789c63830609f1701"
        }
    }
/-->

Puoi impostare la definizione del blocco con un’espressione regolare:

Definizione del blocco con un’espressione regolare
<wpml-config>
  <gutenberg-blocks>
    <gutenberg-block type="my-plugin/my-block" translate="1">
        <key name="data">
            <key name="/^[^_]\S+$/" search-method="regex" />
        </key>
    </gutenberg-block>
  </gutenberg-blocks>
</wpml-config>

Questo ti permetterà di tradurre “The title” e “The content”, poiché sono gli unici attributi che non iniziano con un trattino basso (_).

Alcuni plugin per i blocchi salvano i dati in una stringa JSON codificata come URL all’interno dell’attributo di un blocco. L’attributo encoding ti permette di decodificare la stringa e registrare le sue sottochiavi per la traduzione.

Ad esempio, il plugin LazyBlocks memorizza il contenuto del campo ripetitore in una stringa JSON codificata:

Esempio di blocco LazyBlocks con stringa JSON codificata come URL
<!-- wp:lazyblock/testwpml {"name":"%5B%7B%22firstname%22:%22Shekhare%22,%22lastname%22:%22Bhandari%22%7D,%7B%22firstname%22:%22Compatibility%22,%22lastname%22:%22Escalation%22%7D%5D","blockId":"Z169b0O","blockUniqueClass":"lazyblock-testwpml-Z169b0O"} /-->

Puoi registrare le sottochiavi firstname e lastname usando la seguente configurazione XML:

Esempio di registrazione di stringhe JSON codificate come URL all’interno dell’attributo di un blocco
<wpml-config>
  <gutenberg-blocks>
    <gutenberg-block type="lazyblock/team" translate="1">
      <key name="name" encoding="json">
        <key name="*">
          <key name="firstname" />
          <key name="lastname" />
        </key>
      </key>
    </gutenberg-block>
  </gutenberg-blocks>
</wpml-config>

Per consentire a WPML di tradurre automaticamente gli URL, puoi dichiarare gli attributi del blocco Gutenberg come link.

Ecco un esempio di un blocco Gutenberg personalizzato con un link cliccabile:

<!-- wp:foo/link {"label":"Click here!","url":"https://example.com/some-page/"} /-->

Per rendere traducibili gli attributi label e url, aggiungi quanto segue al tuo file wpml-config.xml :

<gutenberg-block type="foo/link" translate="1">
	<key name="label" />
	<key name="url" type="link" />
</gutenberg-block>

In questa configurazione, specificando type="link" per l’attributo url consenti a WPML di tradurre automaticamente l’URL.

Namespace del blocco

Puoi avere una configurazione globale per il namespace del blocco.

Il nome del blocco non è più una parte obbligatoria della definizione.

Se la configurazione del blocco è la stessa per tutti i blocchi in un namespace, puoi scriverla così:

Blocchi in un namespace
<wpml-config>
  <gutenberg-blocks>
    <gutenberg-block type="my-plugin" translate="1">
        <key name="data">
            <key name="/^[^_]\S+$/" search-method="regex" />
        </key>
    </gutenberg-block>
  </gutenberg-blocks>
</wpml-config>

Convertire automaticamente gli ID nei blocchi

La conversione degli ID è versatile e cerca di adattarsi alla maggior parte dei formati possibili di ID (ID singolo, elenco di ID, array serializzato, array codificato in JSON).

Considera il seguente blocco:

Convertire automaticamente gli ID nei blocchi – Esempio di blocco
<!-- wp:foo/form {"ids":[27,28]} -->
<div class="wp-block-foo-form-wrap">
  <form class="foo-form" action="" method="post">
    <input type="hidden" name="foo_form_post_ids" value="27,28" />
    <input type="submit" />
  </form>
</div>
<!-- /wp:foo/form -->

Puoi dichiarare, come ID degli articoli, gli ID degli attributi del blocco e il valore dell’attributo del tag HTML foo_form_post_ids come mostrato di seguito:

ID degli attributi del blocco e valore dell’attributo del tag HTML
<gutenberg-block type="foo/form" translate="0">
  <key name="ids">
      <key name="*" type="post-ids" sub-type="post" />
  </key>
  <xpath type="post-ids" sub-type="post">//*[@name="foo_form_post_ids"]/@value</xpath>
</gutenberg-block>

Il blocco verrà convertito con la massima priorità sul filtro render_block_data come mostrato di seguito:

Blocco convertito dal filtro render_block_data
<!-- wp:foo/form {"ids":[42,43]} -->
<div class="wp-block-foo-form-wrap">
    <form class="foo-form" action="" method="post">
        <input type="hidden" name="foo_form_post_ids" value="42,43" />
        <input type="submit" />
    </form>
</div>
<!-- /wp:foo/form -→

Puoi usare i seguenti attributi di configurazione:

  • type – può essere post-ids o taxonomy-ids
  • sub-type (opzionale): può essere l’entità specifica del type se è già nota. Ad esempio, product per il tipo di post personalizzato Prodotto. Se non definito, l’entità specifica verrà ipotizzata.

Risorse aggiuntive

Per saperne di più sul file wpml-config.xml , visita la guida sui File di configurazione della lingua.

Per personalizzare altri elementi usando il file wpml-config.xml, visita le nostre guide aggiuntive:

Scritto da Amir · Ultimo aggiornamento 5 giugno 2025