dongshuo2752 2015-11-07 14:02
浏览 72

在woocommerce结账中简化PHP

I have reordered and changed the WooCommerce checkout fields with this:

//Reorder checkout fields   
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_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_email']      = $fields['billing']['billing_email'];
    $fields2['billing']['billing_phone']      = $fields['billing']['billing_phone'];
    $fields2['billing']['billing_country']    = $fields['billing']['billing_country'];

    $fields2['shipping']['shipping_first_name'] = $fields['shipping']['shipping_first_name'];
    $fields2['shipping']['shipping_last_name'] = $fields['shipping']['shipping_last_name'];
    $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'];
    $fields2['order']['order_comments'] =  $fields['order']['order_comments']; 
    $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;
}

Is there a way to combine and/or simplify this? It works great, but seems so long and complicated.

  • 写回答

1条回答 默认 最新

  • doudouji2016 2015-11-07 14:35
    关注

    How about something like this.

    add_filter("woocommerce_checkout_fields", "reorder_woo_fields");
    
    function reorder_woo_fields($fields) {
    
        $billing_order = array(
            "billing_first_name", 
            "billing_last_name", 
            "billing_address_1", 
            "billing_city", 
            "billing_postcode", 
            "billing_email", 
            "billing_phone", 
            "billing_country"
        );
        foreach($billing_order as $field)
        {
            $billing_fields[$field] = $fields["billing"][$field];
        }
    
        $shipping_order = array(
            "shipping_first_name",
            "shipping_last_name",
            "shipping_address_1",
            "shipping_city",
            "shipping_postcode",
            "shipping_country",
        );
        foreach($shipping_order as $field)
        {
            $shipping_fields[$field] = $fields["shipping"][$field];
        }
    
    
        $fields["billing"] = $billing_fields;
        $fields["shipping"] = $shipping_fields;
    
        return $fields;
    }
    

    EDIT:

    add_filter( 'woocommerce_billing_fields', 'add_custom_css_on_checkout', 10, 1 );
    function add_custom_css_on_checkout( $address_fields ) {
        $address_fields['billing_first_name']['class'] = 'form-row-wide';
        $address_fields['billing_last_name']['class'] = 'form-row-wide';
        return $address_fields;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?