📄 原始资料 | 展开查看原始 JSON(bricks-query_filters-range_custom_field_meta_query.json){ “name”: “bricks/query_filters/range_custom_field_meta_query”, “kind”: “filter”, “url”: “https://academy.bricksbuilder.io/developer/hooks/filters/bricks-query_filters-range_custom_field_meta_query/”, “scraped_a…
📄 原始资料 | 展开查看原始 JSON(bricks-query_filters-range_custom_field_meta_query.json)
{
"name": "bricks/query_filters/range_custom_field_meta_query",
"kind": "filter",
"url": "https://academy.bricksbuilder.io/developer/hooks/filters/bricks-query_filters-range_custom_field_meta_query/",
"scraped_at": "2026-08-29",
"hook_name": "bricks/query_filters/range_custom_field_meta_query",
"description": {
"en": "Filters the meta_query generated for a range filter (slider) targeting a custom field. This allows you to customize how the range comparison is performed (e.g., handling decimal values, changing the data type).",
"zh": "筛选针对自定义字段的范围筛选(滑块)生成的 meta_query。允许你自定义范围比较的执行方式(例如处理十进制值、更改数据类型)。"
},
"parameters": [
{
"name": "meta_query",
"type": "array",
"type_zh": null,
"description": {
"en": "The generated meta_query array (e.g., ['key' => '...', 'value' => [min, max], 'compare' => 'BETWEEN', 'type' => 'NUMERIC'] ).",
"zh": "已生成的 meta_query 数组(例如 ['key' => '...', 'value' => [min, max], 'compare' => 'BETWEEN', 'type' => 'NUMERIC'])。"
}
},
{
"name": "filter",
"type": "array",
"type_zh": null,
"description": {
"en": "The active filter data, including settings and selected min/max values.",
"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/range_custom_field_meta_query', function( $meta_query, $filter, $provider, $query_id ) {\n // Example: Change type to 'DECIMAL' for precise price filtering\n if ( $filter['settings']['fieldName'] === 'product_price' ) {\n $meta_query['type'] = 'DECIMAL(10,2)';\n }\n\n\n return $meta_query;\n}, 10, 4 );"
}
前言
筛选针对自定义字段的范围筛选(滑块)生成的 meta_query。允许你自定义范围比较的执行方式(例如处理十进制值、更改数据类型)。
用法
将代码加入子主题的 functions.php:
add_filter( 'bricks/query_filters/range_custom_field_meta_query', function( $meta_query, $filter, $provider, $query_id ) {
// Example: Change type to 'DECIMAL' for precise price filtering
if ( $filter['settings']['fieldName'] === 'product_price' ) {
$meta_query['type'] = 'DECIMAL(10,2)';
}
return $meta_query;
}, 10, 4 );
参数
$meta_query (array):已生成的 meta_query 数组(例如 [‘key’ => ‘…’, ‘value’ => [min, max], ‘compare’ => ‘BETWEEN’, ‘type’ => ‘NUMERIC’])。
$filter (array):激活的筛选数据,包括设置和所选的最小/最大値。
$provider (string):数据 provider(例如 acf、metabox)。
$query_id (string):正在被筛选的查询循环 ID。
示例代码
筛选返回值
add_filter( 'bricks/query_filters/range_custom_field_meta_query', function( $meta_query, $filter, $provider, $query_id ) {
// Example: Change type to 'DECIMAL' for precise price filtering
if ( $filter['settings']['fieldName'] === 'product_price' ) {
$meta_query['type'] = 'DECIMAL(10,2)';
}
return $meta_query;
}, 10, 4 );
根据条件短路返回原值
根据条件跳过或修改返回值:
add_filter( 'bricks/query_filters/range_custom_field_meta_query', function( $value, $meta_query ) {
if ( is_admin() ) { return $value; }
// TODO: custom logic here
return $value;
} );
补充说明
更多细节可参考 官方文档。