Bricks 中文文档:bricks/query_filters/datepicker_custom_field_meta_query

标签TAGS: 

📄 原始资料  |  展开查看原始 JSON(bricks-query_filters-datepicker_custom_field_meta_query.json){ “name”: “bricks/query_filters/datepicker_custom_field_meta_query”, “kind”: “filter”, “url”: “https://academy.bricksbuilder.io/developer/hooks/filters/bricks-query_filters-datepicker_custom_field_meta_quer…

📄 原始资料  |  展开查看原始 JSON(bricks-query_filters-datepicker_custom_field_meta_query.json)
{
  "name": "bricks/query_filters/datepicker_custom_field_meta_query",
  "kind": "filter",
  "url": "https://academy.bricksbuilder.io/developer/hooks/filters/bricks-query_filters-datepicker_custom_field_meta_query/",
  "scraped_at": "2026-08-29",
  "hook_name": "bricks/query_filters/datepicker_custom_field_meta_query",
  "description": {
    "en": "Filters the meta_query generated for a datepicker filter targeting a custom field. This allows you to customize how date comparisons are handled (e.g., date formats, range logic) for specific fields.",
    "zh": "筛选针对自定义字段的日期选择器筛选生成的 meta_query。允许你针对特定字段自定义日期比较的处理方式(例如日期格式、范围逻辑)。"
  },
  "parameters": [
    {
      "name": "meta_query",
      "type": "array",
      "type_zh": null,
      "description": {
        "en": "The generated meta_query array (e.g., ['key' => '...', 'value' => '...', 'type' => 'DATE'] ).",
        "zh": "已生成的 meta_query 数组(例如 ['key' => '...', 'value' => '...', 'type' => 'DATE'])。"
      }
    },
    {
      "name": "filter",
      "type": "array",
      "type_zh": null,
      "description": {
        "en": "The active filter data, including settings and parsed dates.",
        "zh": "激活的筛选数据,包括设置和已解析日期。"
      }
    },
    {
      "name": "provider",
      "type": "string",
      "type_zh": null,
      "description": {
        "en": "The data provider (e.g., acf , metabox ).",
        "zh": "数据 provider(例如 acf、metabox)。"
      }
    },
    {
      "name": "query_id",
      "type": "string",
      "type_zh": null,
      "description": {
        "en": "The ID of the query loop being filtered.",
        "zh": "正在被筛选的查询循环 ID。"
      }
    }
  ],
  "example_usage": "add_filter( 'bricks/query_filters/datepicker_custom_field_meta_query', function( $meta_query, $filter, $provider, $query_id ) {\n    // Example: Change type to 'NUMERIC' for timestamp fields stored as numbers\n    if ( $filter['settings']['fieldName'] === 'my_timestamp_field' ) {\n        if ( isset( $meta_query['type'] ) ) {\n            $meta_query['type'] = 'NUMERIC';\n        } elseif ( isset( $meta_query[0] ) ) {\n            // Handle range query (array of arrays)\n            foreach ( $meta_query as $key => $clause ) {\n                if ( is_int( $key ) ) {\n                    $meta_query[ $key ]['type'] = 'NUMERIC';\n                }\n            }\n        }\n    }\n\n\n    return $meta_query;\n}, 10, 4 );"
}

前言

筛选针对自定义字段的日期选择器筛选生成的 meta_query。允许你针对特定字段自定义日期比较的处理方式(例如日期格式、范围逻辑)。

用法

将代码加入子主题的 functions.php

add_filter( 'bricks/query_filters/datepicker_custom_field_meta_query', function( $meta_query, $filter, $provider, $query_id ) {
    // Example: Change type to 'NUMERIC' for timestamp fields stored as numbers
    if ( $filter['settings']['fieldName'] === 'my_timestamp_field' ) {
        if ( isset( $meta_query['type'] ) ) {
            $meta_query['type'] = 'NUMERIC';
        } elseif ( isset( $meta_query[0] ) ) {
            // Handle range query (array of arrays)
            foreach ( $meta_query as $key => $clause ) {
                if ( is_int( $key ) ) {
                    $meta_query[ $key ]['type'] = 'NUMERIC';
                }
            }
        }
    }


    return $meta_query;
}, 10, 4 );

参数

  • $meta_query (array):已生成的 meta_query 数组(例如 [‘key’ => ‘…’, ‘value’ => ‘…’, ‘type’ => ‘DATE’])。
  • $filter (array):激活的筛选数据,包括设置和已解析日期。
  • $provider (string):数据 provider(例如 acf、metabox)。
  • $query_id (string):正在被筛选的查询循环 ID。

示例代码

筛选返回值

add_filter( 'bricks/query_filters/datepicker_custom_field_meta_query', function( $meta_query, $filter, $provider, $query_id ) {
    // Example: Change type to 'NUMERIC' for timestamp fields stored as numbers
    if ( $filter['settings']['fieldName'] === 'my_timestamp_field' ) {
        if ( isset( $meta_query['type'] ) ) {
            $meta_query['type'] = 'NUMERIC';
        } elseif ( isset( $meta_query[0] ) ) {
            // Handle range query (array of arrays)
            foreach ( $meta_query as $key => $clause ) {
                if ( is_int( $key ) ) {
                    $meta_query[ $key ]['type'] = 'NUMERIC';
                }
            }
        }
    }


    return $meta_query;
}, 10, 4 );

根据条件短路返回原值

根据条件跳过或修改返回值:

add_filter( 'bricks/query_filters/datepicker_custom_field_meta_query', function( $value, $meta_query ) {
    if ( is_admin() ) { return $value; }
    // TODO: custom logic here
    return $value;
} );

补充说明

更多细节可参考 官方文档