gpt4 book ai didi

php - 如果特定产品在 Woocommerce 的购物车中,则显示自定义结帐字段

转载 作者:行者123 更新时间:2023-12-05 04:03:12 24 4
gpt4 key购买 nike

所以我在结账页面的账单部分有一些自定义字段,我只想在购物车中有 ID (603) 的产品时显示这些字段。

目前,如果购物车中有不是 id 603 的产品,我下面的代码可以隐藏字段,但一个问题是当我有 603 和购物车中的另一个产品时,它会取消设置字段,

如果 603 不在购物车中,隐藏字段的最佳方式是什么?如果是,则只显示字段?

这是我当前使用的代码

    function conditional_checkout_fields_products( $fields ) {
$cart = WC()->cart->get_cart();

foreach ( $cart as $item_key => $values ) {
$product = $values['data'];

if ( $product->id != 603 ) {
unset( $fields['billing']['billing_prev_injuries'] );
unset( $fields['billing']['billing_dogs_events'] );
unset( $fields['billing']['billing_dogs_age'] );
unset( $fields['billing']['billing_dogs_breed'] );
unset( $fields['billing']['billing_dogs_name'] );
}
}

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

最佳答案

以下将完成这项工作:

add_filter( 'woocommerce_checkout_fields', 'conditional_checkout_fields_products' );
function conditional_checkout_fields_products( $fields ) {
$is_in_cart = false;

foreach ( WC()->cart->get_cart() as $cart_item ) {
if ( $cart_item['data']->get_id() == 603 ) {
$is_in_cart = true;
break;
}
}

if ( ! $is_in_cart ) {
unset( $fields['billing']['billing_prev_injuries'] );
unset( $fields['billing']['billing_dogs_events'] );
unset( $fields['billing']['billing_dogs_age'] );
unset( $fields['billing']['billing_dogs_breed'] );
unset( $fields['billing']['billing_dogs_name'] );
}

return $fields;
}

代码进入事件子主题(或事件主题)的 function.php 文件。经过测试并有效。

关于php - 如果特定产品在 Woocommerce 的购物车中,则显示自定义结帐字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53703103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com