Cómo cambiar el precio de productos en WooCommerce según el día de la semana

Este código está diseñado para cambiar dinámicamente los precios de ciertos productos en una tienda de WooCommerce en función del día de la semana. A continuación, se explica en detalle cómo funciona cada parte del código:

1. Filtros en WooCommerce:

add_filter('woocommerce_product_get_price', 'change_price_on_specific_days', 10, 2);
add_filter('woocommerce_product_get_regular_price', 'change_price_on_specific_days', 10, 2);

function change_price_on_specific_days($price, $product) {
    // IDs de los productos que deseas modificar
    $product_ids_1 = [343, 252]; 
    $product_ids_2 = [392, 388, 374];
    $product_ids_3 = [393, 390, 378];
    
    // Nuevos precios que deseas aplicar
    $new_price_1 = 9.20; // Precio para los productos 343 y 252 (martes)
    $new_price_2 = 8.70; // Precio para los productos 392, 388 y 374 (miércoles)
    $new_price_3 = 10.70; // Precio para los productos 393, 390 y 378 (miércoles)

    // Obtén el día actual (1 para lunes, 2 para martes, ..., 7 para domingo)
    $current_day = date('N');
    
    // Aplica el nuevo precio para los productos 343 y 252 solo los martes (2)
    if (in_array($current_day, [2]) && in_array($product->get_id(), $product_ids_1)) {
        return $new_price_1;
    }

    // Aplica el nuevo precio para los productos 392, 388 y 374 solo los miércoles (3)
    if (in_array($current_day, [3]) && in_array($product->get_id(), $product_ids_2)) {
        return $new_price_2;
    }

    // Aplica el nuevo precio para los productos 393, 390 y 378 solo los miércoles (3)
    if (in_array($current_day, [3]) && in_array($product->get_id(), $product_ids_3)) {
        return $new_price_3;
    }

    return $price;
}

Estas dos líneas de código son filtros que permiten modificar el precio de un producto antes de que se muestre en la tienda. Los filtros 'woocommerce_product_get_price' y 'woocommerce_product_get_regular_price' están vinculados a la obtención del precio del producto y el precio regular del producto, respectivamente. Cada vez que WooCommerce intenta obtener el precio de un producto, ejecutará la función change_price_on_specific_days.

2. Definición de la función change_price_on_specific_days

La función change_price_on_specific_days es la que modifica el precio de los productos en función del día de la semana. Recibe dos parámetros:

  • $price: el precio actual del producto.
  • $product: el objeto del producto, que contiene todos los datos relacionados con él (incluido el ID del producto).

3. Definición de productos y precios nuevos

Aquí, se definen los IDs de productos que se desean modificar y los nuevos precios que se aplicarán. Hay tres grupos de productos:

  • Grupo 1: Productos con los IDs 343 y 252 tendrán un precio de 9.20 solo los martes.
  • Grupo 2: Productos con los IDs 392, 388, y 374 tendrán un precio de 8.70 solo los miércoles.
  • Grupo 3: Productos con los IDs 393, 390, y 378 tendrán un precio de 10.70 solo los miércoles.

4. Obteniendo el día actual

Utilizando la función date('N'), se obtiene el día de la semana en formato numérico (1 para lunes, 2 para martes, …, 7 para domingo). Esta variable se usa para determinar si se debe aplicar un precio especial en función del día.

5. Condiciones para cambiar el precio:

El código luego verifica el día actual y compara si el ID del producto está en el grupo específico que debe tener un precio especial. Las condiciones son las siguientes:

Para los productos 343 y 252 (martes)

Si el día actual es martes (2) y el producto pertenece al grupo product_ids_1, entonces se devuelve el nuevo precio de 9.20.

Para los productos 392, 388 y 374 (miércoles)

Si el día actual es miércoles (3) y el producto pertenece al grupo product_ids_2, entonces se devuelve el nuevo precio de 8.70.

Para los productos 393, 390 y 378 (miércoles)

Si el día actual es miércoles (3) y el producto pertenece al grupo product_ids_3, entonces se devuelve el nuevo precio de 10.70.

6. Retorno del precio original

Si ninguna de las condiciones anteriores se cumple, la función devuelve el precio original del producto sin modificaciones.

Resumen:

Este código permite modificar dinámicamente el precio de ciertos productos en función del día de la semana. Dependiendo del día, los productos seleccionados tienen precios especiales. Este tipo de funcionalidad es útil para promociones especiales, descuentos semanales o estrategias de precios dinámicos en una tienda WooCommerce.