DataViews 驱动的管理界面(例如站点编辑器的页面、模板、模板部件和图案界面)从服务器加载其配置:屏幕默认使用的布局、可见的字段、侧边栏中提供的预配置视图以及快速编辑表单中的字段。
配置是按实体构建的——由其类型(例如 postType)和名称(例如 page)标识——并可以通过动态 get_entity_view_config_{$kind}_{$name} 过滤器进行自定义,其中动态部分为小写:postType/page 实体映射到 get_entity_view_config_posttype_page 过滤器。编辑器通过 /wp/v2/view-config?kind={kind}&name={name} REST API 端点获取结果。
相关文档:
- 服务端视图配置过滤器:如何通过
get_entity_view_config_{$kind}_{$name}过滤器及其方法(merge、remove、replace、set)自定义配置。 - @wordpress/dataviews 包。
- Storybook:
本节列出视图配置的属性。它有四个顶级键:
default_view:用户未进行任何更改时应用的视图。default_layouts:用户可用的布局类型,以及每种布局类型适用的视图覆盖配置。view_list:显示在屏幕侧边栏中的预配置视图。form:快速编辑表单中的字段。
default_view
视图对象与 DataViews 组件 所消费的结构相同;请参阅其文档以获取完整的视图属性和过滤运算符列表。DataViews API 中有两个属性无法通过服务器过滤器配置:
search和page。这些由 URL 管理,当用户进行搜索或分页时由编辑器设置。
屏幕的默认 DataViews 配置:布局类型、可见字段、排序、过滤和分页。这是用户在自定义任何内容之前看到的视图。
| 属性 | 描述 | 类型 |
|---|---|---|
| type | 布局类型,可以是 table、grid、list 或 activity 之一。 | string |
| fields | 可见字段的 ID,按显示顺序排列。 | [ string ] |
| titleField | 用作记录标题的字段 ID。 | string |
| mediaField | 用作记录媒体(例如特色图片或预览)的字段 ID。 | string |
| descriptionField | 用作记录描述的字段 ID。 | string |
| showTitle | 是否显示标题。默认为 true。 | boolean |
| showMedia | 是否显示媒体。默认为 true。 | boolean |
| showDescription | 是否显示描述。默认为 true。 | boolean |
| showLevels | 是否显示记录的层级(例如子页面缩进在其父级下)。默认为 false。 | boolean |
| sort | 默认排序:字段 ID 和方向(asc 或 desc)。 | { field, direction } |
| filters | 应用于数据集的过滤器。设置了 isLocked 的过滤器不能被用户移除。 | [ { field, operator, value, isLocked } ] |
| perPage | 每页的记录数。 | integer |
| layout | 特定于所选布局类型的配置。参见 default_layouts。 | object |
default_layouts
用户可以切换的布局类型。每个键是一个布局类型(table、grid、list、activity);不存在的类型不会在 UI 中提供。每个值是在用户切换到该布局类型时应用的局部视图配置——空数组表示该类型可用且无覆盖配置。
| 属性 | 描述 | 类型 |
|---|---|---|
| table | 选择表格布局时应用的视图覆盖配置。 | object |
| grid | 选择网格布局时应用的视图覆盖配置。 | object |
| list | 选择列表布局时应用的视图覆盖配置。 | object |
常见的覆盖配置包括 layout(特定于布局的配置,例如表格的每列 styles 或网格的 badgeFields)以及视图属性如 showMedia。表格列的 styles 以字段 ID 为键,并应用于 fields 中列出的列;主列(渲染 titleField、mediaField 和 descriptionField 的列)占用其他列留下的宽度,因此以这些字段 ID 为键的样式会被忽略。当视图没有主列时,fields 中的最后一列将占用剩余宽度:
$default_layouts = array(
'table' => array(
'showMedia' => false,
'layout' => array(
'styles' => array(
'author' => array( 'width' => '1%' ),
),
),
),
'grid' => array(
'showMedia' => true,
'layout' => array(
'badgeFields' => array( 'sync-status' ),
),
),
);
view_list
显示在屏幕侧边栏中的预配置视图(例如“所有页面”、“已发布”、“草稿”)。每个条目包含:
| 属性 | 描述 | 类型 |
|---|---|---|
| title | 视图标题,显示在侧边栏中。 | string |
| slug | 视图的唯一标识符。在合并补丁时用作成员标识。 | string |
| view | 选中视图时应用于 default_view 之上的局部视图配置——通常是锁定的 filters,但任何视图属性均可工作。可选。 | object |
$view_list = array(
array(
'title' => __( 'All pages' ),
'slug' => 'all',
),
array(
'title' => __( 'Drafts' ),
'slug' => 'drafts',
'view' => array(
'filters' => array(
array(
'field' => 'status',
'operator' => 'isAny',
'value' => 'draft',
'isLocked' => true,
),
),
),
),
);
form
表单结构与 DataForm 组件 共享;请参阅其文档以获取完整的 Form Field API,包括每种布局类型的附加选项。
快速编辑表单的 DataForm 配置:显示哪些字段、按什么顺序显示以及每个字段如何布局。
| 属性 | 描述 | 类型 |
|---|---|---|
| layout | 表单字段的默认布局,例如 { 'type' => 'panel' }。 | { type } |
| fields | 表单中的字段,按显示顺序排列。每个条目是一个字段 ID,或者是一个用于进一步配置的对象(见下文)。 | [ string \| object ] |
声明为对象的字段接受以下参数:
| 属性 | 描述 | 类型 |
|---|---|---|
| id | 字段的 ID。在合并补丁时用作成员标识。 | string |
| label | 字段显示的标签,覆盖字段自身的标签。 | string |
| layout | 字段的渲染方式:type 为 regular、panel、card 或 row 之一,且 labelPosition 为 side、top 或 none 之一。 | { type, labelPosition } |
| children | 在此条目下组合的字段,遵循与 fields 相同的结构。 | [ string \| object ] |
仅渲染已注册的字段:如果表单条目的字段未针对该实体注册,编辑器会将其丢弃。
$form = array(
'layout' => array( 'type' => 'panel' ),
'fields' => array(
array(
'id' => 'featured_media',
'layout' => array(
'type' => 'regular',
'labelPosition' => 'none',
),
),
array(
'id' => 'status',
'label' => __( 'Status' ),
'children' => array( 'status', 'password', 'sticky' ),
),
'date',
'author',
),
);