Я делал похожую вещь. В зависимости от количества товара в корзине менял цену за единицу. Я примерно опишу что и где нужно сделать для этого.
1. Шагом это надо создать произвольные поля для товаров с различными ценами - у Вас это вроде бы сделано. Сам я использую плагин ACF для добавления произвольных полей.
2. Надо в functions.php создать функцию, которое будет возвращать какую цену надо выводить. Пример функцииb:
function get_type_price(){
$date = date('d.m.Y');
if ($date == 'что то там')
return 2.
if ($date == 'что то там')
return 3.
return 1;
}
3. Дальше есть как минимум 2 варианта развития: простой и сложный.
Сложный (более гибкий):
- нужно поменять во всех шаблонах WC вывод цены. Добавить условие типа:
if (get_type_price() == 1) //делать что то
if (get_type_price() == 2) //делать что то
if (get_type_price() == 3) //делать что то
- нужно разобраться как работает class-wc-cart.php и переработать его в свою пользу:)) Суть в том что бы корзина правильно считала скидки, доставки. Что бы отправлялись письма с правильным списком товаров и т.д.
т.е. меняя просто вывод цены в шаблоне не достаточно.
Простой (подходит для Ваших условий)
- по умолчанию у товара WC есть свои произвольные поля цены: _price, _regular_price и т.д.
Нужно добавить условие типа
if (get_type_price() == 2) {
update_post_meta(get_the_ID(), 'price', get_post_meta(get_the_ID(), 'second_price', true));
}