WooCommerce 3.0 está aquí … y merece la pena

Cuando hay actualizaciones importantes siempre nos entra el sudor frío, y las dudas de si merecerá la pena, y con WooCommerce 3.0, conocida como la «mariposa biónica» (bionic butterfly) merece la pena, aunque como toda nueva versión tiene sus cosas.

Para empezar conozcamos las novedades de WooCommerce 3.0 ¿te parece?

Todas las novedades de WooCommerce 3.0

Como son muchas las mejoras vamos a verlas por partes, destacando las más relevantes…

Objetos y data-stores CRUD (Crea, Lee, Actualiza, Borra)

Las clases CRUD en WooCommerce 3.0 representan un cambio fundamental en cómo trabajar con objetos de datos en el núcleo del plugin, o sea, en productos, pedidos, cupones, clientes, etc.

Tradicionalmente en WordPress, al trabajar con, por ejemplo, entradas y datos de entradas, puedes fácilmente actualizar/obtener/crear cualquier metadato que quieras por cualquier método, directamente de la base de datos.

El nuevo sistema CRUD por el contrario introduce otra capa entre la base de datos y tu código, lo que añade estructura, validación y control.

Por ejemplo, imagina que tienes un producto y este producto tiene precio (raro ¿verdad?). Con el método antiguo si querías actualizar el precio de este producto …

  1. necesitas saber dónde está almacenado el precio (meta key)
  2. necesitas saber en qué formato están almacenados los datos (¿cadena? ¿2 decimales?)
  3. necesitas saber cómo actualizar esos datos (update_post_meta).

Con CRUD, en vez de tener una lista de propiedades de producto, uno de los cuales será el precio, puedes hacer una llamada ->set_regular_price() para definir los datos, seguido de ->save() para hacer que esos datos permanezcan en la base de datos. No importa dónde estén almacenados, y el formato lo gestionas tú mismo. Un ejemplo:

$product = wc_get_product( 1 );
$product->set_regular_price( 10.99 );
$product->save();

¿Beneficios?

  • Definimos los datos estructurados para cada recurso, y puedes revisarlos fácilmente.
  • Controlaos el flujo de los datos, y cualquier validación necesaria.
  • No necesitas saber las peculiaridades internas de los datos en los que estés trabajando.
  • Internamente los datos pueden moverse a cualquier parte, p.ej. a tablas personalizadas, sin que afecte al código existente.
  • Son reutilizables (API, CLI, WP Admin) y tienen más de una unidad de prueba.

Este cambio es especialmente importante, porque realmente abre el camino para mejorar el rendimiento en el futuro.

Nueva galería de imágenes de producto

Como ya hablamos el otro día, WooCommerce incorpora una nueva galería de producto que incluye las siguientes mejoras:

  • Ahora los visitantes tienen tanto el efecto de zoom (lightbox) como el de magnificación (como en Amazon)
  • El comportamiento de la galería es más intuitivo, pues al hacer clic en una miniatura se actualiza la imagen principal env ez de abrirse en zoom (lightbox)
  • Enormes mejoras para móviles, en concreto en los gestos de toques, pudiendo deslizar para navegar por la galería, pulsar para hacer zoom, deslizar para cerrar y más.
  • Al abrir el zoom en móviles ahora se muestra la imagen en su tamaño real, más grande que en la visualización de página.

Para evitar conflictos con los efectos zoom (lightbox) de los temas todos los temas tendrán que activar la nueva funcionalidad usando add_theme_support() como expliqué el otro día.

Nueva CLI y la Rest API v2

Las versiones 2.6.x tenían ya CLI, pero era una interfaz a medida y no compartía código con el resto del código base.

Era bastante inútil y difícil de mantener, por ello se ha adaptado totalmente a la REST API. A partir de la versión 3.0.x, WooCommerce incorpora una nueva CLI que se integra directamente con la REST API y tiene sus mismas funcionalidades.

Los nuevos comandos los tienes a continuación:

