Jadual Kandungan
Reaksi terhadap Mencegah Pembelian Tanpa Kebenaran dalam WooCommerce
Rumah pembangunan bahagian belakang tutorial php Bagaimanakah saya boleh menghalang pembelian produk tertentu yang tidak dibenarkan dalam WooCommerce dengan menghendaki pelanggan mempunyai bukti pembelian terdahulu?

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

Nov 14, 2024 pm 07:57 PM

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;
}

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
}

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!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara bekerja dengan tatasusunan dalam php Cara bekerja dengan tatasusunan dalam php Aug 20, 2025 pm 07:01 PM

Phparrayshandledatacollectionsefficientlyusingindexedorassociativestructures; theareCreatedWithArray () atau [], AccessedViAkeys, ModifiedByAssignment, iteratedWithForeach, danManipulatedingingingingFuntionsLikeCount ()

Huraikan corak reka bentuk pemerhati dan pelaksanaannya dalam PHP. Huraikan corak reka bentuk pemerhati dan pelaksanaannya dalam PHP. Aug 15, 2025 pm 01:54 PM

Theobserverdesignpatternenablesautomaticnotificationofdependentobjectswhenasubject'sstatechanges.1) itdefinaone-to-manydependencybetweenobjects; 2) thesubjectmaintainsalistofobserversandnotifemmoninterfoninterface;

Cara menggunakan pemboleh ubah $ _cookie dalam php Cara menggunakan pemboleh ubah $ _cookie dalam php Aug 20, 2025 pm 07:00 PM

$ _Cookieisaphpsuperglobalforaccessingcookiessentbrowser; cookiesareSetusingsetCookie () sebelum ini, readvia $ _cooKie ['name'], updatedbyresendingwithnewvalues, anddeletedbysettingexpadexpadexpoadexpadexpadexpadexpadexpadexpoadtimestamp, denganSecureStorsiredTimeShamp, denganSecureStyCoREdingB, denganSsecureStoStoStAb

Bandingkan dan kontras ciri -ciri PHP, kelas abstrak, dan antara muka dengan kes penggunaan praktikal. Bandingkan dan kontras ciri -ciri PHP, kelas abstrak, dan antara muka dengan kes penggunaan praktikal. Aug 11, 2025 pm 11:17 PM

Useinterfacestodefinecontractsforunrelatedclasses,ensuringtheyimplementspecificmethods;2.Useabstractclassestosharecommonlogicamongrelatedclasseswhileenforcinginheritance;3.Usetraitstoreuseutilitycodeacrossunrelatedclasseswithoutinheritance,promotingD

Terangkan strategi pengindeksan pangkalan data (mis., B-Tree, teks penuh) untuk aplikasi PHP yang disokong MySQL. Terangkan strategi pengindeksan pangkalan data (mis., B-Tree, teks penuh) untuk aplikasi PHP yang disokong MySQL. Aug 13, 2025 pm 02:57 PM

B-treeindexesareBestFormostPhpapplications, astheysupportequalityandrangequeries, sorting, andareidealforcolumnsusedinwhere, gabungan, ororderbyclauses;

Apa yang awam, swasta, dan dilindungi dalam PHP Apa yang awam, swasta, dan dilindungi dalam PHP Aug 24, 2025 am 03:29 AM

Ahli awam boleh diakses mengikut kehendak; 2. Ahli swasta hanya boleh diakses dalam kelas; 3. Ahli yang dilindungi boleh diakses dalam kelas dan subkelas; 4. Penggunaan rasional dapat meningkatkan keselamatan kod dan penyelenggaraan.

Bagaimana untuk mendapatkan tarikh dan masa semasa dalam PHP? Bagaimana untuk mendapatkan tarikh dan masa semasa dalam PHP? Aug 31, 2025 am 01:36 AM

Digunakan ('y-m-dh: i: s') withdate_default_timeezone_set () togetcurrentdateandtimeinphp, memastikancurateresultsbysettingthedesiredtimezonelike'america/new_york'beforecallingdate ().

Cara bekerja dengan tarikh dan masa di php Cara bekerja dengan tarikh dan masa di php Aug 20, 2025 pm 06:57 PM

USETAteTimeFordatesInphp: createWitHnewDateTime (), formatWithFormat (), ModifyViaAdd () Ormodify (), setTimeZonesWithDateTimeZone, andCompareUsingOperatorsOrsOrsOrtersOrvals.

See all articles