如何在Woocommerce Analytics-Orders中添加账单公司名称列?
在WooCommerce Analytics Orders模块添加账单公司名称列
WooCommerce Analytics的Orders模块默认未包含账单公司名称列,你可以通过自定义代码片段实现该需求,具体操作如下:
1. 注册账单公司字段到分析报告
添加代码将账单公司名称注册为Orders分析模块的可用列:
add_filter( 'woocommerce_analytics_order_columns', 'add_billing_company_to_analytics_columns' ); function add_billing_company_to_analytics_columns( $columns ) { // 在客户名称后插入账单公司列,可调整数组位置改变显示顺序 $insert_after = array_search( 'customer_name', array_keys( $columns ) ); if ( false !== $insert_after ) { $new_columns = array_slice( $columns, 0, $insert_after + 1 ); $new_columns['billing_company'] = __( '账单公司', 'woocommerce' ); $new_columns = array_merge( $new_columns, array_slice( $columns, $insert_after + 1 ) ); return $new_columns; } // 若找不到客户名称列,直接添加到末尾 $columns['billing_company'] = __( '账单公司', 'woocommerce' ); return $columns; }
2. 填充账单公司字段的数据
从数据库中获取账单公司数据并填充到对应列:
add_filter( 'woocommerce_analytics_orders_select_query', 'add_billing_company_to_analytics_query' ); function add_billing_company_to_analytics_query( $query ) { // 关联wp_postmeta表获取账单公司数据 $query['join'] .= " LEFT JOIN {$GLOBALS['wpdb']->postmeta} AS billing_company_meta ON {$GLOBALS['wpdb']->posts}.ID = billing_company_meta.post_id AND billing_company_meta.meta_key = '_billing_company'"; $query['select'] .= ", billing_company_meta.meta_value AS billing_company"; return $query; }
3. 可选:开启账单公司列的排序功能
若需要该列支持排序,添加以下代码:
add_filter( 'woocommerce_analytics_orders_orderby_query', 'add_billing_company_order_support' ); function add_billing_company_order_support( $orderby_query ) { if ( isset( $_GET['orderby'] ) && 'billing_company' === $_GET['orderby'] ) { $order = isset( $_GET['order'] ) ? sanitize_text_field( $_GET['order'] ) : 'asc'; $orderby_query = "billing_company_meta.meta_value {$order}"; } return $orderby_query; }
使用说明
- 将上述代码添加到当前主题的
functions.php文件末尾,或使用Code Snippets这类代码片段插件添加(避免主题更新导致代码丢失)。 - 刷新WooCommerce Analytics的Orders页面后,即可看到新增的「账单公司」列。
内容的提问来源于stack exchange,提问作者Benji
相关产品推荐
相关产品推荐

