首页 > 解决方案 > 在 Woocommerce 管理员订单预览中显示自定义数据

问题描述

我想在 Woocommerce 订单列表页面的预览订单末尾添加一些自定义数据。

为此,我尝试了钩子“woocommerce_admin_order_preview_end”。但是无法将任何参数传递给该操作。

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
}

有人对此有想法吗?我坚持这一点。

标签: phpwordpresswoocommercemetadataorders

解决方案


您无法获取订单对象,因为它是通过 Ajax 加载特定数据的模板,并且没有用于woocommerce_admin_order_preview_end操作挂钩的参数。

相反,过滤器钩子woocommerce_admin_order_preview_get_order_details将允许您首先添加一些自定义数据,您将能够在woocommerce_admin_order_preview_end操作钩子之后调用并显示它。

编码:

// 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 文件中。测试和工作。

注意:如果需要,您也可以使用woocommerce_admin_order_preview_start钩子...</p>


推荐阅读