在Woocommerce管理员订单预览上显示自定义数据
我想在Woocommerce订单列表页面的预览订单末尾添加一些自定义数据.
I would like to add some custom data to the end of the preview order in Woocommerce order listing page.
为此,我尝试使用钩子"woocommerce_admin_order_preview_end".但是无法将任何参数传递给该操作.
For that I have tried the hook 'woocommerce_admin_order_preview_end'. But no way to pass any arguments to that action.
add_action( 'woocommerce_admin_order_preview_end', 'custom_display_order_data_in_admin' );
function custom_display_order_data_in_admin( $order ){
//$order is empty here
}
有人对此有想法吗?我被困住了.
Does anybody have an idea on this? I'm stuck on this.
您无法获取订单对象,因为它是通过Ajax加载特定数据的模板,并且
You can't get the order object as it's a template that loads specific data via Ajax and there is no arguments for woocommerce_admin_order_preview_end
action hook.
相反,过滤器挂钩woocommerce_admin_order_preview_get_order_details
允许您首先添加一些自定义数据,您可以在woocommerce_admin_order_preview_end
操作挂钩中调用并显示这些自定义数据.
Instead the filter hook woocommerce_admin_order_preview_get_order_details
will allow you first to add some custom data that you will be able to call and display it after in woocommerce_admin_order_preview_end
action hook.
代码:
// Add custom order meta data to make it accessible in Order preview template
add_filter( 'woocommerce_admin_order_preview_get_order_details', 'admin_order_preview_add_custom_meta_data', 10, 2 );
function admin_order_preview_add_custom_meta_data( $data, $order ) {
// Replace '_custom_meta_key' by the correct postmeta key
if( $custom_value = $order->get_meta('_custom_meta_key') )
$data['custom_key'] = $custom_value; // <= Store the value in the data array.
return $data;
}
// Display custom values in Order preview
add_action( 'woocommerce_admin_order_preview_end', 'custom_display_order_data_in_admin' );
function custom_display_order_data_in_admin(){
// Call the stored value and display it
echo '<div>Value: {{data.custom_key}}</div><br>';
}
代码进入您的活动子主题(或活动主题)的function.php文件中.经过测试,可以正常工作.
Code goes in function.php file of your active child theme (or active theme). Tested and works.
注意:如果需要,您还可以使用
woocommerce_admin_order_preview_start
挂钩...
Note: You can also use
woocommerce_admin_order_preview_start
hook if needed…