WPML

WPML Multilingual & Multicurrency for WooCommerce è compatibile con l'API REST di WordPress. Usando l'API REST, ora puoi creare, leggere, aggiornare ed eliminare i contenuti tradotti di WooCommerce.


Questo documento è destinato agli sviluppatori che vogliono sfruttare queste funzionalità e offrire un'esperienza WooCommerce multilingue nei propri plugin, siti e applicazioni.

Requisiti


Per usare l'API REST con WPML Multilingual & Multicurrency for WooCommerce hai bisogno di quanto segue:
  • WordPress 4.7+
  • WooCommerce 3.9.0+
  • WPML Multilingual & Multicurrency for WooCommerce 4.11.0+
  • Libreria client PHP REST di WooCommerce
  • Permalink strutturati impostati nella pagina ImpostazioniPermalink.

Configurare la libreria client


Come accennato, hai bisogno della libreria client PHP REST di WooCommerce. Questa libreria è un wrapper PHP che permette di interagire con l'API REST di WooCommerce in modo più semplice. Puoi usare anche altre librerie client.

La configurazione della libreria all'interno della tua applicazione richiede alcuni passaggi:

    1. Scarica i file della libreria sul server del tuo sito usando il seguente comando di Composer:
composer require automattic/woocommerce
    1. Includi il file di caricamento automatico della libreria, autoload.php, all'inizio del tuo codice PHP usando la funzione require.
API REST di WCML - inclusione del file di caricamento automatico
require __DIR__ . '/vendor/autoload.php';

use Automattic\WooCommerce\Client;