wp wc customer 
wp wc customer_download 
wp wc order_note 
wp wc payment_gateway 
wp wc product 
wp wc product_attribute 
wp wc product_attribute_term 
wp wc product_cat 
wp wc product_review 
wp wc product_shipping_class 
wp wc product_tag 
wp wc product_variation 
wp wc shipping_method 
wp wc shipping_zone 
wp wc shipping_zone_location 
wp wc shipping_zone_method 
wp wc shop_coupon 
wp wc shop_order 
wp wc shop_order_refund 
wp wc tax 
wp wc tax_class 
wp wc tool 
wp wc webhook 
wp wc webhook_delivery

También se ha introducido una nueva versión de la API con diversas mejoras sobre la versión 1. Por resumir las novedades aquí tienes una lista:

  • Compatibilidad con metadatos en la mayoría de los endpoints.
  • Nuevo endpoint de variaciones para crear y actualizar variaciones. Además, ahora se impide la posibilidad (rota) de manipular directamente variaciones en los endpoints de los productos.
  • Ajustes de cada endpoint (actualizar/ver ajustes de la tienda).
  • Endpoints de zonas de envío.
  • Endpoints de métodos de pago y envío, ajustes incluidos.
  • Añadida compatibilidad con la identificación mediante oAuth1.0a usando cabeceras.
  • Cacheo y retirada de queries lentas.

Nuevo sistema de registros

El nuevo sistema de registros, que pueden usarlo las extensiones para registrar eventos, errores y avisos, soluciona las limitaciones del anterior sistema de registros. Incluye gestión de registros e implementa un método nuevo para su interfaz, mucho más ampliable.

El nuevo sistema de registros incluye 2 gestores: archivo y base de datos, y puede activarse así:

define( 'WC_LOG_HANDLER', 'WC_Log_Handler_DB' );

Mejoras de rendimiento

Las principales mejoras de rendimiento en WooCommerce 3.0 son las siguientes:

  • Se ha mejorado la sincronización de productos variables. Los metadatos de precio superior/inferior ya no se almacenan, solo los precios principales, si un precio hijo tiene peso o dimensiones.
  • En los archivos de plantilla se ha eliminado WP_Query de up-sells.php y de related.php, y se han reemplazado con el loop PHP foreach (puesto que ya tiene los IDs de producto). Esto implica una query mucho más corta en las páginas de producto y de carrito.
  • Se ha eliminado la característica de acceder a las nuevas descargas al editar un producto. Al mostrar miles de pedidos con este tipo de modificaciones se comprometía enormemente el rendimiento en algunas tiendas, y también podía provocar otro tipo de problemas. A partir de ahora al editar un archivo no se evitará que los compradores lo descarguen.
  • Se ha eliminado la columna de ‘ordenar productos’ de la página de pedidos. Aunque podía ser útil, cargar todos los productos de todos los pedidos en la página era una pesadilla para el rendimiento. Esto podría volver en un futuro pero tendrá que ser de un modo más dinámico, así que se dejará para un futuro rediseño.
  • En vez de enviar emails en una petición grande al hacer un pedido en el p ago, ahora se ha incluido un evento de CRON con retardo para enviar los emails. Este nuevo proceso envía los emails más tarde, con un pequeño retardo y en peticiones separadas, lo que acelera el proceso del pago en un 50%.

Además, como unificar la tabla de metadatos de publicación podría provocar una reducción de velocidad cuando hay un catálogo con muchos productos, se han realizado algunas optimizaciones para utilizar taxonomías en los filtros de la tienda.

  • La visibilidad del producto (que controla si los productos son visibles en el catálogo, búsqueda o ambos) anteriormente era un dato meta de la publicación y se usaba en las queries de producto de WooCommerce. A partir de la versión 3.0 se ha introducido una nueva taxonomía product_visibility. Las mejoras de rendimiento en algunas pruebas han llegado hasta el 94%.
  • Los productos destacados también usa la nueva taxonomía new product_visibility en vez de los datos meta, lo que también mejora el rendimiento en su queries.
  • Y lo mismo para los productos agotados. Si estás ocultando los productos agotados del catálogo notarás mejoras notables.

Más mejoras a destacar

