php - 如何在 WooCommerce 的结帐页面上重新排序其他字段
问题描述
我不知道如何在 WooCommerce 的结帐页面上重新排序其他字段。
我在 WooCommerce 附加信息部分添加了一个额外的字段。我想先显示时间字段,然后显示它下面的订单注释。
这是我正在使用的代码:
add_filter( 'woocommerce-additional-fields', 'custom_order_fields', 20, 1 );
function custom_order_fields( $fields ) {
$fields['order_comments']['priority'] = 80;
$fields['woocommerce-delivery-time-field']['priority'] = 70;
return $fields;
}
然而,这并没有达到预期的结果。有人可以告诉我我做错了什么吗?
解决方案
如果您想先显示自定义字段,然后显示订单备注。
您可以使用:
// Add 'delivery time' field before 'order comments'
function filter_woocommerce_checkout_fields( $fields ) {
// Get 'order comments' field
$order_comments = $fields['order']['order_comments'];
// Unset 'order comments' field
unset( $fields['order']['order_comments'] );
// Add 'delivery time' field
$fields['order']['delivery_time'] = array(
'label' => __( 'Delivery time', 'woocommerce' ),
'required' => true,
'type' => 'text',
'class' => array( 'form-row-wide' ),
);
// Add 'order comments' field
$fields['order']['order_comments'] = $order_comments;
return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'filter_woocommerce_checkout_fields', 10, 1 );
或者使用woocommerce_before_order_notes
动作钩子
function action_woocommerce_before_order_notes( $checkout ) {
// Add field
woocommerce_form_field( 'delivery_time', array(
'type' => 'text',
'class' => array( 'form-row form-row-wide' ),
'label' => __( 'Delivery time', 'woocommerce' ),
'required' => true,
), $checkout->get_value( 'delivery_time' ) );
}
add_action( 'woocommerce_before_order_notes', 'action_woocommerce_before_order_notes', 10, 1 );
推荐阅读
- puppeteer - Nestjs框架中的构造函数问题
- onnx - ML.NET 导出到 ONNX
- ios - 如何使用 .crt SSL 证书文件连接 MQTT 服务器?
- prometheus - Alertmanager:Slack 通知 - x509:由未知机构签署的证书
- google-sheets - 可以使用 IMPORTXML 函数将文本从 Grammarly 抓取到 google 电子表格吗?
- django - 如何将 filter_horizontal 与 TabularInline 和 .through 一起使用?
- python - 修复由`sudo pip`/`sudo pip3`错误安装的python包
- mongodb - mongodb 使用 db.update() 更新多个数组元素
- android - Android - 没有布局的骨架加载
- sql - 如何在 SQL Server 中获取列的总和并在单个查询中显示?