$woocommerce = new Client(

   'http://example.com',

   'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',

   'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',

   [

       'wp_api' => true,

       'version' => 'wc/v3',

   ]

);
  • Genera i valori Consumer Key e Consumer Secret. Per farlo, vai su WooCommerceImpostazioni e fai clic sulla scheda API. Lì, fai clic sulla sottoscheda Chiavi/App e fai clic su Aggiungi chiave. Nel modulo che appare, inserisci la Descrizione, l'Utente e i Permessi che vuoi concedere all'utente, e fai clic su Genera chiave API.
  • Aggiungi i valori generati di Consumer Key e Consumer Secret al tuo codice PHP.
  •  'ck_61f94473aab0445da506e095e664f5d65b153f45'; 'cs_7e60f84b6c87554d249b1ad797d6201566c1009e'; 
    1. Configura le opzioni per l'uso della libreria. Puoi trovare la descrizione di tutte le opzioni sulla pagina ufficiale.

    Usare l'API REST


    Ora che hai configurato la libreria nel tuo codice PHP, puoi iniziare a sviluppare diverse azioni da far eseguire al tuo codice. Il seguente elenco presenta tutte le azioni principali che puoi eseguire usando l'API REST e WPML Multilingual & Multicurrency for WooCommerce.

    Visualizzare gli ordini


    Aggiungendo il parametro lang alla richiesta, puoi restituire i contenuti degli ordini nelle lingue specificate. L'unica condizione è che i prodotti siano tradotti nella rispettiva lingua. Un'applicazione di questo è vedere gli ordini nella lingua predefinita del sito.

    Esempio: ottieni solo gli ordini effettuati in francese.

    $orders = $woocommerce->get('orders', array( 'per_page' => 25, 'lang' => 'fr' ) );

    Documentazione correlata di WooCommerce: Elenca tutti gli ordini

    Visualizzare un singolo ordine


    Fornendo un parametro lang alla richiesta, se l'ordine è stato effettuato in una lingua diversa, tutti gli articoli, se esistono, verranno visualizzati come traduzioni nella lingua specificata.

    Esempio: vedi i contenuti dell'ordine #110 in inglese.

    $order = $woocommerce->get('orders/110', array( 'lang' => 'en' ) );

    Documentazione correlata di WooCommerce: Recupera un ordine

    Ottenere i prodotti


    Aggiungendo il parametro lang, puoi ottenere i prodotti in una lingua specificata. Per ottenere tutti i prodotti in tutte le lingue, il parametro lang deve essere impostato su all.

    Esempio: ottieni solo i prodotti in spagnolo.

    $products = $woocommerce->get('products', array( 'per_page' => 25, 'lang' => 'es' ) );

    Documentazione correlata di WooCommerce: Elenca tutti i prodotti

    Visualizzare un singolo prodotto


    I dati restituiti includeranno le informazioni sulla lingua e sulla traduzione. Inoltre, se sono impostati prezzi personalizzati nelle valute secondarie e la modalità multivaluta è sia abilitata che configurata, verranno inclusi anche quei prezzi.

    Esempio:

    $product = $woocommerce->get('products/99');

    Un risultato di questo esempio sarebbe simile al seguente:

    Visualizzare un singolo prodotto
    => stdClass Object
            (
                [title] => An English product
                [id] => 28
                [created_at] => 2015-06-08T08:56:49Z
                [updated_at] => 2015-06-08T08:56:49Z
                [type] => simple
                [status] => publish
                [downloadable] =>
                [virtual] =>
                [permalink] => http://example.com/shop/a-simple-english-product
                [sku] =>
                [price] => 100.00
                [regular_price] => 100.00
                [sale_price] =>
                [price_html] => $100.00
                …
                [variations] => Array
                    (
                    )
      
                [parent] => Array
                    (
                    )
      
                [translations] => stdClass Object
                    (
                        [bg] => 31
                        [es] => 30
                    )
      
               [lang] => en
            )

    Documentazione correlata di WooCommerce: Recupera un prodotto

    Ottenere i termini della tassonomia dei prodotti (Categorie di prodotto, Tag, Attributi, Classi di spedizione)


    Aggiungendo il parametro lang, puoi ottenere il termine della tassonomia dei prodotti in una lingua specificata. Per ottenere tutti i termini in tutte le lingue, il parametro lang deve essere impostato su all.

    Esempio: ottieni le categorie in tutte le lingue.

    $categories= $woocommerce->get('products/categories', array( 'per_page' => 10, 'lang' => 'all' ) );

    Documentazione correlata di WooCommerce: Elenca tutte le categorie di prodotto

    Rapporti di vendita


    Aggiungendo il parametro currency, puoi ottenere i rapporti in una valuta specificata.
    Rapporto di vendita
    $query = [ 'period' => 'year', 'currency' => 'EUR' ];
    $woocommerce->get( 'reports/sales', $query );

    Documentazione correlata di WooCommerce: Recupera il rapporto di vendita

    Rapporti sui più venduti


    Aggiungendo il parametro lang, puoi ottenere i rapporti in una lingua specificata.
    Più venduti
    $query = [ 'lang' => 'fr' ];
    $woocommerce->get( 'reports/top_sellers', $query );

    Documentazione correlata di WooCommerce: Recupera il rapporto sui più venduti

    Rapporti sui totali dei prodotti


    Aggiungendo il parametro lang, puoi ottenere i rapporti in una lingua specificata.
    Totali dei prodotti
    $query = [ 'lang' => 'fr' ];
    $woocommerce->get( 'reports/products/totals', $query );

    Documentazione correlata di WooCommerce: Recupera i totali dei prodotti

    Creare prodotti


    Quando si crea un prodotto sono supportati tre parametri:
    • lang – il rispettivo valore lang verrà impostato per il prodotto. Se omesso, verrà usata la lingua predefinita del sito.
    • translation_of (opzionale) – il prodotto verrà creato come traduzione di un prodotto esistente, avente l'ID fornito dal valore di translation_of. Se translation_of viene omesso, il prodotto viene creato come parte di un nuovo gruppo di traduzione (trid).
    • custom_prices – permette di impostare prezzi personalizzati nelle valute secondarie.

    Esempio:
    Creare prodotti
    $data    = [
    	'name'              => 'English Test Post',
    	'type'              => 'simple',
    	'regular_price'     => '10.00',
    	'description'       => 'This is a Simple English Test Post',
    	'short_description' => 'This is a Simple English Test Post',
    	'categories'        => [ [ 'id' => 10 ], [ 'id' => 12 ] ],
    	'images'            => [
    		[ 'src' => 'https://example.com/image-1.png', 'position' => 0 ],
    		[ 'src' => 'https://example.com/image-2.png', 'position' => 1 ]
    	],
    	'lang'              => 'en',
    	'custom_prices'     => [
    		'EUR' => [ 'regular_price' => 1999, 'sale_price' => 1500 ],
    		'USD' => [ 'regular_price' => 2100, 'sale_price' => 2099 ]
    	]
    ];
    $product = $woocommerce->post( 'products', $data );

    Per aggiungere un prodotto come traduzione di un altro articolo, devi passare il parametro translation_of. Se l'articolo che è stato creato con la chiamata precedente ha un ID pari a 23, il seguente sarebbe il codice per aggiungere una traduzione:

    Creare un prodotto come traduzione di un altro
    $data = [
    
    'name' => 'French Test Post',
    
    'type' => 'simple',
    
    'regular_price' => '10.00',
    
    'description' => 'This is a Simple French Test Post',
    
    'short_description' => 'This is a Simple French Test Post',
    
    'lang' => 'fr',
    
    'translation_of' => '23'
    
    ];
    
    $product = $woocommerce->post('products', $data);

    Nota che se le categorie sono già tradotte, non hai bisogno di specificarle esplicitamente quando aggiungi la traduzione se in WPML è impostata l'opzione Copia la tassonomia nelle traduzioni. Verranno aggiunte automaticamente.

    Documentazione correlata di WooCommerce: Crea un prodotto

    Prodotti variabili

    Creare variazioni di prodotto con attributo locale


    Quando si crea una variazione di prodotto sono supportati tre parametri:
    • lang – il rispettivo valore lang verrà impostato per la variazione di prodotto. Se omesso, verrà usata la lingua predefinita del sito.
    • translation_of (opzionale) – la variazione di prodotto verrà creata come traduzione di una variazione di prodotto esistente, avente l'ID fornito dal valore di translation_of. Se translation_of viene omesso, la variazione di prodotto viene creata come parte di un nuovo gruppo di traduzione (trid).
    • custom_prices – permette di impostare prezzi personalizzati nelle valute secondarie.

    Esempio:
    Creare una variazione
    $data = [ 'lang'          => 'en',
              'regular_price' => '10',
              'attributes'    => [ [ 'name' => $local_attribute_name, 'option' => 'red' ] ]
    ];
    $woocommerce->post( 'products/{$variable_product_id}/variations', $data );

    Per aggiungere una variazione di prodotto come traduzione di un altro articolo, devi passare il parametro translation_of. Se l'articolo che è stato creato con la chiamata precedente ha un ID pari a 25, il seguente sarebbe il codice per aggiungere una traduzione:

    Tradurre una variazione
    $data = [
    	'name'           => 'Translation of Variable Product',
    	'type'           => 'variable',
    	'description'    => 'Translate of Product Description',
    	'lang'           => 'fr',
    	'translation_of' => 25,
    	'attributes'     => [
    		[
    			'name'      => $local_attribute_name,
    			'visible'   => true,
    			'variation' => true,
    			'options'   => [
    				'$translation_of_red'
    			]
    		]
    	]
    ];
    $woocommerce->post('products', $data);

    Documentazione correlata di WooCommerce: Crea una variazione di prodotto

    Creare variazioni di prodotto con attributo globale


    Per prima cosa, devi creare e tradurre i termini globali. Poi, puoi creare il prodotto variabile seguendo l'esempio qui sotto:
    Creare un prodotto variabile
    $data = [
    	'name'           => 'Test Variable Product',
    	'type'           => 'variable',
    	'description'    => 'Test Variable Product for REST',
    	'lang'           => 'en',
    	'translation_of' => null,
    	'attributes'     => [
    		[
    			'id'   =>  $global_attribute_id,
    			'visible'   => true,
    			'variation' => true,
    			'options'   => [
    				'Red'
    			]
    		]
    	]
    ];
    $woocommerce->post('products', $data);

    Poi dobbiamo creare le variazioni di prodotto. Se il prodotto originale ha un ID pari a 25, il seguente sarebbe un esempio del codice:

    Creare variazioni di prodotto
    $data = [
    	'create' => [
    		[
    			'lang'           => 'en',
    			'translation_of' => null,
    			'regular_price'  => '10',
    			'attributes'     => [
    				[
    					'id'     => $global_attribute_id,
    					'option' => 'blue-en' //we need to add here the attribute term slug
    				]
    			]
    		]
    $woocommerce->post( 'products/25/variations/batch', $data );

    Ora i prodotti variabili sono stati creati in inglese. Per tradurli, segui l'esempio qui sotto:

    Creare la traduzione di un prodotto variabile
    $data = [
    	'name'           => 'FR Test Variable Product',
    	'type'           => 'variable',
    	'description'    => 'FR Test Variable Product for REST',
    	'lang'           => 'fr',
    	'translation_of' => 25,
    	'attributes'     => [
    		[
    			'id' => $global_attribute_id,
    			'visible'   => true,
    			'variation' => true,
    			'options'   => [
    				'red-fr' //slug of the attribute term translation
    			]
    		]
    	]
    ];
    $woocommerce->post('products', $data);

    Documentazione correlata di WooCommerce: Aggiorna in blocco le variazioni di prodotto

    Creare un ordine


    L'aggiunta di un parametro lang imposterà la lingua specificata per l'ordine specificato.

    Nota che i prodotti, se aggiunti in una lingua diversa da quella fornita qui come argomento, non verranno convertiti automaticamente ma verranno invece aggiunti nella loro lingua.

    Esempio:

    Creare un ordine
    $data = [
        'payment_details' => [
            'method_id' => 'bacs',
            'method_title' => 'Direct Bank Transfer',
            'paid' => true
        ],
        'billing_address' => [
            'first_name' => 'John',
            'last_name' => 'Doe',
            'address_1' => '969 Market',
            'address_2' => '',
            'city' => 'San Francisco',
            'state' => 'CA',
            'postcode' => '94103',
            'country' => 'US',
            'email' => 'john.doe@example.com',
            'phone' => '(555) 555-5555'
        ],
        'shipping_address' => [
            'first_name' => 'John',
            'last_name' => 'Doe',
            'address_1' => '969 Market',
            'address_2' => '',
            'city' => 'San Francisco',
            'state' => 'CA',
            'postcode' => '94103',
            'country' => 'US'
        ],
        'customer_id' => 2,
        'line_items' => [
            [
                'product_id' => 58,
                'quantity' => 2
            ],
        ],
        'shipping_lines' => [
            [
                'method_id' => 'flat_rate',
                'method_title' => 'Flat Rate',
                'total' => 10
            ]
        ],
        'lang' => 'el'
        'currency' => 'usd'
    ];
    $order = $woocommerce->post('orders', $data );

    Documentazione correlata di WooCommerce: Crea un ordine

    Creare i termini della tassonomia (Categoria di prodotto, Tag, Attributo, Classe di spedizione)

    Nota che puoi usare l'API REST per tradurre i termini degli attributi (ad es. Blu), ma non i nomi degli attributi (ad es. Colore). Per tradurre i nomi degli attributi, vai su WPML → Traduzione tassonomia, scegli l'attributo dal menu a discesa e aggiungi le traduzioni nella sezione Traduzioni delle etichette di tassonomia e dello slug.

    Quando si crea un termine sono supportati due parametri:
    • lang – il rispettivo valore lang verrà impostato per il termine. Se omesso, verrà usata la lingua predefinita del sito.
    • translation_of (opzionale) – il termine verrà creato come traduzione di un termine esistente, avente l'id fornito dal valore di translation_of. Se translation_of viene omesso, il termine viene creato come parte di un nuovo gruppo di traduzione (trid)

    Esempio: crea una categoria nella seconda lingua.
    Creare una categoria
    $category = [ 'name' => 'Product Category ES', 'translation_of' => $original_category_id, 'lang' => 'es' ];
    $woocommerce->post( 'products/categories', $product_category );

    Documentazione correlata di WooCommerce: Crea una categoria di prodotto

    Esempio: traduci un termine di attributo globale nella lingua secondaria

    Tradurre un termine di attributo globale
    $attribute_term = [ 'name' => 'Black ES', 'translation_of' => $original_attribute_term_id, 'lang' => 'es' ];
    $woocommerce->post( 'products/attributes/{$attribute_id}/terms', $attribute_term );

    Documentazione correlata di WooCommerce: Crea un termine di attributo

    Scritto da Amir · Ultimo aggiornamento 1 luglio 2026