Şartlar ilavelerini siteye ekle Bilgisayar parçaları satan bir websitemiz var, Bu sitenin bir bölümünde "PC'nizi bir araya getirin" bölümünde kullanıcıların parçalarını seçmelerine (anakart - işlemci - ram, vb.) Izin veriyor ve fiyatını ödüyoruz. monte edilen ürünü al, her şey gayet iyi çalışıyor, ancak sepete bir "montaj ücreti" ekleme seçeneğine ihtiyacı var. Bu ücret, sadece "PC'nizi bir araya getirin" sihirbaz sürecine girerse eklenir. Bu kodu kullanıyorum ama tüm arabalara ekler, yani şartlı değil. Koşullar:
public function calculate_fees($fees){
global $woocommerce;
$cart_subtotal = $woocommerce->cart->subtotal;
$additional_fee = 0; // Additional fee
$additional_fee_text = __('Assembling fee : ', 'dornaweb');
if($_POST['assembly_fee'] === 'flat_assembly_rate'){
$additional_fee = intval(dw_option('flat_assembly_rate')) ?: 0; // flat assembly fee
$additional_fee_text .= __(' (assembly, no warranty)', 'dornaweb');
} elseif($_POST['assembly_fee'] === 'percentage_assembly_fee') {
$additional_fee = dw_option('percentage_assembly_fee') ? ((intval(dw_option('percentage_assembly_fee'))/100) * $cart_subtotal) : 0; // percentage assembly fee
$additional_fee_text .= __(' (assembly + one year warranty)', 'dornaweb');
}
$woocommerce->cart->add_fee($additional_fee_text, intval($additional_fee), 1);
}
ve üzerinde
constructor
:
add_action('woocommerce_cart_calculate_fees', array($this, 'calculate_fees'));
beni (PC monte) Bu sihirbaz hakkında biraz daha açıklayalım: Bu bölümdeki 3 adımlar var ,
- adım 1: kullanıcı mevcut ürünlerinden Ana kart, Ram, Cpu vb. Seçer.
- adım 2: listesini görür ve bazı ürünlerin miktarını (Ram gibi )
- 3. adımı değiştirebilir: Kullanıcı ücretini montaj için
sayfanın dibinde seçebileceğiniz bazı seçenekleri ile nihai liste (görür 1. hiçbir montaj, sadece bir yıl garanti ile satın alma 2. bir garanti ile montaj 3) hiçbir garanti ile montaj ve onlar "gönder" vurduğunuzda, seçilen tüm ürünler sepete eklenir, bu biz eklemek gerekir Ücret, bu ücret sadece müşteri bu ilerlemeyi kullanıyorsa eklenmelidir. i sepeti sayfasına gittiğinizde sepetine ürün eklerken
Ayrıca ücretleri ekleyerek çalıştı ama bu şekilde çalışmıyor, hiçbir ek ücret Bu çalıştı bu şekilde
/* User chooses list of products (mainboard, ram, ...) and can choose quantity of each product
and also can choose whether he/she wants to get an assembled computer
or just wants to buy the products individually,
then when he/she hits submit products get added to cart all together
in this step assembling fee should be added and calculated in cart total */
if(!empty($_POST['action']) && $_POST['action'] == 'add'){
/**
* Add each product to cart based on user choice
*/
foreach($_POST['products'] as $product_id => $data) {
WC()->cart->add_to_cart($product_id, $data['qty']);
}
/**
* Add additional fees
*/
WC()->cart->add_fee('Assembling fee', 10); // 10 is an example , the fee differs depending on user choice (no assemble:0, assemlby+warranty:5% of the cart subtotal, assembly+no warranty: a flat fee eg. 20$)
WC()->cart->calculate_fees();
/**
* Redirect to cart
*/
wp_safe_redirect(WC()->cart->get_cart_url());
}
@LoicTheAztec SO soruları hakkındaki tartışmaları yerinde tutmak, böylece diğer kullanıcıların faydalanabilmesi daha iyidir. –
Montaj ile ilgili bilgileri oturumda saklayın, herhangi bir yerde tüm oturumda montaj ücreti eklemek isteyip istemediğinizi belirlemek için bu değeri kullanın. –