Usare Clerk.io con WPML su WooCommerce

Clerk.io può essere integrato in diverse lingue che condividono lo stesso backend di WooCommerce

Quando usi WPML in WooCommerce, dovresti essere in grado di differenziare le tue lingue per URL, come questo:


Se avete URL unici come questo, potete estendere il plugin WooCommerce per supportare WPML.

1. Crea gli Stores


Il modo più semplice per implementare Clerk.io in più domini nelle configurazioni standard è creare un negozio separato per ogni dominio in my.clerk.io.

In questo modo, è possibile separare i prodotti, le vendite, le valute ecc. per tenere traccia di ogni dominio.

1. Inizia creando il tuo negozio principale e segui la Guida all'installazione per collegare il tuo negozio a Clerk.io, e scegli le Recommendations e/o i Search Results che vuoi visualizzare sul tuo negozio web.

2. Quando hai finito con la configurazione iniziale, torna alla pagina iniziale di my.clerk.io (cliccando il logo Clerk.io nell'angolo in alto a sinistra del menu laterale) e poi clicca"+ Add new store"  l'ultima opzione della lista a scorrimento verso il basso (generalmente sotto di te il negozio esistente (s) e il nome della tua azienda):

3. Nella pagina Add New Store, clicca su Advanced per vedere tutte le impostazioni.

4. Compila i dettagli del tuo negozio web, e scegli il tuo negozio principale dal menu a tendina Copy Content From Existing Store, poi clicca su Add Store.


Questo riporterà il Content e i Designs del tuo negozio principale.



Ricordati di tradurre anche i titoli, in Content-> Edit -> Select Design nella lingua giusta. 

2. Estendere il plugin

Invece di usare la pagina del plugin in WooCommerce per aggiungere le chiavi pubbliche e private, avrete bisogno di inserire manualmente ogni coppia nei file del plugin, e usarli rispettivamente per ogni lingua.

Di seguito sono riportate le descrizioni dei 3 file che è necessario modificare.

2.1. plugins > clerk-woocommerce-x.x.x > includes > class-clerk-rest-api.php


Questo file è responsabile dell'autorizzazione di ogni negozio a ricevere i dati dei prodotti, delle categorie e degli ordini dal vostro dominio.

Il seguente codice può essere usato per controllare le lingue e autorizzarle in base ai negozi che hai creato in my.clerk.io.

Assicurati di usare i codici di lingua corretti. L'esempio seguente utilizza l'inglese (en), il tedesco (de), l'italiano (it) e il francese (fr).

Inoltre, sostituisci INSERT_PUBLIC_KEY e INSERT_PRIVATE_KEY con le chiavi pubbliche e private corrette del tuo negozio:

$my_current_lang = apply_filters( 'wpml_current_language', "en" );
if ($my_current_lang == "en") {
$plugin_public_key = "INSERT_PUBLIC_KEY";
$plugin_private_key = "INSERT_PRIVATE_KEY";
}
if ($my_current_lang == "de") {
$plugin_public_key = "INSERT_PUBLIC_KEY";
$plugin_private_key = "INSERT_PRIVATE_KEY";
}
if ($my_current_lang == "it") {
$plugin_public_key = "INSERT_PUBLIC_KEY";
$plugin_private_key = "INSERT_PRIVATE_KEY";
}
if ($my_current_lang == "fr") {
$plugin_public_key = "INSERT_PUBLIC_KEY";
$plugin_private_key = "INSERT_PRIVATE_KEY";
}

if ($public_key === $plugin_public_key && $private_key === $plugin_private_key ) {

return true;
}

Inserire il codice nella funzione privata validateRequest($request), e assicurarsi di sostituire la parte inferiore, in modo che solo il codice precedente abbia return true.

Dovrebbe apparire così:

2.2. plugins > clerk-woocommerce-x.x.x > includes > class-clerk-visitor-tracking.php

Questo file è responsabile del recupero dei risultati in lingua corretti in base alla chiave Public API dai vostri Stores in my.clerk.io.

Inserisci il seguente codice vicino al tracking-script, appena prima del tag di chiusura ?> e ancora una volta, assicurati di utilizzare i codici di lingua corretti e sostituisci INSERT_PUBLIC_KEY con la chiave pubblica corretta dal tuo negozio:

$my_current_lang = apply_filters( 'wpml_current_language', "en" );
if ($my_current_lang == "en") {
$plugin_public_key = "INSERT_PUBLIC_KEY";
}
if ($my_current_lang == "de") {
$plugin_public_key = "INSERT_PUBLIC_KEY";
}
if ($my_current_lang == "it") {
$plugin_public_key = "INSERT_PUBLIC_KEY";
}
if ($my_current_lang == "fr") {
$plugin_public_key = "INSERT_PUBLIC_KEY";
}

Poi, all'interno di Clerk('config', inserite il seguente codice come chiave:

<?php echo $plugin_public_key ?>

Controlla questo screenshot per assicurarti che il tuo codice sia corretto:

2.3. plugins > clerk-woocommerce-x.x.x > includes > class-clerk-api.php

Questo file è responsabile degli aggiornamenti in tempo reale da ciascuno dei negozi.
Iniziate aggiungendo le seguenti due variabili protette, sotto $logger:

protected $plugin_public_key;
protected $plugin_private_key;

Poi, all'interno della funzione pubblica function __construct() inserite il seguente codice, usando i vostri codici di lingua e le chiavi API pubbliche/private:

 $my_current_lang = apply_filters( 'wpml_current_language', "en" );
if ($my_current_lang == "en") {
$this->plugin_public_key = "INSERT_PUBLIC_KEY";
$this->plugin_private_key = "INSERT_PRIVATE_KEY";
}
if ($my_current_lang == "it") {
$this->plugin_public_key = "INSERT_PUBLIC_KEY";
$this->plugin_private_key = "INSERT_PRIVATE_KEY";
}
if ($my_current_lang == "lang3") {
$this->plugin_public_key = "INSERT_PUBLIC_KEY";
$this->plugin_private_key = "INSERT_PRIVATE_KEY";
}
if ($my_current_lang == "lang4") {
$this->plugin_public_key = "INSERT_PUBLIC_KEY";
$this->plugin_private_key = "INSERT_PRIVATE_KEY";
}

Infine, usa il seguente codice per recuperare la chiave e la private_key all'interno di ciascuna delle funzioni removeProduct, addProduct e getContent

'key' => $this->plugin_public_key,
'private_key' => $this->plugin_private_key,

Controlla gli screenshot qui sotto per assicurarti che il tuo codice sia corretto:

3. Sync your domains

Una volta che hai esteso il plugin, puoi ora sincronizzare ciascuno dei tuoi negozi con il loro dominio di lingua.

Dato che hai già installato l'estensione, puoi saltare il primo passo e iniziare direttamente a configurarlo e a sincronizzare i dati.


8. Quando la sincronizzazione è terminata, il tuo dominio è pronto e utilizza la stessa configurazione del tuo negozio principale.