基于显示自定义代答字段和交付日期的“Choosing a date and time after choosing the WooCommerce delivery method”答案代码,以下代码显示订单编辑页面上这些字段的交付数据。
这是我的代码:
// View fields in Edit Order Page
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_fields_order_meta', 10, 1 );
function my_custom_fields_order_meta($order){
$delivery_option = $order->get_meta('_delivery_option');
if( $delivery_option == 'date' ) {
$delivery_datetime = $order->get_meta('_delivery_datetime');
echo '<p><strong>'.__('Delivery').':</strong> ' . get_post_meta( $order->id, '_delivery_option', true ) . '</p>';
echo '<p><strong>'.__('Delivery Date').':</strong> ' . get_post_meta( $order->id, '_delivery_datetime', true ) . '</p>';
}
}
不幸的是,只有正确显示了客户选择的交货日期,并且未显示单选按钮“尽快”的选项。
显然,我做错了什么。
我还想在Thank You页面和电子邮件中显示这些字段值。
任何帮助表示赞赏。
要在后端订单编辑页面中显示自定义字段值(如果它们保存在订单的数据库中),请使用以下命令:
// View fields in Edit Order Page
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_fields_value_admin_order', 10, 1 );
function display_custom_fields_value_admin_order( $order ){
// Display the delivery option
if( $delivery_option = $order->get_meta('_delivery_option') )
echo '<p><strong>'.__('Delivery type').':</strong> ' . $delivery_option . '</p>';
// Display the delivery date
if( $delivery_datetime = $order->get_meta('_delivery_datetime') )
echo '<p><strong>'.__('Delivery Date').':</strong> ' . $delivery_datetime . '</p>';
}
代码位于活动子主题(或活动主题)的function.php文件中。经过测试和工作。
在前端订单页面和电子邮件通知上显示自定义字段值的最佳简洁方法是在订单总计表中显示它们,就像使用的付款方式一样:
// Display the chosen delivery information
add_filter( 'woocommerce_get_order_item_totals', 'chosen_delivery_item_order_totals', 10, 3 );
function chosen_delivery_item_order_totals( $total_rows, $order, $tax_display ) {;
$new_total_rows = [];
// Loop through Order total lines
foreach($total_rows as $key => $total ){
// Get the chosen delivery values
$delivery_option = $order->get_meta('_delivery_option');
$delivery_datetime = $order->get_meta('_delivery_datetime');
// Display delivery information before payment method
if( ! empty($delivery_option) && 'payment_method' === $key ){
$label = empty($delivery_datetime) ? __('Delivery') : __('Delivery Date');
$value = empty($delivery_datetime) ? __('AZAP', $domain) : $delivery_datetime;
// Display 'Delivery method' line
$new_total_rows['chosen_delivery'] = array( 'label' => $label,'value' => $value );
}
$new_total_rows[$key] = $total;
}
return $new_total_rows;
}
代码位于活动子主题(或活动主题)的function.php文件中。经过测试和工作。
相关主题:Choosing a date and time after choosing the WooCommerce delivery method