【发布时间】:2021-11-10 13:28:41
【问题描述】:
我目前正在尝试将自定义字段添加到默认地址字段(名字、姓氏等...)
应该使用该字段来为客户设置称呼。
为此,我使用了以下过滤器:
add_filter( 'woocommerce_default_address_fields', 'custom_woocommerce_address_fields' );
function custom_woocommerce_address_fields($fields) {
$fields['salutation'] = array(
'label' => __('Anrede', 'woocommerce'), // Add custom field label
'placeholder' => 'CA12345678', // Add custom field placeholder
'required' => true, // if field is required or not
'clear' => false, // add clear or not
'type' => 'select', // add field type
'options' => array(
'Herr' => 'Herr',
'Frau' => 'Frau',
'Firma' => 'Firma'
),
'priority' => 1, // add priority
'class' => array('billing-salutation-input')// add class name
);
return $fields;
}
保存自定义字段:
add_action( 'woocommerce_checkout_update_order_meta', 'save_new_checkout_field' );
function save_new_checkout_field( $order_id ) {
if ( $_POST['billing_salutation'] ) update_post_meta( $order_id, '_salutation', esc_attr( $_POST['billing_salutation'] ) );
}
问题:
当我查看订单详情时,新字段不会显示在默认地址字段下。
所以我用下面的代码来显示新数据。
add_action( 'woocommerce_admin_order_data_after_billing_address', 'show_new_checkout_field_order', 10, 1 );
function show_new_checkout_field_order( $order ) {
$order_id = $order->get_id();
if ( get_post_meta( $order_id, '_salutation', true ) ) echo '<p><strong>Anrede:</strong> ' . get_post_meta( $order_id, '_salutation', true ) . '</p>';
}
但是,该字段始终显示在底部,我找不到将字段带到所需位置(图像)的方法
我是否必须使用不同的挂钩在所需位置显示数据(帐单详细信息)?
还是我必须编辑特定的 woocommerce 模板?
【问题讨论】:
标签: php wordpress woocommerce hook-woocommerce orders