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 端点获取结果。

相关文档:

本节列出视图配置的属性。它有四个顶级键:

  • 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',
    ),
);