Reconozco que últimamente me estoy demorando demasiado en publicar el post semanal -llevo varias semanas publicándolo el viernes o el sábado- y por desgracia está semana no va a ser una excepción.
El blog sigue creciendo y por suerte la solicitud de servicios y colaboraciones también lo están haciendo. Pero tranquilo, no tengo pensado dejar de publicar. Para mi es clave seguir escribiendo artículos de calidad en el blog, gracias a ellos tú me estás leyendo ahora mismo.
Sin embargo, estoy convencido de que esta semana la espera ha merecido la pena, ya que hoy te traigo un truco para aplicar ofertas 3×2 en WooCommerce para un producto determinado.
He recibido varios emails de gente pidiéndome por favor que dedicase alguna entrada a configurar ofertas por volumen en WooCommerce. (Si quieres una solución mucho más avanzada para configurar todo tipo de descuentos, te recomiendo que eches un vistazo a esta entrada; Descuentos por volumen en WooCommerce. La solución definitiva)
Pues bien, en esta entrada te voy a explicar cómo hacerlo para una oferta del tipo 3×2 (compra 3 productos y paga 2) de forma muy sencilla y sin necesidad de instalar ni configurar plugins.
Crear una oferta 3×2 en WooCommerce sin usar ningún plugin.
Hay varias soluciones en forma de plugin para WooCommerce que te permiten configurar todo tipo de ofertas por volumen. Pero sinceramente, los únicos que he encontrado que merezcan la pena son de pago.
Si crees que este tipo de oferta puede encajar bien con tus productos y quieres combinar diferentes tipos de ofertas por volumen con diferentes productos, entonces vas a necesitar un buen plugin que te permite hacer todo eso desde el panel ajustes.
En cambio, si lo que buscas es hacer un pequeño test de ventas para ver si este tipo de oferta 3×2 tiene respuesta, entonces este truco te vendrá como anillo al dedo. Muy fácil de configurar y sin tener que gastar un sólo céntimo.
Para aplicar la oferta de 3×2 a un producto cualquiera de WooCommerce usando este truco, lo único que vas a necesitar es pegar el siguiente código snippet al final del fichero functions.php de tu plantilla.
Ahora bien, para que la oferta se aplique al producto correcto, debes modificar un par de líneas del código anterior. No te preocupes, es muy sencillo.
Fíjate que en el código anterior aparece repetida dos veces la siguiente línea:
$cart_item[ 'product_id' ] === 54
Esta línea es la que determina a qué producto se le aplica la oferta, siendo el número 54 el ID de producto que yo he usado como ejemplo en el código.
Lo único que tienes que hacer es sustituir ese número, en las dos líneas que aparece, por el ID de producto que tú quieras. Quedaría algo así:
$cart_item[ 'product_id' ] === id_de_tu_producto
Para conocer el ID de un producto simplemente tienes que acceder a tu panel de administración e ir al apartado de «Productos«. Una vez dentro, coloca el cursor del ratón sobre el producto en cuestión y podrás ver su ID justo debajo del nombre del producto.
Por último, aclarar que antes de poner en práctica este truco para crear ofertas 3×2 en WooCommerce, debes tener en cuenta que el código anterior sólo funciona para tiendas que trabajan con un sólo tipo de impuestos.
Espero que este sencillo truco te haya sido útil para experimentar con tu primera oferta por volumen y a ser posible, que haya afectado positivamente a tu cuenta de resultados 😉
Hola que tal? a mi si me funciona solo que cuando intento acceder para editar alguna pagina me sale ese error:
Fatal error: Uncaught Error: Attempt to assign property "amount" on bool in /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/themes/astra-child/functions.php:247 Stack trace: #0 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-includes/class-wp-hook.php(308): actualiza_impuestos_aplicados(Array, Object(WC_Cart)) #1 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-includes/plugin.php(205): WP_Hook->apply_filters(Array, Array) #2 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/plugins/woocommerce/includes/class-wc-cart.php(895): apply_filters('woocommerce_car...', Array, Object(WC_Cart)) #3 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/CartSchema.php(394): WC_Cart->get_tax_totals() #4 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/CartSchema.php(372): Automattic\WooCommerce\StoreApi\Schemas\V1\CartSchema->get_tax_lines(Object(WC_Cart)) #5 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/Cart.php(50): Automattic\WooCommerce\StoreApi\Schemas\V1\CartSchema->get_item_response(Object(WC_Cart)) #6 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AbstractRoute.php(109): Automattic\WooCommerce\StoreApi\Routes\V1\Cart->get_route_response(Object(WP_REST_Request)) #7 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AbstractCartRoute.php(102): Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute->get_response(Object(WP_REST_Request)) #8 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-includes/rest-api/class-wp-rest-server.php(1171): Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute->get_response(Object(WP_REST_Request)) #9 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-includes/rest-api/class-wp-rest-server.php(1018): WP_REST_Server->respond_to_request(Object(WP_REST_Request), '/wc/store/v1/ca...', Array, NULL) #10 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-includes/rest-api.php(535): WP_REST_Server->dispatch(Object(WP_REST_Request)) #11 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-includes/rest-api.php(2884): rest_do_request(Object(WP_REST_Request)) #12 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Assets/AssetDataRegistry.php(323): rest_preload_api_request(Array, '/wc/store/v1/ca...') #13 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AllProducts.php(40): Automattic\WooCommerce\Blocks\Assets\AssetDataRegistry->hydrate_api_request('/wc/store/v1/ca...') #14 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AllProducts.php(33): Automattic\WooCommerce\Blocks\BlockTypes\AllProducts->hydrate_from_api() #15 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AbstractBlock.php(100): Automattic\WooCommerce\Blocks\BlockTypes\AllProducts->enqueue_data() #16 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-includes/class-wp-hook.php(308): Automattic\WooCommerce\Blocks\BlockTypes\AbstractBlock->enqueue_editor_assets('') #17 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array) #18 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #19 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-admin/edit-form-blocks.php(272): do_action('enqueue_block_e...') #20 /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-admin/post.php(187): require('/homepages/7/d8...') #21 {main} thrown in /homepages/7/d898330277/htdocs/clickandbuilds/FarmaciasDJES/wp-content/themes/astra-child/functions.php on line 247
Ha habido un error crítico en esta web. Por favor, consulta tu bandeja de entrada de correo electrónico de administrador del sitio para obtener instrucciones.
Más información sobre la solución de problemas de WordPress.
al quitar la linea de codigo 3×2 se restablece y puedo acceder a editar mis paginas.
Hola Bryan!
Este post se publicó en febrero de 2015 y seguramente el snippet ya no es compatible con la última versión de WooCommerce. Así que te recomiendo que uses un plugin en su lugar.
Saludos!
Buenas Antonio,
El tutorial funciona correctamente, pero yo lo necesito por categorias y no por articulo, seguro que ahi una forma de realizarlo.
Muchas Gracias de antemano
Un saludo
Antonio
Hola Antonio, estoy trabajando en una tienda online con woocommerce y necesito crear una promocion de 2×1 pero que el segundo dvd de regalo, el cliente no sepa cual es, seria posible? Un saludo gracias.
hola como creo una oferta 8X1 y 12×4 del mismo producto sin usar Pricing Deals for WooCommerce ya que no entiendo su funcionamiento, y con este plugin WooCommerce Dynamic Pricing & Discounts” no lo puedo hacer! y del codigo no entiendo mucho
Hola Alejandra,
Lo puedes hacer perfectamente con el plugin WooCommerce Dynamic Pricing & Discounts.
Saludos!
Hola Antonio, gracias por todos tus post. Tengo una duda para aplicar el código en mi página. El código funciona perfectamente con un producto simple o con la ID generica del producto, pero ¿como podría aplicarlo a solo una variación de un producto variable? he intentado poner el ID que aparece en esta variación, Ej. «#3385» pero no funciona, ni con el «#» ni sin el.
Espero que me haya explicado bien.
Muchas gracias!
Hola Antonio, en este post comentas la oferta del 3 x 2 , pero daba un fallo que te comento Alejandro, llegastes a mirar el codigo que esta equivocado?, podrias ponerlo de nuevo un saludo y gracias por tu ayuda.
Hola Fran,
Acabo de probarlo y me funciona sin problemas. ¿Seguro que has puesto el ID del producto correctamente?
Hola, se puede ocupar esto para más productos? (varios ID) Saludos y gracias
Hola Mónica,
Para configuraciones más avanzadas te recomiendo que leas este post.
Saludos!
«Hay varias soluciones en forma de plugin para WooCommerce que te permiten configurar todo tipo de ofertas por volumen. Pero sinceramente, los únicos que he encontrado que merezcan la pena son de pago.»
Pues, ¿podrías indicar un par de plugins de pago que recomendarías? Muchas gracias, un saludo, Carlos Alberto
Hola Carlos Alberto,
Existen varios, pero el mejor (en relación funcionalidades/precio) es sin duda; «WooCommerce Dynamic Pricing & Discounts» (soy afiliado, ¡gracias!)
Con este plugin puedes crear todo tipo de combinaciones de ofertas y descuentos, filtrando por categorías de productos, roles de usuario, productos concretos, cantidad mínima, etc.
Si vas a crear promociones frecuentemente, te merece mucho la pena.
Espero que te sirva.
¡Saludos!
Me gustaría Aplicar un 2×1 en la tienda online de un clientes
¿Cómo lo haría?
Hola Joshua,
Puedes hacer con el plugin Pricing Deals for WooCommerce.
Saludos!
Hola Antonio. Quería aplicar una oferta 2×1 en mi tienda on line y leyendo tu post he encontrado esta recomendación del plugin Pricing deal for Woocommerce. Lo he instalado y he seguido los pasos, pero al hacer la prueba no funciona. No sé qué estoy haciendo mal, podrías echarme una mano?
muchas gracias de antemano.
Un saludo
Hola Lourdes,
A día de hoy, para configuración de ofertas más avanzadas, recomiendo a todo el mundo el plugin «WooCommerce Dynamic Pricing & Discounts«. Es con el único que trabajo, te permite prácticamente todo tipo de configuración de descuentos y ofertas y la verdad, es que funciona genial.
100% Recomendable.
Saludos!
Hola! todo funciona perfectamente…hasta que realizo el pedido. Una vez se hace el pedido, no se llega a realizar el pedido, colocando en el total el precio de 3 productos, no de 2.
A ver si me das una mano 🙂
Alejandro
Hola Alejandro,
Llevas razón. Voy a revisar el código para solucionarlo.
Gracias por avisar 😉