【问题标题】:Remove order notes checkout field for virtual products only in Woocommerce仅在 Woocommerce 中删除虚拟产品的订单备注结帐字段
【发布时间】:2019-03-02 00:02:00
【问题描述】:

在 Woocommerce 中,我使用以下代码禁用除订单备注和附加信息标题之外的所有结帐字段。

如果购物车仅包含虚拟产品,则不应显示除名字、姓氏和电子邮件字段之外的其他字段。

代码:

add_filter( 'woocommerce_checkout_fields' , 'simple_virtual_checkout' );
function simple_virtual_checkout( $fields ) {
    $only_virtual_products = true;
    foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
    // Check if there are non-virtual products
    if ( ! $cart_item['data']->is_virtual() ) $only_virtual_products = false; 
    }
    if( $only_virtual_products ) {
    // remove billing fields
    unset($fields['billing']['billing_company']);
    unset($fields['billing']['billing_address_1']);
    unset($fields['billing']['billing_address_2']);
    unset($fields['billing']['billing_city']);
    unset($fields['billing']['billing_postcode']);
    unset($fields['billing']['billing_country']);
    unset($fields['billing']['billing_state']);
    unset($fields['billing']['billing_phone']);
    add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );

    // remove shipping fields 
    unset($fields['shipping']['shipping_first_name']);    
    unset($fields['shipping']['shipping_last_name']);  
    unset($fields['shipping']['shipping_company']);
    unset($fields['shipping']['shipping_address_1']);
    unset($fields['shipping']['shipping_address_2']);
    unset($fields['shipping']['shipping_city']);
    unset($fields['shipping']['shipping_postcode']);
    unset($fields['shipping']['shipping_country']);
    unset($fields['shipping']['shipping_state']);
    }
    return $fields;
}

非常感谢任何帮助。

【问题讨论】:

    标签: php wordpress woocommerce cart checkout


    【解决方案1】:

    你只需要将这一行添加到你的函数中:

    unset($fields['order']['order_comments']);
    

    所以你的代码将是:

    add_filter( 'woocommerce_checkout_fields' , 'simple_virtual_checkout', 20, 1 );
    function simple_virtual_checkout( $fields ) {
        $only_virtual_products = true;
    
        // Loop through cart items
        foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
            // Check for non-virtual products
            if ( ! $cart_item['data']->is_virtual() ) 
                $only_virtual_products = false; 
        }
    
        if( $only_virtual_products ) {
            // remove billing fields
            unset($fields['billing']['billing_company']);
            unset($fields['billing']['billing_address_1']);
            unset($fields['billing']['billing_address_2']);
            unset($fields['billing']['billing_city']);
            unset($fields['billing']['billing_postcode']);
            unset($fields['billing']['billing_country']);
            unset($fields['billing']['billing_state']);
            unset($fields['billing']['billing_phone']);
            add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );
    
            // remove shipping fields 
            unset($fields['shipping']['shipping_first_name']);    
            unset($fields['shipping']['shipping_last_name']);  
            unset($fields['shipping']['shipping_company']);
            unset($fields['shipping']['shipping_address_1']);
            unset($fields['shipping']['shipping_address_2']);
            unset($fields['shipping']['shipping_city']);
            unset($fields['shipping']['shipping_postcode']);
            unset($fields['shipping']['shipping_country']);
            unset($fields['shipping']['shipping_state']);
            unset($fields['shipping']['shipping_state']);
    
            // remove order notes
            unset($fields['order']['order_comments']);
        }
        return $fields;
    }
    

    代码进入活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

    默认情况下,Woocommerce 结帐页面中,没有“附加信息”标题
    所以这肯定与您的主题或插件进行的一些自定义有关。

    【讨论】:

    • 进行更改会导致:第 68 行为 foreach() plugins/woocommerce/templates/checkout/form-shipping.php 提供的参数无效据我所知,主题没有更改对于那个模板。不管怎样,谢谢你的帮助。欣赏它。
    猜你喜欢
    • 2019-08-12
    • 2018-11-07
    • 2020-06-30
    • 2018-05-07
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2018-10-19
    • 2020-09-14
    相关资源
    最近更新 更多