Bagaimanakah saya boleh menghalang pembelian produk tertentu yang tidak dibenarkan dalam WooCommerce dengan menghendaki pelanggan mempunyai bukti pembelian terdahulu?

DDD
Lepaskan: 2024-11-14 19:57:02
asal
531 orang telah melayarinya

How can I prevent unauthorized purchases of specific products in WooCommerce by requiring customers to have proof of a prior purchase?

Reaksi terhadap Mencegah Pembelian Tanpa Kebenaran dalam WooCommerce

Masalah:

Peniaga menghadapi cabaran biasa untuk menghalang pembelian tanpa kebenaran untuk tertentu produk. Dalam kes ini, pelanggan mesti mempunyai bukti pembelian terdahulu untuk produk "a" atau "b" untuk mendapatkan akses kepada produk "c," "d" dan "e."

Penyelesaian:

Dalam panduan komprehensif ini, kami akan melengkapkan anda dengan fungsi tersuai yang menentukan sama ada pelanggan telah membeli produk prasyarat sebelum membolehkan akses kepada terhad item.

function has_bought_items() {
    $bought = false;

    // Replace the numbers with your specific target product IDs
    $prod_arr = array( '21', '67' );

    // Gather all customer orders
    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => get_current_user_id(),
        'post_type'   => 'shop_order', // WooCommerce orders post type
        'post_status' => 'wc-completed' // Only orders with "completed" status
    ) );

    // Process each customer order
    foreach ( $customer_orders as $customer_order ) {
        // Handle WooCommerce version compatibility
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        $order = wc_get_order( $customer_order );

        // Iterate through products bought in the order
        foreach ($order->get_items() as $item) {
            // Product ID retrieval based on WooCommerce version
            if ( version_compare( WC_VERSION, '3.0', '<' ) ) 
                $product_id = $item['product_id'];
            else
                $product_id = $item->get_product_id();

            // Condition: Check if required product ID exists in the array of purchased products
            if ( in_array( $product_id, $prod_arr ) ) 
                $bought = true;
        }
    }

    // Return true if the specific products have been purchased by the customer
    return $bought;
}
Salin selepas log masuk

Penggunaan:

Laksanakan fungsi dalam templat WooCommerce anda yang memanipulasi butang tambah ke troli produk, seperti:

  • Gelung/add-to-cart.php untuk kedai halaman
  • Folder produk tunggal/tambah ke troli untuk halaman produk individu

Sebagai contoh, dalam templat butang tambah ke troli untuk halaman kedai (gelung/tambah -to-cart.php):

// Replace numbers with restricted product IDs
$restricted_products = array( '20', '32', '75' );

// WooCommerce compatibility adjustment
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

// Restricted product, inactive add-to-cart button
if ( !has_bought_items() && in_array( $product_id, $restricted_products ) ) { 

    // Display an inactive add-to-cart button with a custom message

// Non-restricted product or allowed product after specific purchase
} else { 

    // Regular add-to-cart button code
}
Salin selepas log masuk

Contoh ini melumpuhkan butang tambah ke troli secara dinamik untuk produk tertentu sehingga pelanggan mempunyai pembelian yang terbukti sebelum item yang diperlukan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menghalang pembelian produk tertentu yang tidak dibenarkan dalam WooCommerce dengan menghendaki pelanggan mempunyai bukti pembelian terdahulu?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan