Woocommerce Tukar harga melalui cangkuk (atau cara lain) dengan pemalam "Tempahan dan Janji Temu Woocommerce" daripada luginhive.com
P粉409742142
P粉409742142 2024-03-19 23:51:59
0
1
325

Latar belakang umum laman web saya

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.

Matlamat saya adalah untuk menambah peraturan berikut:

Jika pelanggan memilih masa antara 10 malam dan 10 pagi.

Dan minimum masa pesananlebih daripada 6 jam.

Kemudian harga akan menjadi 6 jam .

Harga rumah model

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

  • 9 malam-10 malam = $100
  • 10 malam-4 pagi = $600

Jika pelanggan memesan 9 malam hingga 5 pagi selama 8 jam (jumlah blok: 16), harganya ialah $600 dan bukannya $800

  • 9 malam-10 malam = $100
  • 10 malam hingga 5 pagi = $600(Peraturan dicetuskan kerana pesanan melebihi 6 jam)

Jika pelanggan memesan dalam masa 14 jam dari 9 malam hingga 11 pagi (jumlah blok: 28), harganya ialah $800 dan bukannya $1400

  • 9 malam-10 malam = $100
  • 10 malam hingga 10 pagi = $600 (Peraturan dicetuskan kerana pesanan lebih lama daripada 6 jam)
  • 10 pagi-11 pagi = $100

Saya cuba mengikuti artikel ini untuk menetapkan harga berdasarkan tempoh Tempahan WooCommerce dan membuat pelarasan pada masalah saya, tetapi tidak berjaya.

P粉409742142
P粉409742142

membalas semua(1)
P粉237029457

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;
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!