WPML vi consente di utilizzare URL univoci per il contenuto personalizzato in lingue diverse. Ciò include la traduzione del campo dati dinamico del post, oltre al nome del tipo di post personalizzato.

Gli URL dei tipi di post personalizzati comprendono il nome del tipo di post e il nome della pagina. Solitamente i tipi di post personalizzati nelle diverse lingue hanno il seguente aspetto:

  • /houses/my-green-house/
  • /casas/mi-casa-verde/

La prima parte dell’URL, in grassetto, è il tipo di post. Il secondo tipo è il nome della pagina.

Per tradurre i nomi delle pagine cliccate sul pulsante Modifica vicino al campo del permalink nell’editor dei post. Poiché WPML utilizza un post diverso per ciascuna lingua, potete impostare singolarmente i loro nomi.

Modificare i permalink delle pagine
Modificare i permalink delle pagine

Tradurre i nomi dei tipi di post personalizzati

Per consentire a WPML di tradurre i nomi dei tipi di post personalizzati dovete utilizzare il modulo String Translation.

Dichiarare i tipi di post personalizzati in PHP

Se state registrando manualmente i tipi di post personalizzati attraverso PHP, WPML catturerà queste chiamate e registrerà il campo dati dinamico per la traduzione.

Dichiarare i tipi di post personalizzati con Types

Per definire i tipi di post personalizzati senza PHP potete utilizzare il nostro plug-in Types. Types dichiarerà automaticamente i tipi di post personalizzati, in modo che possiate tradurli in WPML.

Andate su Types e modificate un tipo di post personalizzato. Se non è abilitato per la traduzione del nome, visualizzerete un link per la schermata di configurazione di WPML:

Types si collega a WPML per configurare la localizzazione dei campi dati dinamici
Types si collega a WPML per configurare la localizzazione dei campi dati dinamici

Attivare la localizzazione del nome dei tipi di post personalizzati in WPML

Andate su WPML -> pagina Settings (Impostazioni). Vedrete la nuova sezione per la localizzazione dei campi dati dinamici.

L’elenco di controllo per attivare la localizzazione del nome del tipo di post personalizzato è:

1. Rendere traducibile questo tipo di post personalizzato

Impostate il tipo di post personalizzato da tradurre
Impostate il tipo di post personalizzato da tradurre

2. Attivare la traduzione dei campi dati dinamici del sito

Attivate la traduzione dei campi dati dinamici dei post personalizzati e della base della tassonomia
Attivate la traduzione dei campi dati dinamici dei post personalizzati e della base della tassonomia

3. Selezionare di utilizzare diversi campi dati dinamici nelle diverse lingue

Cliccate sulla casella di controllo per consentire la localizzazione di ciascun nome dei tipi di post personalizzati
Cliccate sulla casella di controllo per consentire la localizzazione di ciascun nome dei tipi di post personalizzati

Ora siete pronti per tradurre i nomi dei tipi di post personalizzati. Inserite le traduzioni, cliccate su Save (Salva) e dovrebbero comparire negli URL.

Tradurre gli archivi dei tipi di post personalizzati

Quando registrate manualmente i tipi di post personalizzati, WordPress vi permette di impostare un campo dati dinamico dell’archivio distinto utilizzando:

has_archive

A partire dalla versione 3.2 WPML permette a has_archive di essere impostato a una stringa. Tuttavia, se il valore della stringa è impostato a qualcosa di diverso da rewrite['slug'], o il campo dati dinamico del nome CPT non è impostato, il campo dati dinamico dell’archivio non sarà traducibile.

Codice esemplificativo 1:

In questo esempio di codice impostiamo 'has_archive' => true. Supponendo che il campo dati dinamico book sia stato tradotto come libro in spagnolo, i link dell’archivio sono i seguenti:

  • Inglese (lingua predefinita): http://mydomain.tld/book/
  • Spagnolo (seconda lingua): http://mydomain.tld/es/libro/
add_action( 'init', 'create_post_type' );
function create_post_type() {
 register_post_type( 'book',
 array(
 'labels' => array(
 'name' => __( 'Books', 'textdomain' ),
 'singular_name' => __( 'Book', 'textdomain' )
 ),
 'public' => true,
 'has_archive' => true,
 'publicly_queryable' => true,
 'exclude_from_search' => false,
 'show_ui' => true,
 'show_in_menu' => true,
 'query_var' => true,
 'rewrite' => array('slug' => 'book'),
 'supports' => array('title','editor', 'custom-fields','thumbnail')
 )
 );
}

Codice esemplificativo 2:

In questo esempio di codice impostiamo una stringa specifica per il parametro 'has_archive' => 'my-books'. Ora i link dell’archivio sono i seguenti:

  • Inglese (lingua predefinita): http://mydomain.tld/my-books/
  • Spagnolo (seconda lingua): http://mydomain.tld/es/my-books/
add_action( 'init', 'create_post_type' );
function create_post_type() {
 register_post_type( 'book',
 array(
 'labels' => array(
 'name' => __( 'Books', 'textdomain' ),
 'singular_name' => __( 'Book', 'textdomain' )
 ),
 'public' => true,
 'has_archive' => 'my-books', // Do not use the gettext functions for this parameter
 'publicly_queryable' => true,
 'exclude_from_search' => false,
 'show_ui' => true,
 'show_in_menu' => true,
 'query_var' => true,
 'rewrite' => array('slug' => 'book'),
 'supports' => array('title','editor', 'custom-fields','thumbnail')
 )
 );
}