✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Guía: cambiar precios en WooCommerce por código

53

Esta publicación es para usted que desea agregar un código que ajuste los precios en su tienda web WordPress WooCommerce. Puede aumentar los precios o descontarlos. Y cómo y de dónde vienen los ajustes, depende totalmente de tu caso. Su tienda web podría operar con descuentos porcentuales establecidos en cada usuario registrado, una configuración global personalizada en la configuración de WooCommerce, una suma fija codificada o algo establecido en cada producto o categoría de producto.

He intentado que el código sea lo más general posible para que puedas ajustarlo a tu caso. En mi caso, los ajustes de precio provienen de un porcentaje de descuento agregado como meta del usuario.

El código se actualiza para que funcione con WooCommerce 3.x y superior. No puedo garantizar que funcione para versiones inferiores.

Paso 1: crea un lugar para tu código

El primer paso es fácil; necesitas un lugar para agregar tu código. Esto depende completamente de ti. Puede agregar esto directamente en su tema functions.php, o en algún lugar de sus archivos de complemento. Me gusta trabajar con clases que mantendrán todo muy bien junto en un solo lugar. En aras de la simplicidad, colocaré la clase en un subdirectorio /src/en mi tema, la incluiré y crearé una instancia en functions.php.

require_once(get_stylesheet_directory().'/src/ChangePrices.php'); new ChangePrices();

Modifique este paso para adaptarlo a su caso.

Paso 2: Decida cómo deberían funcionar los ajustes de precios

Es posible que este paso ya le resulte claro: aquí es donde necesita saber cómo y dónde obtener el ajuste de precio. El objetivo final debe ser un número con el que sumas, restas, multiplicas o divides los precios.

En mi caso tengo una meta de usuario sobre cada usuario que contiene un porcentaje de descuento; un número entre 0 y 99. El administrador del sitio puede establecer un descuento para cada usuario. No mostraré el código para agregar el metacampo del usuario, ya que es posible que no sea para usted y se puede hacer fácilmente con, por ejemplo , Campos personalizados avanzados.

En mi clase mantengo una variable de clase que en el constructor se establecerá en un multiplicador. Dependiendo de si un usuario ha iniciado sesión, buscaré el descuento guardado del usuario y crearé un multiplicador a partir de él. Por defecto, el multiplicador debe ser 1. Precio 1 = mismo precio que antes. Pero para un descuento de, por ejemplo, el 10 %, el multiplicador sería 0,9. Precio 0,9 = precio rebajado con un 10%.

Ahora que tengo un multiplicador listo para usar, es hora de analizar cómo ajustar los precios en WooCommerce.

Paso 3: filtros de precios en WooCommerce

En WooCommerce hay un filtro para tipos de productos simples, agrupados y externos, y otro para tipos de productos variables. Le recomiendo que agregue ambos filtros para cubrir todos los tipos de productos. Además de esto, WooCommerce opera con tres filtros de precios adicionales:

  • Precios regulares (woocommerce_product_get_regular_pricey woocommerce_product_variation_get_regular_price)
  • Precios de venta (woocommerce_product_get_sale_pricey woocommerce_product_variation_get_sale_price)
  • El precio activo actual (woocommerce_product_get_pricey woocommerce_product_variation_get_price). El precio activo actual se obtendrá del precio regular o del precio de venta.

Ahora, puede simplemente filtrar el precio activo actual y cancelarlo, pero depende de cómo desee manejar la visualización de precios en su tienda web. Recuerda que los productos en oferta por defecto muestran el precio antiguo (precio normal) tachado y el precio de oferta (precio activo) al lado. Si filtra solo x_get_pricey un producto está en oferta, se mostrará el precio anterior sin descuento.

Por eso, elijo filtrar tanto el precio actual activo (x_get_price) como el precio normal (x_get_regular_price), porque no quiero confundir a los usuarios de mi tienda web.

Escribir el filtro de precios

Los cuatro filtros se referirán a la misma función. Dentro de la función, simplemente multiplicamos el precio provisto con la variable de clase. Recuerde que si no se establece ningún descuento, el multiplicador es 1, lo que da como resultado que no cambie el precio.

Tenga en cuenta que todos los filtros proporcionan el objeto del producto como segundo parámetro. Si desea ajustar los precios según los productos, puede ajustar el código para hacerlo.

Si revisa su tienda web mientras está conectado como un usuario con un descuento, ¡ahora debería ver precios con descuento! Sin embargo, aún no hemos terminado. WooCommerce realizó algunos cambios en 2.4.7 (lea más aquí) que afectan los precios dinámicos para productos variables.

Manejo de precios de productos variables

Para que los precios dinámicos funcionen en productos variables, debe agregar los filtros mencionados en la publicación del blog vinculada anteriormente; woocommerce_variation_prices_price(y el filtro de precio regular correspondiente woocommerce_variation_prices_regular_price), y el filtro woocommerce_get_variation_prices_hash. El filtro hash está manejando el caché interno de WooCommerce, y debemos decirle a WooCommerce que lo borre correctamente cuando modifiquemos los precios por código.

Los primeros dos filtros de precios siguen el mismo procedimiento que adjustPrice(), sin embargo, les asigno una función diferente porque los parámetros son diferentes. En cuanto a la función de filtro hash, debemos agregarla a la matriz hash para identificar cuándo se debe borrar el caché. Agregar el ID de usuario es una buena idea ya que el multiplicador es único para cada usuario.

¡Finalmente, eso debería ser todo!

Tenga en cuenta que tiene acceso al objeto de producto completo en todos los filtros (incluso al objeto de variación en los dos últimos). Esto es útil para los casos en los que desea ajustar los precios en función de la información del producto; como excluir ciertos productos del descuento o aplicar un descuento basado en las categorías de un producto. Debería ser bastante sencillo para usted ajustar el código a lo que necesita para su caso.

El código final completo

Como de costumbre, espero que hayas aprendido algo siguiendo esta publicación paso a paso, pero proporcionaré la clase completa como referencia:

Fuente de grabación: awhitepixel.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More