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

如何为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:39:04