dongshi3605 2016-08-23 17:31
浏览 40

Woocommerce重新安排结帐领域

I have rearranged the order fields on the Woocommerce checkout page with this function:

    //Reorder checkout
    add_filter( 'woocommerce_checkout_fields', 'reorder_woo_fields' ); 
    function reorder_woo_fields( $fields ) {
    $fields2['billing']['billing_first_name'] = $fields['billing']  ['billing_first_name'];
    $fields2['billing']['billing_last_name']  = $fields['billing']['billing_last_name'];
    $fields2['billing']['billing_company'] =  $fields['billing']['billing_company'];
    $fields2['billing']['billing_address_1']  = $fields['billing']['billing_address_1'];
    $fields2['billing']['billing_city']       = $fields['billing']['billing_city'];
    $fields2['billing']['billing_postcode']   = $fields['billing']['billing_postcode'];
    $fields2['billing']['billing_country']    = $fields['billing']['billing_country'];
    $fields2['billing']['billing_email']      = $fields['billing']['billing_email'];
    $fields2['billing']['billing_phone']      = $fields['billing']['billing_phone'];

    $fields2['shipping']['shipping_first_name'] = $fields['shipping']['shipping_first_name'];
    $fields2['shipping']['shipping_last_name'] = $fields['shipping']['shipping_last_name'];
    $fields2['shipping']['shipping_company'] =  $fields['shipping']['shipping_company'];
    $fields2['shipping']['shipping_address_1'] = $fields['shipping']['shipping_address_1'];
    $fields2['shipping']['shipping_city'] = $fields['shipping']['shipping_city'];
    $fields2['shipping']['shipping_postcode'] = $fields['shipping']['shipping_postcode'];
    $fields2['shipping']['shipping_country'] = $fields['shipping']['shipping_country'];

    // Add full width Classes and Clears to Adjustments    
    $fields2['billing']['billing_first_name'] = array(
        'label' => __('First Name', 'woocommerce'),
    'class'     => array('form-row-wide'),
    'clear'     => true,
    'required' => true
     );
     $fields2['billing']['billing_last_name'] = array(
    'label' => __('Last Name', 'woocommerce'),
    'class'     => array('form-row-wide'),
    'clear'     => true,
        'required' => true
     );
     $fields2['shipping']['shipping_first_name'] = array(
        'label' => __('First Name', 'woocommerce'),
    'class'     => array('form-row-wide'),
    'clear'     => true,
    'required' => true
     );
     $fields2['shipping']['shipping_last_name'] = array(
    'label' => __('Last Name', 'woocommerce'),
    'class'     => array('form-row-wide'),
    'clear'     => true,
        'required' => true
     );
     return $fields2;
     }

and this works, but when enabling debug mode I am getting an error on the chekcout page: Notice: Undefined index: order in /html/wordpress/wp-content/plugins/woocommerce/templates/checkout/form-shipping.php on line 58

Warning: Invalid argument supplied for foreach() in /html/wordpress/wp-content/plugins/woocommerce/templates/checkout/form-shipping.php on line 58

Can aynone make sense of this?

  • 写回答

2条回答 默认 最新

  • duanpai6581 2016-08-24 07:12
    关注

    You can try below code for reorder the checkout page fields. You can chnage the order of fields in the array.

    // for billing fields
    
    add_filter("woocommerce_checkout_fields", "new_order_fields");
    
    function new_order_fields($fields) {
    
        $order = array(
            "billing_company", 
            "billing_first_name", 
            "billing_last_name", 
            "billing_address_1", 
            "billing_address_2", 
            "billing_postcode", 
            "billing_country", 
            "billing_email", 
            "billing_phone"
        );
        foreach( $order as $field ) {
            $ordered_fields[$field] = $fields["billing"][$field];
        }
    
        $fields["billing"] = $ordered_fields;
        return $fields;    
    }
    
    // for shipping fields
    add_filter("woocommerce_checkout_fields", "new_shiping_order_fields");
    
    function new_shiping_order_fields($fields) {
    
        $order = array(   
            "shipping_city", 
            "shipping_postcode", 
            "shipping_country",    
            "shipping_first_name", 
            "shipping_last_name", 
            "shipping_company", 
            "shipping_address_1", 
            "shipping_address_2"
    
        );
        foreach( $order as $field ) {
            $ordered_fields[$field] = $fields["shipping"][$field];
        }
    
        $fields["shipping"] = $ordered_fields;
        return $fields;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题