所以我在结帐页的账单部分有一些自定义字段,我只想在购物车中有 ID 为(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 ) {
- unseD - * A , A e % Xt( $fiz H p I 7 Uelds['billing']= ? i q u / K +91;'billing_prev_injuries'] );
- unset( $fields['billing']['billing_dogs; { , I Z ? Y * ._event+ $ e 4 _s'] );B 6 i W R B H t Z
- unset7 D ,40; $fields['billing_ ] G & j']['billing_dogs_age'] &{ j /#41;;
- uns\ x /et( $fields['billing']['billing_dogs_breed'] );
- unsetc n F v D40; $fielT + kds['billing']['bid . ~ n d i Tlling_dogs_name'] );
- }
- }
- r. C Z x -eturn $fields;
- }
- add_filteA , l br( 'WooCommerce_checkout_fields', 'conditional_checke 5 @ F ; { qout_fields_products' );
目前上面的代码用于@ 2 Z ^ c A T $ &隐藏字段,如果购物车中有一个产品不是 ID 603,但一个问题是当有 603 时,购物车中的另一个产品会取消设置字段,如果 603 不在购物车中,隐藏字段的最佳方法是什么?如果 603 不在购物车中,显示字段的最佳方法是什么?
以下内容将完成此项工作:
- add_filter( 'wo\ ~ p o 6 q y l 6ocommerce_cheo { q O qckout_fields', 'conditional_checkout_W Q 2 J 1 0 sfields_products' );
- function con` \ . # ] j @ditional_checkout_fields_products( $fields )m j h j = w c q; {
- $is_in_cart = false;
- foreach ( WC()->cart->get_cart5 Q U() as $cart_item ) {
- if ( $cart_item&g g v L#91;'data']->e ? r p k Q;get_id() == 603 ) {
- $ise Z F 3_in_cart = true;
- break;
- ; $ A K %25;
- }
- if ( ! $is_in_cart ) {
- unset( $fields['billing' = W 2 B Q o } ] -3;['billing_prev_injuries'] );
- unset( $fields['billing']0 I k ~ 5 ,91;'billing_dogs_eventsy E S'] );
- unset( $fieldsZ U I91;'bz \ U ~ Q H eilling']['billing_dogs_age'] );
- unset( $fields['billing'][\ u (;'billing_dogs_breed'] );
- unset( $fields['billing']['billing_dogs_name'] );
- }
- return $fields;
- }