Woocommerce 订单格式的账单地址重新排序和自定义账单字段
Woocommerce order formatted billing address reorder and custom billing field
感谢过滤器 "WooCommerce admin billing fields" 我已经通过电子邮件在通知页脚中订购了账单字段,但是当我尝试插入时,我的自定义账单字段没有出现。
add_filter( 'woocommerce_order_formatted_billing_address' , 'woo_reorder_billing_fields', 10, 2 );
function woo_reorder_billing_fields( $address, $wc_order ) {
$address = array(
'first_name' => $wc_order->billing_first_name,
'last_name' => $wc_order->billing_last_name,
'company' => $wc_order->billing_company,
'my_field' => $wc_order->billing_my_field,
'country' => $wc_order->billing_country
);
return $address;
}
为了管理编辑,我可以显示我的自定义账单字段,这要归功于过滤器 "woocommerce_admin_billing_fields",首先添加该字段,然后重新排序数组。
我注意到我之前添加过,并且在结账时使用过滤器 "woocommerce_checkout_fields" 重新排序了该字段。
如果“$wc_order”对象在结帐时存储了自定义字段,为什么不显示我的自定义字段?
有什么想法吗?
提前致谢!
是的,这里解释一下:
我们将注册新的 cusotm 字段,在本例中为“VAT”字段,用于存储欧盟公司的财务文件。有很多关于如何注册自定义字段并在管理/用户面板中显示它们的文档。
add_filter( 'woocommerce_default_address_fields', 'woo_new_default_address_fields' );
function woo_new_default_address_fields( $fields ) {
$fields['vat'] = array(
'label' => __( 'VAT number', 'woocommerce' ),
'class' => array( 'form-row-wide', 'update_totals_on_change' ),
);
return $fields;
}
然后仅将新字段“增值税”添加到邮件的帐单字段注册中,我们不希望它出现在地址字段部分。
add_filter( 'woocommerce_order_formatted_billing_address' , 'woo_custom_order_formatted_billing_address', 10, 2 );
function woo_custom_order_formatted_billing_address( $address, $WC_Order ) {
$address = array(
'first_name' => $WC_Order->billing_first_name,
'last_name' => $WC_Order->billing_last_name,
'vat' => $WC_Order->billing_vat,
'company' => $WC_Order->billing_company,
'address_1' => $WC_Order->billing_address_1,
'address_2' => $WC_Order->billing_address_2,
'city' => $WC_Order->billing_city,
'state' => $WC_Order->billing_state,
'postcode' => $WC_Order->billing_postcode,
'country' => $WC_Order->billing_country
);
return $address;
}
以下代码自定义地址的外观,这是我们必须添加对新增值税字段的调用的地方。这使我们能够独立自定义每个国家/地区的地址视图。
add_filter( 'woocommerce_formatted_address_replacements', function( $replacements, $args ){
$replacements['{vat}'] = $args['vat'];
return $replacements;
}, 10, 2 );
add_filter( 'woocommerce_localisation_address_formats' , 'woo_includes_address_formats', 10, 1);
function woo_includes_address_formats($address_formats) {
$address_formats['ES'] = "{name}\n{company}\n{vat}\n{address_1}\n{address_2}\n{postcode} {city}\n{state}\n{country}";
$address_formats['default'] = "{name}\n{company}\n{vat}\n{nif}\n{address_1}\n{address_2}\n{city}\n{state}\n{postcode}\n{country}";
return $address_formats;
}
有问题尽管问!
感谢过滤器 "WooCommerce admin billing fields" 我已经通过电子邮件在通知页脚中订购了账单字段,但是当我尝试插入时,我的自定义账单字段没有出现。
add_filter( 'woocommerce_order_formatted_billing_address' , 'woo_reorder_billing_fields', 10, 2 );
function woo_reorder_billing_fields( $address, $wc_order ) {
$address = array(
'first_name' => $wc_order->billing_first_name,
'last_name' => $wc_order->billing_last_name,
'company' => $wc_order->billing_company,
'my_field' => $wc_order->billing_my_field,
'country' => $wc_order->billing_country
);
return $address;
}
为了管理编辑,我可以显示我的自定义账单字段,这要归功于过滤器 "woocommerce_admin_billing_fields",首先添加该字段,然后重新排序数组。
我注意到我之前添加过,并且在结账时使用过滤器 "woocommerce_checkout_fields" 重新排序了该字段。
如果“$wc_order”对象在结帐时存储了自定义字段,为什么不显示我的自定义字段?
有什么想法吗?
提前致谢!
是的,这里解释一下:
我们将注册新的 cusotm 字段,在本例中为“VAT”字段,用于存储欧盟公司的财务文件。有很多关于如何注册自定义字段并在管理/用户面板中显示它们的文档。
add_filter( 'woocommerce_default_address_fields', 'woo_new_default_address_fields' );
function woo_new_default_address_fields( $fields ) {
$fields['vat'] = array(
'label' => __( 'VAT number', 'woocommerce' ),
'class' => array( 'form-row-wide', 'update_totals_on_change' ),
);
return $fields;
}
然后仅将新字段“增值税”添加到邮件的帐单字段注册中,我们不希望它出现在地址字段部分。
add_filter( 'woocommerce_order_formatted_billing_address' , 'woo_custom_order_formatted_billing_address', 10, 2 );
function woo_custom_order_formatted_billing_address( $address, $WC_Order ) {
$address = array(
'first_name' => $WC_Order->billing_first_name,
'last_name' => $WC_Order->billing_last_name,
'vat' => $WC_Order->billing_vat,
'company' => $WC_Order->billing_company,
'address_1' => $WC_Order->billing_address_1,
'address_2' => $WC_Order->billing_address_2,
'city' => $WC_Order->billing_city,
'state' => $WC_Order->billing_state,
'postcode' => $WC_Order->billing_postcode,
'country' => $WC_Order->billing_country
);
return $address;
}
以下代码自定义地址的外观,这是我们必须添加对新增值税字段的调用的地方。这使我们能够独立自定义每个国家/地区的地址视图。
add_filter( 'woocommerce_formatted_address_replacements', function( $replacements, $args ){
$replacements['{vat}'] = $args['vat'];
return $replacements;
}, 10, 2 );
add_filter( 'woocommerce_localisation_address_formats' , 'woo_includes_address_formats', 10, 1);
function woo_includes_address_formats($address_formats) {
$address_formats['ES'] = "{name}\n{company}\n{vat}\n{address_1}\n{address_2}\n{postcode} {city}\n{state}\n{country}";
$address_formats['default'] = "{name}\n{company}\n{vat}\n{nif}\n{address_1}\n{address_2}\n{city}\n{state}\n{postcode}\n{country}";
return $address_formats;
}
有问题尽管问!