2017-03-09 135 views
0

我試圖根據WooCommerce小計顯示一個特定的附加運輸保險產品。我的代碼ab-end在第10行。我認爲hide/show過程需要一個包裝器,但我不確定如何對其進行編碼。WooCommerce根據小計顯示額外的購物車字段

他們給我一個建議,但我不知道如何實現它?

的建議: 它看起來像你想使用混合PHP /基礎上隱藏或顯示JavaScript的方法領域。 相反,我建議以大於10的優先級(如20)連接woocommerce_checkout_fields - 這可讓您從$checkout_fields['add_ons']陣列中獲取所有字段,然後您可以根據購物車小計「取消」其中的一些字段(通過PHP而不是javascript來獲取它們更容易)。

任何人都可以幫忙...提前謝謝你噸。 我原來的嘗試吧......

<?php 
function wc_shipping_insurance_chooser() { 
// Set variables 
$fifty = 50; 
$one_hundred = 100; 
$two_hundred = 200; 

if (WC()->cart->total >$fifty && WC()->cart->total <$one_hundred) { 
    If(is_cart()) { 
     // Show Insurance cost for $50 - $100 
     $('#wc_checkout_add_ons_10_field').show(); 
     $('#wc_checkout_add_ons_11_field').hide(); 
     $('#wc_checkout_add_ons_12_field').hide(); 
     $('#wc_checkout_add_ons_13_field').hide(); 
     $('#wc_checkout_add_ons_14_field').hide(); 
     $('#wc_checkout_add_ons_15_field').hide(); 
    } else { 
     $('#wc_checkout_add_ons_10_field').hide(); 
     $('#wc_checkout_add_ons_11_field').hide(); 
     $('#wc_checkout_add_ons_12_field').hide(); 
     $('#wc_checkout_add_ons_13_field').hide(); 
     $('#wc_checkout_add_ons_14_field').hide(); 
     $('#wc_checkout_add_ons_15_field').hide(); 
    } 

} elseif (WC()->cart->total >$one_hundred && WC()->cart->total <$two_hundred) { 
    If(is_cart()) { 
     // Show Insurance cost for $100-$199 
     $('#wc_checkout_add_ons_10_field').hide(); 
     $('#wc_checkout_add_ons_11_field').show(); 
     $('#wc_checkout_add_ons_12_field').hide(); 
     $('#wc_checkout_add_ons_13_field').hide(); 
     $('#wc_checkout_add_ons_14_field').hide(); 
     $('#wc_checkout_add_ons_15_field').hide(); 
    } else { 
     $('#wc_checkout_add_ons_10_field').hide(); 
     $('#wc_checkout_add_ons_11_field').hide(); 
     $('#wc_checkout_add_ons_12_field').hide(); 
     $('#wc_checkout_add_ons_13_field').hide(); 
     $('#wc_checkout_add_ons_14_field').hide(); 
     $('#wc_checkout_add_ons_15_field').hide(); 
    } 


    } else { 
     $('#wc_checkout_add_ons_10_field').hide(); 
     $('#wc_checkout_add_ons_11_field').hide(); 
     $('#wc_checkout_add_ons_12_field').hide(); 
     $('#wc_checkout_add_ons_13_field').hide(); 
     $('#wc_checkout_add_ons_14_field').hide(); 
     $('#wc_checkout_add_ons_15_field').hide(); 
    } 
} 

add_action('woocommerce_checkout_process', 'wc_shipping_insurance_chooser'); 
add_action('woocommerce_before_cart' , 'wc_shipping_insurance_chooser'); 

?> 
+0

這是不可能知道你的附加字段是什麼,但它似乎是你想混合PHP和jQuery。 – helgatheviking

回答

1

修改我的tutorial on checkout fields了一下,這將顯示「一些領域」的時候,一共是50-100和「另一場」之間時,總爲100-200之間。

// Add a new checkout field 
function kia_filter_checkout_fields($fields){ 
    $cart_total = WC()->cart->total; 
    if($cart_total > 50 && $cart_total < 100) { 
     $fields['extra_fields'] = array(
       'some_field' => array(
        'type' => 'checkbox', 
        'label' => __('Some field') 
        ), 
       ); 
    } else if ($cart_total > 100 && $cart_total < 200) { 
     $fields['extra_fields'] = array(
      'another_field' => array(
       'type' => 'checkbox', 
       'label' => __('Another field') 
       ) 
      ); 
    } 

    return $fields; 
} 
add_filter('woocommerce_checkout_fields', 'kia_filter_checkout_fields'); 

// display the extra field on the checkout form 
function kia_extra_checkout_fields(){ 

    $checkout = WC()->checkout; 

    if(! empty($checkout->checkout_fields['extra_fields'])){ 

    ?> 

    <div class="extra-fields"> 
    <h3><?php _e('Additional Fields'); ?></h3> 

    <?php 
    // because of this foreach, everything added to the array in the previous function will display automagically 
    foreach ($checkout->checkout_fields['extra_fields'] as $key => $field) : ?> 

      <?php woocommerce_form_field($key, $field, $checkout->get_value($key)); ?> 

     <?php endforeach; ?> 
    </div> 

<?php } 
} 
add_action('woocommerce_checkout_after_customer_details' ,'kia_extra_checkout_fields'); 
相關問題