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
Lepaskan: 2024-11-14 13:22:02
asal
537 orang telah melayarinya

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;
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan