你需要在代码中进行一些更改... 以下代码将显示运输电话字段:
- 结算
- 我的帐户 > 地址 > 编辑送货地址
- 管理订单编辑页
该代码还将在电子邮件的送货地址部分的格式化显示的送货地址中添加运输电话。
add_filter( 'woocommerce_shipping_fields', 'add_shipping_phone_field' );
function add_shipping_phone_field( $fields ) {
$fields['shipping_phone'] = array(
'label' => __('Phone (Shipping)'),
'required' => true,
'class' => array( 'form-row-wide' ),
'priority' => 25,
);
return $fields;
}
add_filter( 'woocommerce_admin_shipping_fields' , 'add_order_admin_edit_shipping_phone' );
function add_order_admin_edit_shipping_phone( $fields ) {
$fields['phone'] = array( 'label' => __("Shipping phone"), 'show' => '0' );
return $fields;
}
add_filter( 'woocommerce_localisation_address_formats', 'admin_localisation_address_formats', 50, 1 );
function admin_localisation_address_formats( $address_formats ){
if( is_admin() || ! is_wc_endpoint_url() ) {
foreach( $address_formats as $country_code => $address_format ) {
$address_formats[$country_code] .= "\n{phone}";
}
}
return $address_formats;
}
add_filter( 'woocommerce_formatted_address_replacements', 'custom_formatted_address_replacements', 10, 2 );
function custom_formatted_address_replacements( $replacements, $args ) {
$replacements['{phone}'] = ! empty($args['phone']) ? $args['phone'] : '';
return $replacements;
}
add_filter( 'woocommerce_order_formatted_shipping_address', 'add_shipping_phone_to_formatted_shipping_address', 100, 2 );
function add_shipping_phone_to_formatted_shipping_address( $shipping_address, $order ) {
global $pagenow, $post_type;
if( ! ( $pagenow === 'post.php' && $post_type === 'shop_order' && isset($_GET['action']) && $_GET['action'] === 'edit' ) ) {
$shipping_address['phone'] = $order->get_meta('_shipping_phone');
}
return $shipping_address;
}
add_filter( 'woocommerce_order_formatted_billing_address', 'remove_billing_phone_from_formatted_billing_address', 100, 2 );
function remove_billing_phone_from_formatted_billing_address( $billing_address, $order ) {
unset($billing_address['phone']);
return $billing_address;
}
代码放在您的活动子主题(或活动主题)的functions.php文件中。测试并有效。
对于计费自定义字段,您需要替换以下钩子:
woocommerce_shipping_fields
替换为 woocommerce_billing_fields
woocommerce_admin_shipping_fields
替换为 woocommerce_admin_billing_fields
woocommerce_order_formatted_shipping_address
替换为 woocommerce_order_formatted_billing_address
- (不要使用最后一个函数)。
对于前端终端点:
在“订单已收到(谢谢)”,“订单支付”和“我的帐户/订单查看”页面上,您将需要通过您的活动主题重写模板(参考文档) order/order-details-customer.php
。
您将在第52行之后的html标签<address>
内添加以下内容:
<?php if ( $shipping_phone = $order->get_meta('_shipping_phone') ) : ?>
<p class="woocommerce-customer-details--phone"><?php echo esc_html( $shipping_phone ); ?></p>
<?php endif; ?>
在管理员界面上,运输电话号码会被显示并且可以编辑:
在订单查看、订单接收以及电子邮件通知中,运输电话号码会被显示在运输地址部分的末尾: