【问题标题】:Show custom checkout fields if a specific product is in cart on Woocommerce如果特定产品在 Woocommerce 的购物车中,则显示自定义结帐字段
【发布时间】:2019-05-11 04:50:33
【问题描述】:

因此,我在结帐页面的结算部分中有一些自定义字段,我只想在购物车中有 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' );

【问题讨论】:

    标签: php wordpress woocommerce cart checkout


    【解决方案1】:

    以下将完成这项工作:

    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 文件中。经过测试并且可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 2018-07-16
      • 2017-01-07
      • 2018-01-07
      • 2019-01-31
      • 1970-01-01
      相关资源
      最近更新 更多