• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Plugins / Sincronizar WooCommerce y Excel

Sincronizar WooCommerce y Excel

Sincronizar WooCommerce y Excel

[ hace 1 mes ] [ Autor: Jhon Marreros Guzmán ][ Plugins - Avanzado] [ ]

librería woocommerce

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

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://tudominio.com/sincronizacion.

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:  

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Sincronizar WooCommerce y Google SheetsSincronizar WooCommerce y Google Sheets
  • Etiqueta de Agotado en lista de productos WooCommerce sin pluginsEtiqueta de Agotado en lista de productos WooCommerce sin plugins
  • Agregar el campo de cantidad en la lista de productos de WooCommerceAgregar el campo de cantidad en la lista de productos de WooCommerce
  • Actualizar el stock de productos usando la API de WooCommerceActualizar el stock de productos usando la API de WooCommerce
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (2 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. Antonio

    24 diciembre, 2022

    Hola, estupendo tutorial que resuelve muchos problemas de control de stock.
    Se podría enlazar a una hoja de Google sheet?

    Gracias.

    • Jhon Marreros Guzmán

      24 diciembre, 2022

      Hola Antonio,
      En ese caso se tendría que usar la API de Google, voy a evaluar hacer un artículo sobre eso. Saludos.

  2. Antonio

    26 diciembre, 2022

    Muchas gracias, sería de mucha ayuda para que los clientes no tengan que actualizar los excel en el servidor de hosting.

  3. Carlos

    11 enero, 2023

    Hola, muy buen tutorial, solo un detalle yo tengo alojado mi wordpress en aws y al querer ingresar esa carpeta al tema hijo por medio de ftp no me deja me dice permiso denegado, como puedo ingresar esa carpeta, ya intente otorgarle permisos y no me permite. Alguna técnica para que me deje meter carpetas en un tema hijo.

    • Jhon Marreros Guzmán

      12 enero, 2023

      Hola, pues por lo que comentas efectivamente debe ser un tema de permisos. Sin embargo algo que puedes probar es trabajarlo de manera local y luego empaquetar el tema hijo e instalarlo desde el propio WordPress, a ver si de esa forma te permite.

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Presentación

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Jooble
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad social woocommerce

Populares

Corregir error plugin desactualizado

Agregar super administrador a multisitio de WordPress

Ocultar Widgets en dispositivos móviles

Crear un Widget para el dashboard de WordPress

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2023 Todos los derechos reservados