【问题标题】:How to add a custom checkout field in specific location on WooCommerce如何在 WooCommerce 的特定位置添加自定义结帐字段
【发布时间】:2021-02-07 00:11:22
【问题描述】:

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

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', 'woocommerce'),
    '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', 'woocommerce'),
    'placeholder'   => _x('Bloque X Apartamento XXX (Opcional)', 'placeholder', 'woocommerce'),
    'required'  => false,
    'class'     => array('form-row-wide'),
    'clear'     => true
    );

     return $fields;
}

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

【问题讨论】:

  • 您需要使用“优先级”参数(在您的情况下为 55),请参阅:add a custom checkout billing field under the last name in WooCommerce
  • 要了解现有字段的所有详细信息(包括优先级编号),您可以使用以下代码echo '<pre>', print_r( $fields, 1 ), '</pre>';。只需将此作为回调函数的第一行添加,调试后即可删除。

标签: php wordpress woocommerce checkout custom-fields


【解决方案1】:

您需要使用 "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', 'woocommerce'),
        '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', 'woocommerce'),
        'placeholder' => _x('Bloque X Apartamento XXX (Opcional)', 'placeholder', 'woocommerce'),
        'required'    => false,
        'class'       => array('form-row-wide'),
        'clear'       => true,
        'priority'    => 55, // <===== Here
    );

    return $fields;
}

它应该可以工作。

【讨论】:

  • 顺便问一下,有没有办法知道优先级的正确值?你怎么知道是55
  • @svelandiag 在结帐页面中查看生成的 html 代码与计费和运输字段部分...您将看到每个字段的优先级值从 10 增加到 10...因此值 55 在字段之间@ 987654323@和address_2
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2022-01-03
  • 2020-01-14
相关资源
最近更新 更多