Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Sincronizar WooCommerce y Excel

En este artículo veremos cómo sincronizar los productos de WooCommerce desde un archivo Excel, el cual contiene datos de stock y precio por cada SKU de producto. Veremos cómo hacerlo usando código.

 

Generalidades

  • Por simplicidad, tendremos el proyecto como parte de los archivos del tema hijo
  • Ejecutaremos el proceso a través de una URL, usando la funcionalidad de plantillas de página de WordPress
  • Para la lectura del archivo Excel usaremos usa librería llamada SimpleXLSX, la cual nos facilitará obtener los datos en formato Array para manipularlos con PHP.

 

Estructura del archivo Excel

En el archivo Excel simplemente tendremos las columnas del SKU, precio y stock del producto, tal como se muestra en la siguiente imagen:

Estructura archivo a sincronizar

 

Actualización de stock y precios desde Excel

Primero necesitamos organizar el proyecto, crearemos una carpeta contenedora de todo llamada sync-woo, y allí colocaremos el archivo Excel, la librería y el archivo principal, de acuerdo a la siguiente estructura:

Archivos y carpetas, estructura
Puedes incluso crear un plugin con una estructura de carpetas similar.
Descarga los archivos de este proyecto desde este enlace.

El código del archivo principal será el siguiente:

<?php

include_once( "includes/SimpleXLSX.php" );

use Shuchkin\SimpleXLSX;

$file = get_stylesheet_directory() . "/sync-woo/data/stock-precios.xlsx";

if ( $xlsx = SimpleXLSX::parse( $file ) ) {
        foreach($xlsx->rows() as $index => $row){
                if ( $index > 0 ){
                        $id = wc_get_product_id_by_sku($row[0]);
                        if ( $id ){
                                $price = $row[1];
                                $stock = $row[2];

                                $product = wc_get_product( $id );
                                $product->set_regular_price($price);
                                $product->set_stock_quantity($stock);
                                $product->save();
                        }
                }
        }
} else {
        error_log( print_r( SimpleXLSX::parseError(), true ) );
}

En el código anterior:

  • Incluimos la librería SimpleXLSX y también su namespace para usar directamente la clase
  • Ubicamos la ruta del archivo .xls en la variable $file
  • Abrimos el archivo y lo parseamos con la función parse se la clase SimpleXLSX
  • Recorremos las filas, excluyendo la primera de ellas que es la cabecera del archivo
  • Obtenemos el ID del producto en base al sku con la función wc_get_product_id_by_sku()
  • Si el producto existe entonces obtenemos el objeto producto en base al ID con la función wc_get_product()
  • Tiendo el objeto producto podemos actualizar el precio y el stock y luego grabar los datos

 

Llamar al código desde una URL

Para ejecutar este código podemos construir un plugin que muestre un botón para ejecutarlo manualmente, o también como parte de un plugin podemos hacer un Hook con la funcionalidad de cron de WordPress para que se ejecute periódicamente.

Sin embargo en este caso para mantener las cosas simples y puesto que necesitamos ejecutarlo en el entorno de WordPress, crearemos una plantilla de página de WordPress que hará referencia al archivo principal.

El archivo de página tendrá el siguiente código PHP:

<?php
/* Template Name: Sincronización excel-woo */

include_once ("sync-woo/process-sync.php");

 
Si usamos esta plantilla de página en una página llamada por ejemplo sincronización, entonces la ejecución del script se hará a través de una URL como: https://ift.tt/DwzktgL.

Puedes usar esa URL para ejecutar el código manualmente o para crear una tarea cron desde tu cuenta de Hosting.

 

Conclusión

Como has podido comprobar, puedes actualizar el stock y precios de tus productos directamente desde un archivo .xls, en este artículo hemos visto como realizarlo directamente a través de código.

 
¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores:

Suscríbete a DecodeCMS:  

 

La entrada Sincronizar WooCommerce y Excel es un artículo reciente del sitio DecodeCMS.

Enregistrer un commentaire

0 Commentaires