Bagaimana untuk Mengawal Pembelian Produk Berdasarkan Pesanan Terdahulu dalam WooCommerce?

Barbara Streisand
Lepaskan: 2024-11-16 12:46:02
asal
378 orang telah melayarinya

How to Control Product Purchases Based on Previous Orders in WooCommerce?

Mengawal Pembelian Produk Berdasarkan Pesanan Sebelumnya dalam WooCommerce

Dalam WooCommerce, anda mungkin menghadapi senario di mana produk tertentu hanya boleh didapati untuk pembelian jika produk tertentu telah dibeli sebelum ini . Ini boleh mencipta sistem pembelian berperingkat atau memastikan pelanggan memenuhi keperluan tertentu sebelum membuka kunci akses kepada item tertentu.

Melaksanakan Pemeriksaan Bersyarat

Untuk mencapai semakan bersyarat ini, kami boleh menggunakan fungsi tersuai yang menentukan sama ada pengguna semasa telah membeli produk tertentu pada masa lalu. Berikut ialah contoh fungsi yang boleh anda gunakan:

function has_bought_items() {
    $bought = false;

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

    // Fetch customer orders
    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => get_current_user_id(),
        'post_type'   => 'shop_order', // WC orders post type
        'post_status' => 'wc-completed' // Completed orders only
    ) );

    foreach ( $customer_orders as $customer_order ) {
        // Get order ID and data
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        $order = wc_get_order( $order_id );

        // Iterate through purchased products
        foreach ($order->get_items() as $item) {
            // Get product ID
            if ( version_compare( WC_VERSION, '3.0', '<' ) )
                $product_id = $item['product_id'];
            else
                $product_id = $item->get_product_id();

            // Check if target product ID is purchased
            if ( in_array( $product_id, $prod_arr ) )
                $bought = true;
        }
    }

    // Return result
    return $bought;
}
Salin selepas log masuk

Menggunakan Pemeriksaan Bersyarat

Setelah anda menentukan fungsi bersyarat, anda boleh menyepadukannya ke dalam templat WooCommerce anda untuk mengawal keterlihatan dan kefungsian produk berdasarkan sama ada pembelian khusus telah dibuat atau tidak. Contohnya, anda boleh menggunakan kod berikut dalam templat gelung/add-to-cart.php pada halaman kedai:

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

// Get current product ID
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

// If not already purchased, disable add-to-cart button
if ( !has_bought_items() &amp;&amp; in_array( $product_id, $restricted_products ) ) {
    echo '<a class="button greyed_button">' . __("Disabled", "your_theme_slug") . '</a>';
    echo '<br><span class="greyed_button-message">' . __("Your message goes here…", "your_theme_slug") . '</span>';
} else {
    // Display regular add-to-cart button
    echo apply_filters( 'woocommerce_loop_add_to_cart_link',
        sprintf( '<a rel="nofollow" href="%s" data-quantity="%s" data-product_id="%s" data-product_sku="%s" class="%s">%s</a>',
            esc_url( $product->add_to_cart_url() ),
            esc_attr( isset( $quantity ) ? $quantity : 1 ),
            esc_attr( $product_id ),
            esc_attr( $product->get_sku() ),
            esc_attr( isset( $class ) ? $class : 'button' ),
            esc_html( $product->add_to_cart_text() )
        ),
    $product );
}
Salin selepas log masuk

Kod ini akan memaparkan butang tambah ke troli yang dilumpuhkan dan tersuai mesej untuk produk terhad yang belum dibeli oleh pelanggan. Ia juga akan membolehkan pelanggan membeli produk yang telah mereka beli.

Atas ialah kandungan terperinci Bagaimana untuk Mengawal Pembelian Produk Berdasarkan Pesanan Terdahulu 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