Uso de Clerk.io con WPML en WooCommerce

Clerk.io puede integrarse en varios idiomas que compartan el mismo backend de WooCommerce

IMPORTANTE - Es crucial tener en cuenta que completar una integración WPML requiere conocimientos técnicos, le sugerimos que busque ayuda de su propio desarrollador. Tenga en cuenta que nuestros desarrolladores internos en Clerk.io no pueden realizar esta tarea por usted.

Cuando uses WPML en WooCommerce, deberías poder diferenciar tus idiomas por URL, así:

Si tienes URLs únicas como estas, puedes extender el plugin WooCommerce para que soporte WPML.

1. Crear tiendas

La forma más sencilla de implementar Clerk.io en múltiples dominios en configuraciones estándar es creando una Tienda separada para cada dominio en mi.clerk.io.

De esta forma, puedes separar productos, ventas, divisas, etc. para hacer un seguimiento de cada dominio.

1. Empieza creando tu Tienda principal y sigue la Guía de configuración para conectar tu Tienda a Clerk.io, y elige las Recomendaciones y/o Resultados de búsqueda que quieres mostrar en tu tienda online.

2. Cuando haya terminado con la configuración inicial, vuelva a la página de inicio de my.clerk.io (haciendo clic en el logotipo Clerk.io en la esquina superior izquierda del menú lateralu) y, a continuación, haga clic en "+ Añadir nueva tienda “ la última opción de la lista desplegable (generalmente debajo de usted la(s) tienda(s) existente(s) y el nombre de su empresa).:

3. En la página Añadir nueva tienda, haz clic en Avanzado para ver todos los ajustes.

4. Rellene los datos de su tienda virtual y elija su tienda principal en el menú desplegable Copiar contenido de tienda existente y, a continuación, haga clic en Añadir tienda.

Esto transferirá el Contenido y los Diseños de su tienda principal.

Recuerde traducir Titulares, en Contenido-> Editar -> Seleccionar Diseño al idioma correcto también.

2. Ampliar el plugin

En lugar de usar la página del plugin en WooCommerce para añadir las claves públicas y privadas, necesitarás manualmente cada par en los archivos del plugin, y usarlos para cada idioma respectivamente.

A continuación se describen los 3 archivos que debe cambiar.

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

Este archivo es el responsable de autorizar a cada tienda a recibir los datos de productos, categorías y pedidos de su dominio.

El siguiente código se puede utilizar para comprobar los idiomas y autorizarlos en función de las tiendas que haya creado en my.clerk.io.

Asegúrate de que utilizas los códigos de idioma correctos. El siguiente ejemplo utiliza inglés(en), alemán(de), italiano(it) y francés(fr).

Además, sustituya INSERT_PUBLIC_KEY e INSERT_PRIVATE_KEY por las claves pública y privada correctas de su tienda:

$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;
            }

Inserte el código en la función private function validateRequest($request), y asegúrese de reemplazar la parte inferior, por lo que sólo el código anterior tiene return true.

Debería quedar así:

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

Este archivo es responsable de obtener los resultados de idioma correctos en función de la clave de la API pública de sus tiendas en my.clerk.io.

Inserte el siguiente código cerca del script de seguimiento, justo antes de la etiqueta de cierre ?> y, de nuevo, asegúrese de que está utilizando los códigos de idioma correctos y sustituya INSERT_PUBLIC_KEY por la clave pública correcta de su tienda:

$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";
            }

Luego, dentro de Clerk(‘config’, inserta el siguiente código como clave:

<?php echo $plugin_public_key ?>

Por último, elimina el idioma establecido en Clerk.js.

Es este código que debe ser eliminado:

language: '<?php echo $Lang; ?>'

Comprueba esta captura de pantalla para asegurarte de que tu código es correcto:

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

Este archivo es responsable de las actualizaciones en tiempo real de cada una de las Tiendas.

Comienza añadiendo las siguientes dos variables protegidas, debajo de $logger:

protected $plugin_public_key;
protected $plugin_private_key;

A continuación, dentro de la función pública __construct() inserte el siguiente código, utilizando sus códigos de idioma y claves de API Públicas/Privadas:

 $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";
        }

Por último, utilice el siguiente código para obtener la clave y private_key dentro de cada una de las funciones removeProduct, addProduct y getContent.

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

Comprueba las capturas de pantalla siguientes para asegurarte de que tu código es correcto:

3. Sincronice sus dominios

Una vez que haya extendido el plugin, ahora puede sincronizar cada una de sus Tiendas con su dominio de idioma.

Como ya has instalado la extensión puedes saltarte el primer paso y empezar directamente a configurarlo y sincronizar datos.

8. Cuando la Sincronización haya terminado, su dominio estará listo y utilizando la misma configuración que su Tienda principal.