Со времени выпуска Woocommerce 3, CRUD объекты были реализованы.Это относится к объекту WC_Product
, а также к плагину Woocommerce Bookings.Таким образом, вы можете использовать доступные методы Getters и setters, так как свойства больше не доступны (в большинстве случаев).
Следующий код использует этот лучший способ (Стоимость устанавливается в продукте без необходимости обновлениястраницы) :
add_action( 'woocommerce_process_product_meta_booking', 'modify_bookable_product_base_cost', 100, 1 );
function modify_bookable_product_base_cost( $product_id ){
// Get an instance of the WC_Product object
$product = wc_get_product( $product_id );
// We check that we have a block cost before
if ( $product->get_block_cost() > 0 ){
// Calculation
$new_booking_cost = ( $product->get_block_cost() * 0.6 ) + 100;
$product->set_cost( $new_booking_cost ); // Set the new calculated cost in the product
$product->save(); // Save the product data
}
}
Код помещается в файл function.php вашей активной дочерней темы (активной темы).Проверено и работает.