如何在WooCommerce的特定位置添加自定义结帐字段

问题描述

我在结帐时使用以下代码添加自定义地址字段:

add_filter( 'woocommerce_checkout_fields','checkout_address_details_fields' );

// Our hooked in function – $fields is passed via the filter!
function checkout_address_details_fields( $fields ) {
    $fields['shipping']['shipping_address_details'] = array(
        'label'     => __('Añade más detalles a tu dirección','woocommerce'),'placeholder'   => _x('Bloque X Apartemento XXX (Opcional)','placeholder','required'  => false,'class'     => array('form-row-wide'),'clear'     => true
     );

     $fields['billing']['billing_address_details'] = array(
        'label'     => __('Añade más detalles a tu dirección','placeholder'   => _x('Bloque X Apartamento XXX (Opcional)','clear'     => true
    );

     return $fields;
}

它正确添加了字段,但是,该字段被添加到了电话字段的末尾,我需要将此自定义字段添加到第二个位置,即“街道地址”字段下方。

解决方法

您需要使用“ priority” 参数设置结帐字段的正确位置,例如:

add_filter( 'woocommerce_checkout_fields','checkout_address_details_fields' );
function checkout_address_details_fields( $fields ) {
    $fields['shipping']['shipping_address_details'] = array(
        'label'       => __('Añade más detalles a tu dirección','woocommerce'),'placeholder' => _x('Bloque X Apartemento XXX (Opcional)','placeholder','required'    => false,'class'       => array('form-row-wide'),'clear'       => true,'priority'    => 55,// <===== Here
    );

    $fields['billing']['billing_address_details'] = array(
        'label'       => __('Añade más detalles a tu dirección','placeholder' => _x('Bloque X Apartamento XXX (Opcional)',// <===== Here
    );

    return $fields;
}

应该可以。