检查多个产品ID在购物车中WooCommerce
问题描述:
我使用下面的代码,如果一个产品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在购物车中,请显示条件结账字段?我觉得这可能很简单,但我不知道如何去做。
答
我已对您的功能进行了一些更改,以使其适用于许多产品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文件(活动的主题或任何插件文件)。
此代码已经过测试并可正常工作。
完美工作。谢谢。 – jasonTakesManhattan