Woocommerce显示有关管理订单详细信息的自定义字段数据
问题描述:
我正在使用自定义结账字段向我的客户提供我的woocommerce商店结帐页面上的“发送到商家地址”选项。大多数代码工作正常,但我无法显示他们是否在后端的管理命令详细信息中选中了该框。Woocommerce显示有关管理订单详细信息的自定义字段数据
我添加了一个自定义的结账场我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上测试并工作。
谢谢@LoicTheAztec。我似乎误解了update_post_meta()函数。现在正常工作!你是我眼中的一位真正的战士。 – peanutSquiggle