Делать это таким образом не очень хорошая идея:
- Как вы будете управлять обновленными продуктами, чтобы избежать многократных последовательных обновлений цен.
- Используя этот способ, это просто убьет ваш веб-сайт (для многих процессов)
- Ваши продукты не будут продаваться, когда вы обновите активную цену
- Вы не сможете вернуться к первоначальной ценекогда период закончится.
Также ваш код полон ошибок, касающихся WC_Products в Woocommerce и расчетов даты.И последнее, когда вы пишете код, лучше называть переменные и функции на английском языке, комментировать ваш код на английском языке, так как любой может его понять.
Вместо этого попробуйте следующее, которое будет работать для простых продуктов, отображаяцена продажи соответствующих продуктов, когда ваши условия соответствуют (дата и пользовательская цена):
add_filter( 'woocommerce_product_get_price', 'conditional_product_sale_price', 20, 2 );
add_filter( 'woocommerce_product_get_sale_price', 'conditional_product_sale_price', 20, 2 );
function conditional_product_sale_price( $price, $product ) {
if( is_admin() ) return $price;
$new_price = get_post_meta( $product->get_id(), 'iadi_price', true ); //new sale price
$date = get_post_meta( $product->get_id(), 'iadi_date', true ); // date
if( ! empty($date) && ! empty($new_price) ) {
$date_time = (int) strtotime($date); // Convert date in time
$now_time = (int) strtotime("now"); // Now time in seconds
$one_day = 86400; // One day in seconds
// Calculate the remaining days
$remaining_days = floor( ( $date_time - $now_time ) / $one_day );
if( $remaining_days >= 0 && $remaining_days < 4 )
$price = $new_price;
}
return $price;
}
Код находится в файле function.php вашей активной дочерней темы (или активной темы).Проверено и работает.
