You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce Analytics订单报表中添加订单项名称列并支持CSV导出

问题原因

你当前使用的钩子是旧版本WooCommerce内置报表的触发钩子,不适用于新版的WooCommerce Analytics订单报表模块,同时回调函数的参数、输出格式也不符合导出CSV的要求,所以不会生效。

修正后的完整代码

// 1. 给WooCommerce Analytics订单表格新增列头
add_filter( 'woocommerce_analytics_orders_table_columns', 'add_item_name_column_to_analytics_table' );
function add_item_name_column_to_analytics_table( $columns ) {
    $new_columns = [];
    foreach ( $columns as $column_key => $column_label ) {
        $new_columns[ $column_key ] = $column_label;
        // 在客户类型列后面插入订单项名称列
        if ( 'customer_type' === $column_key ) {
            $new_columns['order_item_name'] = __( 'Item Name', 'my-textdomain' );
        }
    }
    return $new_columns;
}

// 2. 给导出的CSV新增列头
add_filter( 'woocommerce_analytics_orders_export_columns', 'add_item_name_column_to_analytics_export' );
function add_item_name_column_to_analytics_export( $columns ) {
    $new_columns = [];
    foreach ( $columns as $column_key => $column_label ) {
        $new_columns[ $column_key ] = $column_label;
        if ( 'customer_type' === $column_key ) {
            $new_columns['order_item_name'] = __( 'Item Name', 'my-textdomain' );
        }
    }
    return $new_columns;
}

// 3. 给页面表格的列填充订单项名称数据
add_filter( 'woocommerce_analytics_orders_select_query', 'fill_item_name_data_for_analytics_table', 10, 2 );
function fill_item_name_data_for_analytics_table( $results, $query ) {
    foreach ( $results as &$order_data ) {
        $order = wc_get_order( $order_data['order_id'] );
        if ( ! $order ) {
            $order_data['order_item_name'] = '';
            continue;
        }
        $item_names = [];
        foreach ( $order->get_items() as $item ) {
            $item_names[] = $item->get_name();
        }
        // 页面展示用换行分隔,也可以换成逗号
        $order_data['order_item_name'] = implode( '<br>', $item_names );
    }
    return $results;
}

// 4. 给导出CSV的列填充订单项名称数据
add_filter( 'woocommerce_analytics_orders_prepare_export_item', 'fill_item_name_data_for_analytics_export', 10, 2 );
function fill_item_name_data_for_analytics_export( $export_item, $order_data ) {
    $order = wc_get_order( $order_data['order_id'] );
    if ( ! $order ) {
        $export_item['order_item_name'] = '';
        return $export_item;
    }
    $item_names = [];
    foreach ( $order->get_items() as $item ) {
        $item_names[] = $item->get_name();
    }
    // CSV导出用逗号分隔,避免格式混乱
    $export_item['order_item_name'] = implode( ', ', $item_names );
    return $export_item;
}

生效操作

代码部署完成后,需要进入WooCommerce后台->Analytics->设置,点击清除分析缓存,刷新报表页面即可看到新增列,导出CSV也会同步包含该列数据。


内容的提问来源于stack exchange,提问作者Tim Darius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:27:03