Вы можете использовать один из следующих способов:
1-й способ - Начиная с WooCommerce 3:
add_action( 'woocommerce_admin_process_product_object', array($this, 'save_wc_product_meta_data') );
public function save_wc_product_meta_data($product) {
if( isset( $_POST['_sale_price'] ) && $_POST['_sale_price'] >= 0 ){
$product->set_date_on_sale_from( strtotime(date('Y-m-d')));
$product->set_date_on_sale_to( strtotime( date('Y-m-d', strtotime('+15 days'))));
}
}
2-й способ - старый способ:
add_action( 'woocommerce_process_product_meta', array($this, 'save_wc_product_meta_data') );
public function save_wc_product_meta_data($product_id) {
if( get_post_meta($product_id, '_sale_price', true) >= 0 ){
update_post_meta($product_id, '_sale_price_dates_from', strtotime(date('Y-m-d')));
update_post_meta($product_id, '_sale_price_dates_to', strtotime( date('Y-m-d', strtotime('+15 days'))));
}
}
Код входит в функции. php файл вашей активной дочерней темы (или активной темы). Оба способа работают.
Дополнение:
Чтобы это произошло , только когда статус публикации установлен на «publi sh» , вы можете добавить следующее к существующим условиям оператора IF
:
&& isset($_POST['post_status']) && $_POST['post_status'] === 'publish'