Review del plugin WooCommerce API – Product Sync with Multiple Stores
En este artículo vamos a revisar el plugin WooCommerce API – Product Sync with Multiple Stores, el cual nos permite sincronizar productos entre diferentes tiendas WooCommerce.
Antes de comenzar, tenemos que entender qué significa realmente sincronizar productos entre sitios. Se pueden considerar dos escenarios:
- Actualizar un producto con el mismo SKU en otra tienda WooCommerce automáticamente cuando este ha sido editado por un administrador o un gerente de tienda en la “Tienda principal”. En este caso, se puede decidir si se desea actualizar un producto específico o todos los datos del producto.
- Actualizar el estado de stock y la cantidad de un producto en otras tiendas WooCommerce no solo cuando ese producto ha sido actualizado por los administradores, sino también cuando el producto ha sido comprado (y su cantidad ha disminuido, obviamente).
En este tutorial, vamos a hablar un poco sobre estos escenarios y cómo utilizar el plugin de sincronización de productos de WooCommerce. También mencionaremos otra opción de código para aquellos que prefieran no utilizar plugins.
Preparar datos de autenticación de las tiendas
Para sincronizar productos con varias tiendas, debemos preparar un conjunto de datos para cada una de ellas: URL de la tienda, nombre de usuario y contraseña de aplicación. Podemos utilizar un array para esto:
$stores = array(
// tienda 1
array(
'url' => 'https://tienda1.com',
'login' => 'usuario1',
'pwd' => 'contraseña1',
),
// tienda 2
array(
'url' => 'https://tienda2.com',
'login' => 'usuario2',
'pwd' => 'contraseña2',
),
// tienda 3, etc.
);
Esta información de autenticación será utilizada en el siguiente capítulo de este tutorial.
Sincronización de productos entre tiendas cuando se actualiza en la tienda principal
En este capítulo, vamos a crear múltiples solicitudes de la API REST de WooCommerce para sincronizar (publicar o actualizar) un producto cuando este ha sido publicado o actualizado en el panel de control de WordPress.
class Misha_Sync_Woo_Products {
public function __construct() {
add_action( 'save_post_product', array( $this, 'sync' ), 99, 2 );
}
public function sync( $product_id, $post ) {
// no hacer nada si WooCommerce no está instalado
if( ! function_exists( 'wc_get_product' ) ) {
return;
}
// obtener el objeto del producto
$product = wc_get_product( $product_id );
// sincronizar solo los productos publicados
if( 'publish' !== $product->get_status() ) {
return;
}
// sincronizar los productos de WooCommerce entre las tiendas especificadas en este array
$stores = array( ... );
// preparar los datos del producto antes del bucle
$product_data = $product->get_data();
// Arreglo: "Error 400. Solicitud incorrecta. No se puede crear un producto existente."
unset( $product_data[ 'id' ] );
// Arreglo: "Error 400 Solicitud incorrecta. low_stock_amount no es de tipo integer,null."
$product_data[ 'low_stock_amount' ] = (int) $product_data[ 'low_stock_amount' ];
// Para sincronizar una imagen de producto, debemos realizar algunos pasos adicionales
if( $product_data[ 'image_id' ] ) {
$product_data[ 'images' ] = array(
array(
'src' => wp_get_attachment_url( $product_data[ 'image_id' ] )
)
);
unset( $product_data[ 'image_id' ] );
}
// vamos a recorrer las tiendas y sincronizar el producto con cada una de ellas
foreach( $stores as $store ) {
$endpoint = "{$store[ 'url' ]}/wp-json/wc/v3/products";
$method = 'POST';
// vamos a comprobar si ya existe un producto con el mismo SKU
if( $product_id_2 = $this->product_exists( $product, $store ) ) {
$endpoint = "{$endpoint}/{$product_id_2}";
$method = 'PUT';
}
// realizar la sincronización
wp_remote_request(
$endpoint,
array(
'method' => $method,
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( "{$store[ 'login' ]}:{$store[ 'pwd' ]}" )
),
'body' => $product_data
)
);
}
}
private function product_exists( $product, $store ) {
$sku = $product->get_sku();
$request = wp_remote_get(
add_query_arg( 'sku', $sku, "{$store[ 'url' ]}/wp-json/wc/v3/products" ),
array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( "{$store[ 'login' ]}:{$store[ 'pwd' ]}" )
)
)
);
if( 'OK' === wp_remote_retrieve_response_message( $request ) ) {
$products = json_decode( wp_remote_retrieve_body( $request ) );
if( $products ) {
$product = reset( $products );
return $product->id;
}
}
return false;
}
}
new Misha_Sync_Woo_Products;
Algunos detalles importantes a tener en cuenta:
- Línea 5: Tenemos la opción de utilizar el gancho save_post o save_post_{tipo_de_publicación}, recomendamos el segundo porque nos permite evitar una condición adicional.
- Línea 25: `$stores = array( … )` es donde se deben proporcionar las contraseñas de la aplicación.
- Línea 28: `$product->get_data()` es un método increíble de la clase WC_Product que permite obtener toda la información del producto y pasarla casi sin cambios en una solicitud de la API REST.
- Líneas 34-41: Si desea sincronizar una imagen de producto, debe realizar algunos pasos adicionales.
- Líneas 49-53: Probablemente no querrás que se creen duplicados de productos en otras tiendas cada vez que se presiona el botón “Actualizar”, por lo que creamos un método `product_exists()` que realiza una solicitud adicional de la API REST para comprobar si ya existe un producto con el mismo SKU. Sin embargo, también es posible hacerlo con los metadatos del producto (y de forma más rápida).
¡Déjanos tus preguntas en los comentarios si tienes alguna duda sobre el código o el plugin!
WooCommerce API Product Sync with Multiple Stores: Descárgalo Gratis
Pues sí, es posible y abstolutamente conforme a la legalidad.
De hecho, incluso está dentro de la ley vigente descargar WooCommerce API Product Sync with Multiple Stores nulleado, ya que la licencia bajo la que se distribuye es la General Public License, y esta licencia habilita al poseedor su libre modificación.
De modo que estate en calma: Si estabas en busca de comprar WooCommerce API Product Sync with Multiple Stores barato o, directamente, descargar WooCommerce API Product Sync with Multiple Stores Plugin nulled y, de esta forma, obtenerlo cien por cien gratis, ahora lo puedes hacer dentro de la legalidad.
WooCommerce API Product Sync with Multiple Stores GPL: Una opción para emprendedores en sus inicios
Cómo lo llames es irrelevante: Ofertas para WooCommerce API Product Sync with Multiple Stores Plugin, descargar WooCommerce API Product Sync with Multiple Stores Plugin GPL, descargar WooCommerce API Product Sync with Multiple Stores sin licencia o descargar WooCommerce API Product Sync with Multiple Stores nulled.
Es totalmente legítimo y una necesidad para cualquier emprendedor empezando su carrera.
Valoraciones
No hay valoraciones aún.