Bricks 中文文档:bricks/query_filters_indexer/post/{filter_source}

📄 原始资料  |  展开查看原始 JSON(bricks-query_filters_indexer-post-filter_source.json){ “name”: “bricks/query_filters_indexer/post/{filter_source}”, “kind”: “filter”, “url”: “https://academy.bricksbuilder.io/developer/hooks/filters/bricks-query_filters_indexer-post-filter_source/”, “scraped_at”: “20…

📄 原始资料  |  展开查看原始 JSON(bricks-query_filters_indexer-post-filter_source.json)
{
  "name": "bricks/query_filters_indexer/post/{filter_source}",
  "kind": "filter",
  "url": "https://academy.bricksbuilder.io/developer/hooks/filters/bricks-query_filters_indexer-post-filter_source/",
  "scraped_at": "2026-08-29",
  "hook_name": "bricks/query_filters_indexer/post/{filter_source}",
  "description": {
    "en": "Filters the index rows generated for a post by the Query Filters Indexer when processing a specific filter job. The {$filter_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": "当处理特定筛选任务时,筛选 Query Filters Indexer 为文章生成的索引行。钩子名称中的 {$filter_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. Default is [] .",
        "zh": "将被插入的索引行数组。默认为 []。"
      }
    },
    {
      "name": "post",
      "type": "WP_Post|int",
      "type_zh": null,
      "description": {
        "en": "The post object or ID being indexed.",
        "zh": "正在被索引的文章对象或 ID。"
      }
    },
    {
      "name": "filter_id",
      "type": "string",
      "type_zh": null,
      "description": {
        "en": "The ID of the filter element.",
        "zh": "筛选元素的 ID。"
      }
    },
    {
      "name": "filter_settings",
      "type": "array",
      "type_zh": null,
      "description": {
        "en": "The settings of the filter element.",
        "zh": "筛选元素的设置。"
      }
    }
  ],
  "example_usage": "add_filter( 'bricks/query_filters_indexer/post/my_custom_source', function( $rows, $post, $filter_id, $filter_settings ) {\n    // Generate index rows for custom logic\n    $value = get_post_meta( $post->ID, 'my_custom_field', true );\n\n\n    if ( $value ) {\n        $rows[] = [\n            'filter_id'            => $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    return $rows;\n}, 10, 4 );"
}

前言

当处理特定筛选任务时,筛选 Query Filters Indexer 为文章生成的索引行。钩子名称中的 {$filter_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_indexer/post/my_custom_source', function( $rows, $post, $filter_id, $filter_settings ) {
    // Generate index rows for custom logic
    $value = get_post_meta( $post->ID, 'my_custom_field', true );


    if ( $value ) {
        $rows[] = [
            'filter_id'            => $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, 4 );

参数

  • $rows (array):将被插入的索引行数组。默认为 []。
  • $post (WP_Post|int):正在被索引的文章对象或 ID。
  • $filter_id (string):筛选元素的 ID。
  • $filter_settings (array):筛选元素的设置。

示例代码

筛选返回值

add_filter( 'bricks/query_filters_indexer/post/my_custom_source', function( $rows, $post, $filter_id, $filter_settings ) {
    // Generate index rows for custom logic
    $value = get_post_meta( $post->ID, 'my_custom_field', true );


    if ( $value ) {
        $rows[] = [
            'filter_id'            => $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, 4 );

根据条件短路返回原值

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

add_filter( 'bricks/query_filters_indexer/post/{filter_source}', function( $value, $rows ) {
    if ( is_admin() ) { return $value; }
    // TODO: custom logic here
    return $value;
} );

补充说明

更多细节可参考 官方文档