Son muchos los cambios pero estos merece la pena citarlos también:

  • Ordenar tasas de impuestos antes era un proceso manual. A partir de WooCommerce 3.0.x las tasas de impuestos se ordenan automáticamente, colocando las reglas más específicas sobre las reglas generales (como tienen que ordenarse).
  • En la tienda se puede quitar el aviso global, evitando de este modo que sea un problema especialmente en dispositivos móviles.
  • En WordPress multisitio cuando un usuario se registra pero no tiene cuenta en la tienda WooCommerce añade los usuarios existentes a la tienda en vez de mostrar un error, como hacía en las versiones anteriores.
  • Anteriormente, los datos estructurados se generaban insertados en los archivos de plantilla. Desde la versión 3.0 se ha cambiado al formato JSON-LD, que mantiene intactos los archivos de plantilla y los datos si se han hecho personalizaciones en el tema.
  • Al autorizar pagos con PayPal Standard los fondos ahora se capturan automáticamente cuando el pedido cambia de procesando a completado, algo que antes era un proceso manual ¡Bien, un plugin menos!
  • Se han fusionado los tipos de cupón de porcentaje en el carro y porcentaje en el producto en uno solo y se han quitado los descuentos de product_cart. Los descuentos que ofrecían estos descuentos eran idénticos y, sin embargo, la validación basada en el carrito podía evitar que se aplicas el cupón si había algún producto no-elegible en el carrito, en vez de simplemente hacer el descuento en los productos elegibles por el cupón. Esto no era nada intuitivo, provocaba confusión tanto a los clientes como al gestor de la tienda y, lo más importante, provocaba que los clientes tuviesen que acceder al pago dos veces para usar estos cupones.
  • Los precios de productos variables que contengan productos en oferta ya no estarán tachados. Ahora mostrarán un rango tachado seguido de un rango no tachado, especialmente si los precios se solapaban, lo que era realmente confuso, mostrando un enorme rango de precios. Ahora solo se muestra un rango de precios. Los precios en oferta se seguirán mostrando al seleccionar una variación
  • Los productos agrupados ahora se eligen en el producto agrupado en vez de agrupar los productos simples al agrupado, y los productos hijos del agrupado pueden estar en más de una agrupación. O sea, si antes tenías que crear el producto agrupado y luego editar cada producto a agrupar para añadirle el agrupado, ahora simplemente al crear el producto agrupado – desde «Productos vinculados» – añades los productos de la agrupación, mucho más lógico y rápido.
  • Ahora las zonas de envío y métodos de envío se crean en un mismo proceso en vez de en dos procesos separados.

Como ves, las novedades de WooCommerce 3.0 merecen la pena y mucho, no solo introduciendo lógica en partes que no la tenían como los productos agrupados, o incorporando mejoras que vemos en las tiendas más populares como la magnificación, sino introduciendo mejoras de rendimiento cada vez más necesarias.

Ahora bien, ¿tiene algún problema? Pues como todas las nuevas versiones, no debes actualizar sin hacer antes pruebas de compatibilidad con otros plugins o tu tema, al menos en una tienda activa.

Hay temas como Divi que ya se han actualizado para adaptarse a WooCommerce 3.0 pero otros no lo han hecho y algunos tendrás que hacerlo tú mismo.

Y con respecto a los plugins, algunos ya se están actualizando pero otros son totalmente incompatibles de momento, como el mismo Bookings de la misma gente de WooCommerce,  y otros muchos de los que se está informando en los foros, así que templanza y relax. Crea una copia de tu tienda y prueba ahí antes de actualizar en la tienda activa.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(11 votos, promedio: 4.8)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

