Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menentukan jika Pelanggan Telah Membeli Produk Tertentu dalam WooCommerce?

Bagaimanakah Saya Boleh Menentukan jika Pelanggan Telah Membeli Produk Tertentu dalam WooCommerce?

Linda Hamilton
Linda Hamiltonasal
2024-11-14 13:22:02558semak imbas

How Can I Determine if a Customer Has Purchased Specific Products in WooCommerce?

Semak sama ada Pelanggan Telah Membeli Produk Tertentu dalam WooCommerce

Masalah:

Anda perlu menentukan sama ada pelanggan mempunyai membuat pembelian produk tertentu sebelum ini (cth., "a" atau "b") dalam WooCommerce. Ini adalah perlu untuk menyekat keupayaan mereka untuk membeli produk lain (cth., "c", "d", "e") melainkan mereka telah memenuhi prasyarat yang ditentukan.

Penyelesaian:

Di bawah ialah fungsi yang boleh disesuaikan, has_bought_items(), yang menilai sama ada pelanggan semasa sebelum ini telah membeli sebarang item daripada pelbagai ID produk yang disediakan.

Kod:

function has_bought_items() {
    $bought = false;

    // Set the desired product IDs
    $prod_arr = array( '21', '67' );

    // Retrieve all customer orders
    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => get_current_user_id(),
        'post_type'   => 'shop_order',
        'post_status' => 'wc-completed'
    ) );

    foreach ( $customer_orders as $customer_order ) {
        // Compatibility for WooCommerce 3+
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        $order = wc_get_order( $order_id );

        // Iterate through customer purchases
        foreach ($order->get_items() as $item) {
            // Compatibility for WooCommerce 3+
            if ( version_compare( WC_VERSION, '3.0', '<' ) ) 
                $product_id = $item['product_id'];
            else
                $product_id = $item->get_product_id();

            // Check if any of the restricted products were purchased
            if ( in_array( $product_id, $prod_arr ) ) 
                $bought = true;
        }
    }

    // Return true if a restricted product has been purchased
    return $bought;
}

Penggunaan:

Untuk menggunakan fungsi ini, letakkannya dalam fail functions.php tema anda dan buat pengubahsuaian pada tatasusunan $prod_arr mengikut keperluan. Kemudian, anda boleh menyepadukannya ke dalam templat WooCommerce anda untuk memaparkan atau melumpuhkan butang tambah ke troli secara bersyarat berdasarkan sejarah pembelian pelanggan.

Sebagai contoh, dalam templat add-to-cart.php, anda boleh gunakan kod berikut:

if ( !has_bought_items() &amp;&amp; in_array( $product_id, $restricted_products ) ) { 
    // Make add-to-cart button inactive (disabled styling)
    // Display explicit message if desired
} else { 
    // Display normal Add-To-Cart button
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan jika Pelanggan Telah Membeli Produk Tertentu dalam WooCommerce?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn