Woocommerce 在管理订单详细信息中显示自定义字段数据
Woocommerce display custom field data on admin order details
我正在使用自定义结帐字段在我的 woocommerce 商店的结帐页面上为我的客户提供 'Ship to a business address' 选项。大多数代码工作正常,但我无法显示他们是否选中了后端管理订单详细信息中的框。
我已将自定义结帐字段添加到我的 woocommerce 商店,并将数据保存到订单元数据中:
//add custom checkout field
add_filter( 'woocommerce_after_checkout_billing_form', 'gon_business_address_checkbox_field' );
function gon_business_address_checkbox_field( $checkout ){
woocommerce_form_field( 'business_address_checkbox', array(
'label' => __('<h3 id="business_address_label">Check this box if you are shipping to a business.</h3>', 'woocommerce'),
'required' => false,
'clear' => false,
'type' => 'checkbox'
), $checkout->get_value( 'business_address_checkbox' ));
}
//update order meta
add_action('woocommerce_checkout_update_order_meta', 'gon_update_order_meta_business_address');
function gon_update_order_meta_business_address( $order_id ) {
if ($_POST['business_address_checkbox']) update_post_meta( $order_id, 'Business Address?',
esc_attr($_POST['business_address_checkbox']));
}
这里是我尝试在管理订单部分显示此数据的地方。我已尽可能密切关注之前的主题,但无济于事。
// Display field value on the admin order edit page
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
function my_custom_checkout_field_display_admin_order_meta($order){
echo '<p><strong>'.__('Ship to a Business Address', 'woocommerce').': </strong> ' . get_post_meta( $order->get_id(), '_business_address_checkbox', true ) . '</p>';
}
这个问题可能是因为我没有以正确的方式使用复选框吗?奇怪的是,我正在使用以下代码获取要在订单电子邮件上打印的信息:
add_filter( 'woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys' );
function my_custom_checkout_field_order_meta_keys( ) {
if($_POST['business_address_checkbox']){
$ship_to = 'YES';
} else {
$ship_to = 'NO';
}
echo '<h3>Ship to a business address? : '.$ship_to.'</h3>';
}
当您保存此自定义字段数据时,使用 meta_key
: 'Business Address?'
... 所以您需要使用此 meta_key
来以这种方式检索数据:
// Display field value on the admin order edit page
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'custom_checkout_field_display_admin_order_meta', 10, 1 );
function custom_checkout_field_display_admin_order_meta( $order ){
$business_address = get_post_meta( $order->get_id(), 'Business Address?', true );
if( ! empty( $business_address ) )
echo '<p><strong>'.__('Ship to a Business Address', 'woocommerce').': </strong> ' . $business_address . '</p>';
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
在 WooCommerce 3 上测试并有效。
我正在使用自定义结帐字段在我的 woocommerce 商店的结帐页面上为我的客户提供 'Ship to a business address' 选项。大多数代码工作正常,但我无法显示他们是否选中了后端管理订单详细信息中的框。
我已将自定义结帐字段添加到我的 woocommerce 商店,并将数据保存到订单元数据中:
//add custom checkout field
add_filter( 'woocommerce_after_checkout_billing_form', 'gon_business_address_checkbox_field' );
function gon_business_address_checkbox_field( $checkout ){
woocommerce_form_field( 'business_address_checkbox', array(
'label' => __('<h3 id="business_address_label">Check this box if you are shipping to a business.</h3>', 'woocommerce'),
'required' => false,
'clear' => false,
'type' => 'checkbox'
), $checkout->get_value( 'business_address_checkbox' ));
}
//update order meta
add_action('woocommerce_checkout_update_order_meta', 'gon_update_order_meta_business_address');
function gon_update_order_meta_business_address( $order_id ) {
if ($_POST['business_address_checkbox']) update_post_meta( $order_id, 'Business Address?',
esc_attr($_POST['business_address_checkbox']));
}
这里是我尝试在管理订单部分显示此数据的地方。我已尽可能密切关注之前的主题,但无济于事。
// Display field value on the admin order edit page
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );
function my_custom_checkout_field_display_admin_order_meta($order){
echo '<p><strong>'.__('Ship to a Business Address', 'woocommerce').': </strong> ' . get_post_meta( $order->get_id(), '_business_address_checkbox', true ) . '</p>';
}
这个问题可能是因为我没有以正确的方式使用复选框吗?奇怪的是,我正在使用以下代码获取要在订单电子邮件上打印的信息:
add_filter( 'woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys' );
function my_custom_checkout_field_order_meta_keys( ) {
if($_POST['business_address_checkbox']){
$ship_to = 'YES';
} else {
$ship_to = 'NO';
}
echo '<h3>Ship to a business address? : '.$ship_to.'</h3>';
}
当您保存此自定义字段数据时,使用 meta_key
: 'Business Address?'
... 所以您需要使用此 meta_key
来以这种方式检索数据:
// Display field value on the admin order edit page
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'custom_checkout_field_display_admin_order_meta', 10, 1 );
function custom_checkout_field_display_admin_order_meta( $order ){
$business_address = get_post_meta( $order->get_id(), 'Business Address?', true );
if( ! empty( $business_address ) )
echo '<p><strong>'.__('Ship to a Business Address', 'woocommerce').': </strong> ' . $business_address . '</p>';
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
在 WooCommerce 3 上测试并有效。