Ampliación de almacenes de datos CRUD en WooCommerce
Publicado: 2018-01-25¿Has oído hablar de CRUD? En programación significa C rear , Leer , Actualizar y Borrar , operaciones básicas que todos realizamos con nuestros datos. Con WooCommerce, eso incluye productos, pedidos, clientes, cupones y otros datos almacenados en su base de datos.
Los cambios recientes en WooCommerce relacionados con CRUD significan que la plataforma está en camino de ser más escalable. Nota: Esta publicación se vuelve técnica y asume un cierto nivel de comodidad con el código PHP.
¿Audio-aprendiz? Los puntos de esta publicación son de mi charla en WooConf 2017.
Un WooCommerce más escalable
Para facilitar la vida de nuestros desarrolladores, agregamos objetos CRUD especiales en WooCommerce 3.0. Esto reemplaza todo el metacódigo de publicación anterior en WooCommerce y también debe ser utilizado por todas las extensiones para permitir que un sitio de WooCommerce se escale.
Al mismo tiempo, agregamos otro conjunto de objetos llamados Almacenes de datos, que están diseñados para cargar y guardar sus datos de WooCommerce desde y hacia la base de datos. Estas abstracciones están diseñadas para permitir que WooCommerce maneje una mayor cantidad de pedidos, productos y clientes. Esto se logra conectándose a WooCommerce para que use diferentes medios para almacenar datos.
Cada implementación de almacenamiento de datos determina cómo se almacenan y recuperan los datos, ya sea de una base de datos o de otra forma de almacenamiento de datos. Al usarlos, ahora es posible escalar WooCommerce hasta volúmenes de ventas empresariales, con implementaciones que pueden manejar millones de pedidos. Todo lo que se debe hacer es conectarse a un filtro que redefine lo que WooCommerce usa para almacenar datos.
Además de las mejoras de rendimiento que CRUD y las abstracciones del almacén de datos pueden proporcionar, estas construcciones permiten mucha más flexibilidad en la forma en que guarda y carga datos para su tienda WooCommerce. Para cada tipo de dato de WooCommerce (productos, pedidos, clientes, etc.), ahora tiene la capacidad de decidir mediante programación de dónde deben provenir esos datos y hacia dónde deben ir. Esto permite a los creadores de tiendas adaptar WooCommerce para que se ajuste a sus necesidades mediante la interfaz con otros sistemas, o actualizar el rendimiento de diferentes partes de WooCommerce según sea necesario.
Además de las mejoras de rendimiento que CRUD y las abstracciones del almacén de datos pueden proporcionar, estas construcciones permiten mucha más flexibilidad en la forma en que guarda y carga datos para su tienda WooCommerce.
¿Qué significa eso exactamente? Bueno, piensa en las posibilidades:
- Guardar datos de pedidos en una base de datos separada de wpdb.
- Obtener datos de productos de una base de datos existente en otro sistema.
- Compartir el inventario de productos en varios sitios (ejemplo a continuación).
Obtener datos de productos a través de una API de otra fuente.
Hacer un comando CLI para cargar desde un almacén de datos y guardar en otro (importación/exportación integrada).
Ampliación de almacenes de datos
Con CRUD y las abstracciones del almacén de datos, a WooCommerce ya no le importa de dónde provienen los datos o cómo se guardan. Puedes controlar todo eso tú mismo.
En el siguiente ejemplo, recupero el recuento de inventario de un servicio separado y solo se cambia el recuento de inventario de cada objeto de producto. Un beneficio de hacer esto es que puedo hacer que varios sitios de WooCommerce vendan desde el mismo recuento de inventario y estar seguro de que no he sobrevendido mi stock.
Aquí está el punto de entrada, el filtro install_data_store
.
Para el almacén de datos real, hay dos interfaces para implementar: WC_Object_Data_Store_Interface
y WC_Product_Data_Store_Interface
.
Este almacén de datos está diseñado para aumentar el almacén de datos existente (por lo general, la metaimplementación posterior predeterminada). Toma el almacén de datos existente en su constructor y solo modifica la forma en que se maneja el inventario. Todo lo demás se maneja normalmente a través del almacén de datos existente.
Para la mayoría de las funciones requeridas, este almacén de datos solo llama al almacén de datos principal:
El único cambio que introduce este almacén de datos es cómo se lee el inventario. Para este caso, normalmente lee del almacén de datos principal, pero anula la cantidad de existencias antes de regresar:
Con CRUD y las abstracciones del almacén de datos, a WooCommerce ya no le importa de dónde provienen los datos o cómo se guardan. Puedes controlar todo eso tú mismo.
La cantidad de existencias anterior se obtiene de una API. En una aplicación del mundo real, esta llamada API podría ir a un sistema de control de inventario, a un POS o incluso a otro sitio de WooCommerce.
El código completo para el ejemplo anterior está disponible en: https://github.com/coderkevin/woocommerce-product-inventory-datastore
Infinitas posibilidades con objetos CRUD y almacenes de datos
Como se demostró en los ejemplos anteriores, las posibilidades son infinitas. WooCommerce 3.3, cuyo lanzamiento está previsto para el 30 de enero, contiene otro hito emocionante relacionado con CRUD. Más en: WooCommerce 3.3 Nuevos Webhooks CRUD.
Use su imaginación para crear soluciones de datos de maneras nuevas e interesantes con objetos CRUD y almacenes de datos, y asegúrese de hacernos saber cómo le va en Comentarios o uniéndose a la comunidad WooCommerce Slack.