2017-10-10 87 views
1

我使用下面的代码,如果一个产品ID是在购物车中,如果是这样,添加额外的校验字段:检查多个产品ID在购物车中WooCommerce

add_action('woocommerce_after_order_notes', 'conditional_checkout_field'); 

function conditional_checkout_field($checkout) { 
    echo '<div id="conditional_checkout_field">'; 

    $product_id = 326; 
    $product_cart_id = WC()->cart->generate_cart_id($product_id); 
    $in_cart = WC()->cart->find_product_in_cart($product_cart_id); 

    // Check if the product is in the cart and show the custom field if it is 

    if ($in_cart) { 
      echo '<h3>'.__('Products in your cart require the following information').'</h3>'; 

      woocommerce_form_field('custom_field_license', array(
      'type'   => 'text', 
      'class'   => array('my-field-class form-row-wide'), 
      'label'   => __('License Number'), 
      'placeholder' => __('Placeholder to help describe what you are looking for'), 
      ), $checkout->get_value('custom_field_license')); 

    } 
} 

这一切正常。但是,如何检查购物车中的多个产品ID?例如,如果产品ID 326或245在购物车中,请显示条件结账字段?我觉得这可能很简单,但我不知道如何去做。

回答

1

我已对您的功能进行了一些更改,以使其适用于许多产品ID。此外,我还在该领域添加了必要的选项。所以,你的代码是前人的精力像:

add_action('woocommerce_after_order_notes', 'conditional_checkout_field', 10, 1); 
function conditional_checkout_field($checkout) { 

    // Set here your product IDS (in the array) 
    $product_ids = array(37, 53, 70); 
    $is_in_cart = false; 

    // Iterating through cart items and check 
    foreach(WC()->cart->get_cart() as $cart_item_key => $cart_item) 
     if(in_array($cart_item['data']->get_id(), $product_ids)){ 
      $is_in_cart = true; // We set it to "true" 
      break; // At east one product, we stop the loop 
     } 

    // If condition match we display the field 
    if($is_in_cart){ 
     echo '<div id="conditional_checkout_field"> 
     <h3 class="field-license-heading">'.__('Products in your cart require the following information').'</h3>'; 

     woocommerce_form_field('custom_field_license', array(
      'type'   => 'text', 
      'class'   => array('my-field-class form-row-wide'), 
      'required'  => true, // Added required 
      'label'   => __('License Number'), 
      'placeholder' => __('Placeholder to help describe what you are looking for'), 
     ), $checkout->get_value('custom_field_license')); 

     echo '</div>'; 
    } 
} 

代码放在您的活动子主题的function.php文件(活动的主题或任何插件文件)。

此代码已经过测试并可正常工作。

+0

完美工作。谢谢。 – jasonTakesManhattan

相关问题