Rumah > Soal Jawab > teks badan
Laman web menyewa bilik mengikut jam.
Saya menggunakan pemalam "WooCommerce Bookings And Appointments" di tapak web saya. URL pemalam ialah https://www.pluginhive.com/product/woocommerce-booking-and-appointments/
Pemalam menyokong peraturan kos dan saya boleh mengawal harga sepanjang masa. Tetapi saya tidak dapat mencari penyelesaian untuk senario khusus saya.
Jika pelanggan memilih masa antara 10 malam dan 10 pagi.
Dan minimum masa pesananlebih daripada 6 jam.
Kemudian harga akan menjadi 6 jam .
Tempoh tempahan ditetapkan dalam tetapan umum, 30 minit setiap sesi.
Tetapan yuran tempahan: 3 jam harga minimum ialah $300 (kami menggunakan peraturan dari blok 1 hingga 6).
Kadar bilik asas: $300 (pelanggan boleh menempah kurang dari 3 jam, tetapi harga minimum 3 jam).
Kos Sekatan: $50 (bermula dengan blok nombor 7).
Contoh adegan:
Jika pelanggan memesan 4 jam dari 11 malam hingga 3 pagi (jumlah blok: 8), harga akan menjadi harga biasa: $400 (kos asas: $300 + $100 [2 blok, $50 setiap satu])
Jika pelanggan memesan 5 jam dari 11 malam hingga 4 pagi (jumlah blok: 10), harga akan menjadi harga biasa: $500
Jika pelanggan memesan 6 jam dari 11 malam hingga 5 pagi (jumlah blok: 12), harga akan menjadi harga biasa: $600
Jika pelanggan memesan 7 jam dari 11 malam hingga 6 pagi (jumlah blok: 14), harganya ialah $600 dan bukannya $700
Jika pelanggan memesan 8 jam dari 11 malam hingga 7 pagi (jumlah blok: 16), harganya ialah $600 dan bukannya $800
Jika pelanggan memesan 6 jam dari 9 malam hingga 3 pagi (jumlah blok: 12), harganya ialah $600
Jika pelanggan memesan 9 malam hingga 4 pagi selama 7 jam (jumlah blok: 14), harganya ialah $600 dan bukannya $700
Jika pelanggan memesan 9 malam hingga 5 pagi selama 8 jam (jumlah blok: 16), harganya ialah $600 dan bukannya $800
Jika pelanggan memesan dalam masa 14 jam dari 9 malam hingga 11 pagi (jumlah blok: 28), harganya ialah $800 dan bukannya $1400
Saya cuba mengikuti artikel ini untuk menetapkan harga berdasarkan tempoh Tempahan WooCommerce dan membuat pelarasan pada masalah saya, tetapi tidak berjaya.
P粉2370294572024-03-20 22:05:37
Saya telah mencipta coretan kod tetapi tidak nampak sebarang perubahan. Semak pautan ini ke pratonton langsung
<?php // Calculates price based on selected booking start time and minimum order hours add_action( 'woocommerce_before_calculate_totals', 'cwpai_booking_price_calculation', 10, 1 ); function cwpai_booking_price_calculation( $cart ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) { return; } foreach ( $cart->get_cart() as $cart_item ) { $product_id = $cart_item['product_id']; // Get start time and minimum order hours $start_time = strtotime($_POST['wc_bookings_field_start_date'][0] . ' ' . $_POST['wc_bookings_field_start_time'][0]); $minimum_hours = get_post_meta( $product_id, '_minimum_duration', true ); // Check if start time and minimum order hours meet condition if ( date('H:i', $start_time) >= '22:00' && date('H:i', $start_time) <= '10:00' && $minimum_hours >= 6 ) { // Calculate maximum cost for 6 hours $max_cost = $cart_item['data']->get_price() * 6; // Get current cost based on duration $duration = WC_Bookings_Cart::calculate_booking_duration( $cart_item['booking'], true, true ); $current_cost = $duration['cost']; // Update cost to maximum cost for 6 hours if ( $current_cost > $max_cost ) { $cart_item['data']->set_price( $max_cost ); } } } } // Update post meta when product is saved add_action( 'woocommerce_process_product_meta', 'cwpai_update_booking_meta' ); function cwpai_update_booking_meta( $post_id ) { // Only run for bookable products if ( get_post_meta( $post_id, '_wc_booking_type', true ) !== 'booking' ) { return; } // Get minimum order hours $minimum_hours = isset( $_POST['_minimum_duration'] ) ? absint( $_POST['_minimum_duration'] ) : 0; // Update post meta with new booking cost if ( $minimum_hours >= 6 ) { $max_cost = get_post_meta( $post_id, '_price', true ) * 6; update_post_meta( $post_id, '_new_booking_cost', $max_cost ); } else { delete_post_meta( $post_id, '_new_booking_cost' ); } } // Modify product costs to new booking cost add_filter( 'woocommerce_product_get_price', 'cwpai_modify_product_costs', 10, 2 ); add_filter( 'woocommerce_product_get_regular_price', 'cwpai_modify_product_costs', 10, 2 ); function cwpai_modify_product_costs( $price, $product ) { $new_booking_cost = get_post_meta( $product->get_id(), '_new_booking_cost', true ); if ( $new_booking_cost ) { $price = $new_booking_cost; } return $price; }