Bricks 中文文档:bricks/query_filters/index_post/{source}

📄 原始资料  |  展开查看原始 JSON(bricks-query_filters-index_post-source.json){ “name”: “bricks/query_filters/index_post/{source}”, “kind”: “filter”, “url”: “https://academy.bricksbuilder.io/developer/hooks/filters/bricks-query_filters-index_post-source/”, “scraped_at”: “2026-08-29”, “hook_name”: “br…

📄 原始资料  |  展开查看原始 JSON(bricks-query_filters-index_post-source.json)
{
  "name": "bricks/query_filters/index_post/{source}",
  "kind": "filter",
  "url": "https://academy.bricksbuilder.io/developer/hooks/filters/bricks-query_filters-index_post-source/",
  "scraped_at": "2026-08-29",
  "hook_name": "bricks/query_filters/index_post/{source}",
  "description": {
    "en": "Filters the index rows generated for a post when the filter source is unknown or handled by a third-party provider. The {$source} portion of the hook name corresponds to the filter source (e.g., wcField or a custom source). Each row must include filter_id , object_id , object_type , filter_value , filter_value_display , filter_value_id , and filter_value_parent .",
    "zh": "当筛选源未知或由第三方 provider 处理时,筛选为文章生成的索引行。钩子名称中的 {$source} 部分对应于筛选源(例如 wcField 或自定义源)。每行必须包含 filter_id、object_id、object_type、filter_value、filter_value_display、filter_value_id 和 filter_value_parent。"
  },
  "parameters": [
    {
      "name": "rows",
      "type": "array",
      "type_zh": null,
      "description": {
        "en": "Array of index rows to be inserted into the database. Default is [] .",
        "zh": "将被插入数据库的索引行数组。默认为 []。"
      }
    },
    {
      "name": "post_id",
      "type": "int",
      "type_zh": null,
      "description": {
        "en": "The ID of the post being indexed.",
        "zh": "正在被索引的文章 ID。"
      }
    },
    {
      "name": "elements",
      "type": "array",
      "type_zh": null,
      "description": {
        "en": "Array of filter elements targeting this post.",
        "zh": "以该文章为目标的筛选元素数组。"
      }
    }
  ],
  "example_usage": "add_filter( 'bricks/query_filters/index_post/my_custom_source', function( $rows, $post_id, $elements ) {\n    foreach ( $elements as $element ) {\n        // Calculate filter value for this post\n        $value = get_post_meta( $post_id, 'my_custom_field', true );\n\n\n        if ( $value ) {\n            $rows[] = [\n                'filter_id'            => $element['filter_id'],\n                'object_id'            => $post_id,\n                'object_type'          => 'post',\n                'filter_value'         => $value,\n                'filter_value_display' => $value,\n                'filter_value_id'      => 0,\n                'filter_value_parent'  => 0,\n            ];\n        }\n    }\n\n\n    return $rows;\n}, 10, 3 );"
}

前言

当筛选源未知或由第三方 provider 处理时,筛选为文章生成的索引行。钩子名称中的 {$source} 部分对应于筛选源(例如 wcField 或自定义源)。每行必须包含 filter_id、object_id、object_type、filter_value、filter_value_display、filter_value_id 和 filter_value_parent。

用法

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

add_filter( 'bricks/query_filters/index_post/my_custom_source', function( $rows, $post_id, $elements ) {
    foreach ( $elements as $element ) {
        // Calculate filter value for this post
        $value = get_post_meta( $post_id, 'my_custom_field', true );


        if ( $value ) {
            $rows[] = [
                'filter_id'            => $element['filter_id'],
                'object_id'            => $post_id,
                'object_type'          => 'post',
                'filter_value'         => $value,
                'filter_value_display' => $value,
                'filter_value_id'      => 0,
                'filter_value_parent'  => 0,
            ];
        }
    }


    return $rows;
}, 10, 3 );

参数

  • $rows (array):将被插入数据库的索引行数组。默认为 []。
  • $post_id (int):正在被索引的文章 ID。
  • $elements (array):以该文章为目标的筛选元素数组。

示例代码

筛选返回值

add_filter( 'bricks/query_filters/index_post/my_custom_source', function( $rows, $post_id, $elements ) {
    foreach ( $elements as $element ) {
        // Calculate filter value for this post
        $value = get_post_meta( $post_id, 'my_custom_field', true );


        if ( $value ) {
            $rows[] = [
                'filter_id'            => $element['filter_id'],
                'object_id'            => $post_id,
                'object_type'          => 'post',
                'filter_value'         => $value,
                'filter_value_display' => $value,
                'filter_value_id'      => 0,
                'filter_value_parent'  => 0,
            ];
        }
    }


    return $rows;
}, 10, 3 );

根据条件短路返回原值

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

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

补充说明

更多细节可参考 官方文档