我在 https://development.pittsburghconcertsociety.org 上出售活动门票并接受捐款。当有人买票时,他们必须同意新冠肺炎政策。但是,当有人仅“购买”捐赠时,即他们仅将捐赠产品放入购物车时,他们不需要同意新冠病毒政策。 woo 支持聊天机器人吐出了这段代码,但它不起作用:
function hide_terms_for_specific_product( $woocommerce_checkout_fields ) {
// Check if the specific product is the only item in the cart
if ( WC()->cart ) {
$cart_items = WC()->cart->get_cart();
$specific_product_found = false;
foreach ( $cart_items as $cart_item ) {
// Replace '123' with the ID of the specific product
if ( $cart_item['product_id'] == 551 ) {
$specific_product_found = true;
break;
}
}
// Hide terms and conditions for the specific product
if ( $specific_product_found ) {
unset( $woocommerce_checkout_fields['terms'] );
}
}
return $woocommerce_checkout_fields;
}
add_filter( 'woocommerce_checkout_fields', 'hide_terms_for_specific_product' );
(捐赠产品 ID 551)。总而言之,如果捐赠与门票一起在购物车中,我确实需要 T&C 复选框/要求,但如果捐赠是购物车中的唯一项目,则不需要。在这种情况下,仅仅隐藏条款和条件是不够的;也不需要。
Gravy:能够添加多个产品 ID,以防我们出售商品。
您没有使用正确的挂钩。当购物车中只有特定产品时,以下内容将完全删除条款和条件:
add_filter( 'woocommerce_checkout_show_terms', 'remove_terms_and_conditions_for_specific_unique_item' );
function remove_terms_and_conditions_for_specific_unique_item( $show_terms ) {
// Replace "123" with the desired product ID
$targeted_id = 123;
$cart_items = WC()->cart->get_cart(); // get cart items
// Check if there is only one item in cart
if( count($cart_items) > 1 ) {
return $show_terms;
}
// Check if the targeted product ID is the only item in cart
if ( reset($cart_items)['product_id'] == $targeted_id ) {
return false; // Remove terms and conditions field
}
return $show_terms;
}
代码位于活动子主题的functions.php 文件中(或插件中)。已测试并有效。