Rumah >Tutorial CMS >WordTekan >Menetapkan keperluan minimum checkout dalam WooCommerce
Kod berikut telah diuji dalam versi terkini yang tersedia untuk WordPress (3.9.1) dan WooCommerce (2.1.12). Kami akan menggunakan data dummy yang disediakan untuk WooCommerce apabila anda memasang plugin. Kod ini harus masuk dalam fail fungsi.php tema anda dan sangat mengulas supaya lebih mudah untuk diikuti dan/atau mengubah suai jika diperlukan.
Kami akan menggunakan tindakan woocommerce_check_cart_items yang disediakan oleh WooCommerce untuk menjalankan fungsi kami dan melaksanakan kod kami. Lawati pautan berikut untuk senarai lengkap tindakan dan penapis WooCommerce, juga dikenali sebagai cangkuk.
Ia sering berguna untuk menyekat pelanggan anda daripada menyelesaikan proses checkout tanpa memenuhi keperluan berat badan minimum. Keperluan berat minium boleh membantu menjadikan kos penghantaran anda lebih mudah diurus, dan proses penghantaran lebih efisien. Jangan lupa untuk menukar keperluan berat badan minimum untuk apa sahaja yang paling sesuai untuk anda, dan ingat bahawa berat badan dikira dalam unit berat yang telah anda tetapkan di bawah WOOCommerce -> Tetapan -> Produk.
<span>// Set a minimum weight requirement before checking out </span><span>add_action( 'woocommerce_check_cart_items', 'spyr_set_weight_requirements' ); </span><span>function spyr_set_weight_requirements() { </span> <span>// Only run in the Cart or Checkout pages </span> <span>if( is_cart() || is_checkout() ) { </span> <span>global $woocommerce; </span> <span>// Set the minimum weight before checking out </span> <span>$minimum_weight = 25; </span> <span>// Get the Cart's content total weight </span> <span>$cart_contents_weight = WC()->cart->cart_contents_weight; </span> <span>// Compare values and add an error is Cart's total weight </span> <span>// happens to be less than the minimum required before checking out. </span> <span>// Will display a message along the lines of </span> <span>// A Minimum Weight of 25kg is required before checking out. (Cont. below) </span> <span>// Current cart weight: 12.5kg </span> <span>if( $cart_contents_weight < $minimum_weight ) { </span> <span>// Display our error message </span> <span>wc_add_notice( sprintf('<strong>A Minimum Weight of %s%s is required before checking out.</strong>' </span> <span>. '<br />Current cart weight: %s%s', </span> <span>$minimum_weight, </span> <span>get_option( 'woocommerce_weight_unit' ), </span> <span>$cart_contents_weight, </span> <span>get_option( 'woocommerce_weight_unit' ), </span> <span>get_permalink( wc_get_page_id( 'shop' ) ) </span> <span>), </span> <span>'error' ); </span> <span>} </span> <span>} </span><span>}</span>
Satu lagi senario yang sah adalah menetapkan bilangan produk minimum yang perlu dipesan pada satu masa sebelum membenarkan pelanggan membayar sepenuhnya pesanannya dan dihantar. Tukar '20' kepada apa sahaja yang paling sesuai untuk keperluan anda. Seperti dalam contoh terdahulu, anda ingin memastikan bahawa anda hanya menjalankan kod ini pada halaman kereta dan checkout. Ini adalah kita menggunakan is_cart () dan is_checkout (), yang kembali 'benar' setiap kali kita berada di kedua -dua halaman tertentu. Ketahui lebih lanjut mengenai Tag Woocommerce Conditions.
<span>// Set a minimum number of products requirement before checking out </span><span>add_action( 'woocommerce_check_cart_items', 'spyr_set_min_num_products' ); </span><span>function spyr_set_min_num_products() { </span> <span>// Only run in the Cart or Checkout pages </span> <span>if( is_cart() || is_checkout() ) { </span> <span>global $woocommerce; </span> <span>// Set the minimum number of products before checking out </span> <span>$minimum_num_products = 20; </span> <span>// Get the Cart's total number of products </span> <span>$cart_num_products = WC()->cart->cart_contents_count; </span> <span>// Compare values and add an error is Cart's total number of products </span> <span>// happens to be less than the minimum required before checking out. </span> <span>// Will display a message along the lines of </span> <span>// A Minimum of 20 products is required before checking out. (Cont. below) </span> <span>// Current number of items in the cart: 6 </span> <span>if( $cart_num_products < $minimum_num_products ) { </span> <span>// Display our error message </span> <span>wc_add_notice( sprintf( '<strong>A Minimum of %s products is required before checking out.</strong>' </span> <span>. '<br />Current number of items in the cart: %s.', </span> <span>$minimum_num_products, </span> <span>$cart_num_products ), </span> <span>'error' ); </span> <span>} </span> <span>} </span><span>}</span>
Menetapkan kuantiti minimum bagi setiap produk adalah keperluan umum untuk kedai WooCommerce, khususnya jika anda menjual borong. Menetapkan kuantiti minimum akan menyekat pelanggan anda daripada membeli produk tertentu dalam kuantiti yang lebih rendah. Bagi kami untuk menyemak kuantiti minimum, kami perlu gelung melalui setiap produk dalam kereta dan menyemaknya terhadap kuantiti minimum kami bagi setiap keperluan produk yang ditetapkan.
Untuk menetapkan sekatan ini, anda perlu membuat array yang memegang peraturan/sekatan anda di dalam array lain. Berhati -hati apabila mengedit array ini, dan pastikan semua kod dimasukkan dengan tepat untuk mengelakkan kesilapan dan keputusan yang tidak dijangka. Format yang perlu anda gunakan adalah seperti berikut:
<span>// Product Id and Min. Quantities per Product </span><span>// id = Product ID </span><span>// min = Minimum quantity </span><span>$product_min_qty = array( </span> <span>array( 'id' => 47, 'min' => 100 ), </span> <span>array( 'id' => 37, 'min' => 100 ), </span> <span>array( 'id' => 34, 'min' => 100 ), </span> <span>array( 'id' => 31, 'min' => 100 ), </span><span>);</span>
di sinilah keajaiban berlaku.
<span>// Set minimum quantity per product before checking out </span><span>add_action( 'woocommerce_check_cart_items', 'spyr_set_min_qty_per_product' ); </span><span>function spyr_set_min_qty_per_product() { </span> <span>// Only run in the Cart or Checkout pages </span> <span>if( is_cart() || is_checkout() ) { </span> <span>global $woocommerce; </span> <span>// Product Id and Min. Quantities per Product </span> <span>$product_min_qty = array( </span> <span>array( 'id' => 47, 'min' => 100 ), </span> <span>array( 'id' => 37, 'min' => 100 ), </span> <span>array( 'id' => 34, 'min' => 100 ), </span> <span>array( 'id' => 31, 'min' => 100 ), </span> <span>); </span> <span>// Will increment </span> <span>$i = 0; </span> <span>// Will hold information about products that have not </span> <span>// met the minimum order quantity </span> <span>$bad_products = array(); </span> <span>// Loop through the products in the Cart </span> <span>foreach( $woocommerce->cart->cart_contents as $product_in_cart ) { </span> <span>// Loop through our minimum order quantities per product </span> <span>foreach( $product_min_qty as $product_to_test ) { </span> <span>// If we can match the product ID to the ID set on the minimum required array </span> <span>if( $product_to_test['id'] == $product_in_cart['product_id'] ) { </span> <span>// If the quantity required is less than than the quantity in the cart now </span> <span>if( $product_in_cart['quantity'] < $product_to_test['min'] ) { </span> <span>// Get the product ID </span> <span>$bad_products[$i]['id'] = $product_in_cart['product_id']; </span> <span>// Get the Product quantity already in the cart for this product </span> <span>$bad_products[$i]['in_cart'] = $product_in_cart['quantity']; </span> <span>// Get the minimum required for this product </span> <span>$bad_products[$i]['min_req'] = $product_to_test['min']; </span> <span>} </span> <span>} </span> <span>} </span> <span>// Increment $i </span> <span>$i++; </span> <span>} </span> <span>// Time to build our error message to inform the customer </span> <span>// About the minimum quantity per order. </span> <span>if( is_array( $bad_products) && count( $bad_products ) > 1 ) { </span> <span>// Lets begin building our message </span> <span>$message = '<strong>A minimum quantity per product has not been met.</strong><br />'; </span> <span>foreach( $bad_products as $bad_product ) { </span> <span>// Append to the current message </span> <span>$message .= get_the_title( $bad_product['id'] ) .' requires a minimum quantity of ' </span> <span>. $bad_product['min_req'] </span> <span>.'. You currently have: '. $bad_product['in_cart'] .'.<br />'; </span> <span>} </span> <span>wc_add_notice( $message, 'error' ); </span> <span>} </span> <span>} </span><span>}</span>
Terakhir tetapi tidak kurang, anda mungkin mahu menetapkan jumlah dolar minimum yang mesti dibelanjakan sebelum pelanggan anda dibenarkan untuk memeriksa. Sila ambil perhatian bahawa kami mengira jumlah nilai menggunakan subtotal, sebelum penghantaran dan cukai ditambah kepada jumlah pesanan akhir.
<span>// Set a minimum dollar amount per order </span><span>add_action( 'woocommerce_check_cart_items', 'spyr_set_min_total' ); </span><span>function spyr_set_min_total() { </span> <span>// Only run in the Cart or Checkout pages </span> <span>if( is_cart() || is_checkout() ) { </span> <span>global $woocommerce; </span> <span>// Set minimum cart total </span> <span>$minimum_cart_total = 10; </span> <span>// Total we are going to be using for the Math </span> <span>// This is before taxes and shipping charges </span> <span>$total = WC()->cart->subtotal; </span> <span>// Compare values and add an error is Cart's total </span> <span>// happens to be less than the minimum required before checking out. </span> <span>// Will display a message along the lines of </span> <span>// A Minimum of 10 USD is required before checking out. (Cont. below) </span> <span>// Current cart total: 6 USD </span> <span>if( $total <= $minimum_cart_total ) { </span> <span>// Display our error message </span> <span>wc_add_notice( sprintf( '<strong>A Minimum of %s %s is required before checking out.</strong>' </span> <span>.'<br />Current cart\'s total: %s %s', </span> <span>$minimum_cart_total, </span> <span>get_option( 'woocommerce_currency'), </span> <span>$total, </span> <span>get_option( 'woocommerce_currency') ), </span> <span>'error' ); </span> <span>} </span> <span>} </span><span>}</span>
Adakah anda dapat melihat, WooCommerce membolehkan anda menggunakan tindakan dan penapis untuk menukar proses checkout biasa. Semua kedai adalah berbeza dan dapat menetapkan sekatan ini apabila diperlukan adalah penting. Bagi kami pemaju, yang perlu menyelesaikan tugas seperti ini, mengetahui bagaimana untuk melakukannya adalah penting.
Terima kasih kerana membaca, komen atau cadangan tentang bagaimana untuk memperbaiki kod sentiasa dialu -alukan. Jika anda mempunyai idea untuk pengubahsuaian WooCommerce tertentu, jangan malu dan hantarkan pautan ke dalam komen untuk perbincangan.
Adakah mungkin untuk menetapkan kuantiti minimum dan maksimum untuk variasi produk?
Ya, adalah mungkin untuk menetapkan kuantiti minimum dan maksimum untuk variasi produk dalam WooCommerce. Ini boleh dilakukan dari bahagian variasi data produk. Untuk setiap variasi, anda boleh menetapkan 'kuantiti minimum' dan 'kuantiti maksimum'.Atas ialah kandungan terperinci Menetapkan keperluan minimum checkout dalam WooCommerce. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!