25 comentarios en “WooCommerce 3.0 está aquí … y merece la pena”

  1. Genial resumen Fernando, gracias por ponerlo todo fácil de leer.

    En cuanto a WooCommerce… ya sabemos que cuando hacen actualizaciones a todos nos tambalea algo en nuestro interior, pero hay veces que merece mucho la pena ya que las mejoras son notorias.

    Así que ya sabéis, ¡antes de hacer una actualización haced copias de seguridad!

    1. Y, a pesar de todo, solo a mi se me ocurre ayer actualizar el sitio de clases antes del master que estoy dando ahora. Resultado: no encontraba donde añadir agrupación de productos y algún detalle más 😛

  2. Muchas gracias por la información, es importante hacer un backup antes de actualizar nada y revisar si los plugins que usamos son compatibles con la versión 3.0 no vaya a ser que empicen a dejar cosas de funcionar XD

    Por cierto, en el apartado

    Mejoras de rendimiento

    Las principales mejoras de rendimiento en WooCommerce 3.9 son las siguientes…

    es en la 3.0 no?, jejejeee aunque seguro que enseguida sacaran la 3.9 :p

    Un saludo!

    1. Eva Fernández Quintana

      Que depende del tema no me cabe duda o el hilo del foro de soporte sería interminable XD

      Si el enlace al que te refieres es al que explica que hay que añadir el soporte para las nuevas funcionalidades de la galería, no va por ahí la cosa. No sé exactamente cuál es el problema y sé que están trabajando en solucionarlo, pero añadir el soporte no soluciona ese error concreto 😉

  3. Cuidado con la actualización de Wocommerce porque yo con todo actualizado y Divi, me ralentiza la web de manera espectacular. Antes de la actualización da unos tiempos de carga de 1,78 o 2,6 segundos y después de la actualización se sube a 7 segundos. He tenido que descargarme una copia de seguridad para que todo funcione bien. Cierto es que no me da errores, pero incluso hay categorías que no llegan a cargar.

  4. Dileydi Ramos

    Hola, muchas gracias por el resumen. Sin embargo tengo un problema con la version 3.0. Antes tenia una funcion para cuando un producto esta a 0 en el stock que me pusiera «vendido». Pero con la nueva version no me funciona y lo que me pone es 0 $ en lugar de «Vendido».
    Lei que esta era una de las modificaciones pero no entiendo por qué. Como puediera hacer esto en la version 3.0.
    Gracias de antemano.

  5. La verdad que son muchas las mejoras. Pero a mí no me está dando más que problemas. Mi tema ya está adaptado a esta nueva versión, y aún así no puedo configurar los productos en WooCommerce.
    Por más vueltas que le doy no encuentro solución.

    Muchas gracias
    Saludos

  6. Alberto Fernandez

    No se que pasa que de repente la función en admin de agregar atributo a un articulo dejo de funcionar se queda ahi todo pillado a vosotros os pasa igual?, me falla en todas alas tiendas que tengo, tengo la ultima version de woocommerce instalada 3.0.3, alguien sabe alguna solución o porque pasa eso?

  7. Hola Fernando!!! muchas gracias por su gran informacion…….

    espero se encuentre muy bien. Soy Colombino y ahora estoy viviendo en turquia. y me encuentro al inicio de un gran proyecto web aqui en turquia.

    pero e buscado en internet respuesta a esta pregunta pero todavia no la he contrado. es la siguiente: como incorporar varias cuentas TPV en una pagina web hecha en wordpress?

    eje: la pagina va alohar varios hoteles y empresas de turismo. y lo que necesito es que cuando el cliente valla hacer un pago por ejemplo una actividad deportiva, ese dinero le llegue a respectiva empresa directamente.

    no se si con este cms se logre. asi que te agradeceria si pudieras ayudar. Muchisimas gracias por tomar el tiempo de leer esto!!!

  8. Gustavo Novellon

    Gracias por el artículo Fernando. Te suena que haya problemas con las traducciones de Woocomerce 3 y/o que no pille correctamente los archivos .po .mo? Tengo una tienda en la que algunos textos no hay forma de que los termine de traducir.
    Gracias!

  9. Pingback: Recuperar columna de productos comprados por pedido - WooCommerce

  10. Manuel Severo Lopez Miranda

    Hola! @fernandot:disqus Sabrás si ocurre algo o estoy haciendo algo mal… coloco TALLA como atributo, pero al ir a la página del producto no muestra la opción para seleccionar TALLA!

    1. Hay que marcar cuando creas los atributos que se usen para variaciones, crear las variaciones para los atributos y luego asignar precio/miniatura/descripción único (o no) a cada variación, sino solo es algo informativo

      1. Manuel Severo Lopez Miranda

        Genial! Ya lo hice y funcionó… Muchas Gracias!!! Mi confusión estaba en creer que podía poner las TALLAS con el producto simple seleccionado!

        Pero ya está resuelto! Nuevamente Gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido