如何为WooCommerce Analytics添加自定义meta筛选器
WooCommerce Analytics 自定义订单Meta筛选实现方案
无需编写自定义JS,仅通过PHP钩子即可实现WooCommerce 4.0+版本Analytics报表的自定义筛选扩展,以下是可直接使用的代码片段:
代码实现
1. 注册自定义筛选器到报表界面
使用woocommerce_admin_report_filters钩子将自定义筛选选项添加到对应报表的筛选栏:
add_filter( 'woocommerce_admin_report_filters', 'wc_custom_order_meta_analytics_filter' ); function wc_custom_order_meta_analytics_filter( $filters ) { // 可按需修改要添加筛选器的报表列表,支持orders、revenue、products等所有WooCommerce内置报表 $target_reports = [ 'orders' ]; $current_report = isset( $_GET['report'] ) ? $_GET['report'] : ''; if ( in_array( $current_report, $target_reports ) ) { $filters['custom_order_meta'] = [ 'title' => '你的自定义Meta名称', // 替换为筛选器展示的名称 'type' => 'select', // 可选值:select、input、date等 'options' => [ '' => '全部', 'value1' => '选项1', // 替换为你的meta值对应展示名称 'value2' => '选项2', // 可动态查询所有存在的自定义meta值填充此处 ], ]; } return $filters; }
2. 应用筛选参数到查询逻辑
使用woocommerce_analytics_orders_query_args钩子将筛选参数绑定到订单查询条件,实现按自定义meta过滤报表数据:
add_filter( 'woocommerce_analytics_orders_query_args', 'wc_apply_custom_meta_filter_to_query', 10, 2 ); function wc_apply_custom_meta_filter_to_query( $query_args, $request ) { // 检查是否提交了自定义筛选值 if ( isset( $request['custom_order_meta'] ) && ! empty( $request['custom_order_meta'] ) ) { $query_args['meta_query'][] = [ 'key' => 'your_meta_key', // 替换为你实际的订单自定义meta键名 'value' => sanitize_text_field( $request['custom_order_meta'] ), 'compare' => '=', // 可根据需求修改为>、<、LIKE等比较符 ]; } return $query_args; }
使用说明
- 将上述代码添加到站点当前主题的
functions.php文件,或者自定义功能插件的代码文件中即可生效 - 若需要支持多值筛选、范围筛选等能力,只需修改筛选器类型和meta查询的参数即可
内容的提问来源于stack exchange,提问作者Prajwol
相关产品推荐
相关产品推荐

