{"id":121795,"date":"2026-03-04T08:08:55","date_gmt":"2026-03-04T08:08:55","guid":{"rendered":"https:\/\/make.wordpress.org\/core\/?p=121795"},"modified":"2026-03-04T08:10:39","modified_gmt":"2026-03-04T08:10:39","slug":"dataviews-dataform-et-al-in-wordpress-7-0","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/","title":{"rendered":"DataViews, DataForm, et al. in WordPress 7.0"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><em>Previous cycle: <a href=\"https:\/\/make.wordpress.org\/core\/2025\/11\/11\/dataviews-dataform-et-al-in-wordpress-6-9\/\">WordPress 6.9<\/a>.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a summary of the changes introduced in the \u201cdataviews space\u201d during the WordPress 7.0 cycle from the <span tabindex='0' class='glossary-item-container'>API<span class='glossary-item-hidden-content'><span class='glossary-item-header'>API<\/span> <span class='glossary-item-description'>An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.<\/span><\/span><\/span> perspective. They have been posted in\u00a0<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/73076\">the corresponding iteration issue<\/a>\u00a0as well. To follow what\u2019s next, subscribe to the\u00a0<a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/76045\">iteration issue for WordPress 7.1<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The changes listed here include\u00a0<strong>166 contributions<\/strong>\u00a0by\u00a0<strong>35 unique authors<\/strong>\u00a0across the community during the past\u00a0<strong>4.5 months<\/strong>\u00a0(since October 17th, 2025).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#field-api\">Field API<\/a>\n<ul class=\"wp-block-list\">\n<li><code><a href=\"#field-api-format\">format<\/a><\/code>: numbers and dates<\/li>\n\n\n\n<li><code><a href=\"#field-api-getvalueformatted\">getValueFormatted<\/a><\/code>: custom formats<\/li>\n\n\n\n<li><code><a href=\"#field-api-isvalid\">isValid<\/a><\/code>: pattern, minLength, maxLength, min, max<\/li>\n\n\n\n<li><a href=\"#field-api-markwhenoptional\">Edit<\/a>: <code>markWhenOptional<\/code><\/li>\n\n\n\n<li><a href=\"#field-api-controls\">Edit<\/a>: <code>combobox<\/code> and <code>adaptiveSelect<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"#dataviews\">DataViews<\/a>\n<ul class=\"wp-block-list\">\n<li><a href=\"#dataviews-activity\">Activity layout<\/a> (new)<\/li>\n\n\n\n<li><a href=\"#dataviews-list\">List layout<\/a>: supports density<\/li>\n\n\n\n<li><code><a href=\"#dataviews-groupby\">groupBy<\/a><\/code>: field, direction, label<\/li>\n\n\n\n<li><code><a href=\"#dataviews-onreset\">onReset<\/a><\/code>: integrate with persistence<\/li>\n\n\n\n<li><a href=\"#dataviews-styles\">Styles<\/a>: background color<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"#dataform\">DataForm<\/a>\n<ul class=\"wp-block-list\">\n<li><a href=\"#dataform-details\">Details layout<\/a> (new)<\/li>\n\n\n\n<li><a href=\"#dataform-panel\">Panel layout<\/a>: <code>editVisibility<\/code><\/li>\n\n\n\n<li><a href=\"#dataform-card\">Card layout<\/a>: <code>isCollapsible<\/code><\/li>\n\n\n\n<li><code><a href=\"#dataform-validity\">validity<\/a><\/code>: pattern, minLength, maxLength, min, max<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a href=\"#dataviews-picker\">DataViewsPicker<\/a>\n<ul class=\"wp-block-list\">\n<li><code><a href=\"#dataviews-picker-groupby\">groupBy<\/a><\/code><\/li>\n\n\n\n<li><a href=\"#dataviews-picker-table\"><code>pickerTable<\/code> layout<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<!--more-->\n\n\n\n<h2 id=\"field-api\" class=\"wp-block-heading\">Field API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For more information, consult the two reference documents:\u00a0<a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#fields-api\" target=\"_blank\" rel=\"noreferrer noopener\">developer docs<\/a>, the\u00a0<a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/docs\/dataviews-fieldtypes--docs\" target=\"_blank\" rel=\"noreferrer noopener\">storybook<\/a>.<\/p>\n\n\n\n<h3 id=\"field-api-format\" class=\"wp-block-heading\">format<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#format\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Configures display formatting (separators, decimals, date patterns) for numeric and date field types.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const fields = [\n\t{\n\t\tid: 'price',\n\t\tlabel: 'Price',\n\t\ttype: 'number',\n\t\tformat: {\n\t\t\tseparatorThousand: ',',\n\t\t\tseparatorDecimal: '.',\n\t\t\tdecimals: 2,\n\t\t},\n\t},\n\t{\n\t\tid: 'publishDate',\n\t\ttype: 'date',\n\t\tlabel: 'Published',\n\t\tformat: {\n\t\t\tdate: 'F j, Y',\n\t\t\tweekStartsOn: 1,\n\t\t},\n    },\n  ];<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The supported types are: <code>integer<\/code>, <code>number<\/code>, <code>datetime<\/code>, and <code>date<\/code>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Field type<\/th><th>Format config<\/th><th>Default<\/th><\/tr><\/thead><tbody><tr><td>integer<\/td><td>separatorThousand<\/td><td>Formats with thousand separator (default <code>,<\/code>). Example: <code>1,000<\/code>.<\/td><\/tr><tr><td>number<\/td><td>separatorThousand, separatorDecimal, decimals<\/td><td>Formats with separators and fixed decimals (defaults <code>,<\/code>, <code>.<\/code>, <code>2<\/code> respectively). Example: <code>1,000.00<\/code>.<\/td><\/tr><tr><td>datetime<\/td><td>datetime, weekStartsOn<\/td><td>Formats via <a href=\"https:\/\/www.php.net\/manual\/en\/datetime.format.php\" target=\"_blank\" rel=\"noreferrer noopener\">PHP date string<\/a> (defaults to WP settings).<\/td><\/tr><tr><td>date<\/td><td>date, weekStartsOn<\/td><td>Formats via <a href=\"https:\/\/www.php.net\/manual\/en\/datetime.format.php\" target=\"_blank\" rel=\"noreferrer noopener\">PHP date string<\/a> (defaults to WP settings).<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"field-api-getvalueformatted\" class=\"wp-block-heading\">getValueFormatted<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#getvalueformatted\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Optional function that applies the format to produce a display string, so that field authors can override the bundled formats, and provide its own.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, provide a custom function to transforms 2048 bytes into \u201c2.0 KB\u201d and 1073741824 into \u201c1.0 GB\u201d:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const field = {\n  id: \"filesize\",\n  label: \"File size\",\n  type: \"integer\",\n  getValueFormatted: ( { item, field } ) =&gt; {\n    const bytes = field.getValue( { item } );\n    if (! bytes) {\n      return \"\";\n    }\n\n    const units = [\"B\", \"KB\", \"MB\", \"GB\"];\n    let i = 0;\n    let size = bytes;\n    while (size &gt;= 1024 &amp;&amp; i &lt; units.length - 1) {\n      size \/= 1024;\n      i++;\n    }\n\n    return `${size.toFixed(i === 0 ? 0 : 1)} ${units[i]}`;\n  },\n};<\/code><\/pre>\n\n\n\n<h3 id=\"field-api-isvalid\" class=\"wp-block-heading\">isValid<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#isvalid\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The declarative validation rules supported by the field types and the Edit controls have been expanded:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>pattern<\/code>: a regex pattern string that the field value must match.<\/li>\n\n\n\n<li><code>minLength<\/code>: minimum string length for the field value.<\/li>\n\n\n\n<li><code>maxLength<\/code>: maximum string length for the field value.<\/li>\n\n\n\n<li><code>min<\/code>: minimum numeric value for the field.<\/li>\n\n\n\n<li><code>max<\/code>: maximum numeric value for the field.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Rule<\/th><th>Supported by<\/th><th>Example<\/th><\/tr><\/thead><tbody><tr><td>pattern<\/td><td>text, email, telephone, url<\/td><td><code>isValid: { pattern: '^[a-z0-9-]+$' }<\/code><\/td><\/tr><tr><td>minLength<\/td><td>text, email, telephone, url<\/td><td><code>isValid: { minLength: 3 }<\/code><\/td><\/tr><tr><td>maxLength<\/td><td>text, email, telephone, url<\/td><td><code>isValid: { maxLength: 200 }<\/code><\/td><\/tr><tr><td>min<\/td><td>integer, number<\/td><td><code>isValid: { min: 0 }<\/code><\/td><\/tr><tr><td>max<\/td><td>integer, number<\/td><td><code>isValid: { max: 999 }<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const field = {\n\tid: 'itemsAvailable',\n    label: 'Items available',\n    type: 'integer',\n    isValid: {\n\t\trequired: true,\n\t\tmin: 0,\n\t\tmax: 10000,\n\t},\n};<\/code><\/pre>\n\n\n\n<h3 id=\"field-api-markwhenoptional\" class=\"wp-block-heading\">Edit: <code>markWhenOptional<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#edit\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Edit controls now support two different ways of reporting validation in the label: either they get a <code>(required)<\/code> suffix or a <code>(optional)<\/code> one. This is controlled via <code>markWhenOptional<\/code> in the Edit implementation.<\/p>\n\n\n\n<h3 id=\"field-api-controls\" class=\"wp-block-heading\">Edit: <code>combobox<\/code> and <code>adaptiveSelect<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#edit\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s a new <code>combobox<\/code> control that scales better than the existing <code>select<\/code> control to handle hundreds of elements.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Additionally, we\u2019ve also added a <code>adaptiveSelect<\/code> control that renders either <code>select<\/code> or <code>combobox<\/code> depending or the number of elements. This enables field authors to deal with fields whose elements are dynamic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">{\n\tid: 'categories',\n\tlabel: 'Categories'\n\ttype: 'text',\n\tEdit: 'adaptiveSelect',\n\telements: [\n\t\t{ value: 'blog', label: 'Blog' },\n\t\t{ value: 'News', label: 'News' },\n\t\t{ value: 'Tutorial', label: 'Tutorial' },\n\t\t\/\/ ...\n\t]\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>State<\/th><th>Combobox<\/th><th>Select<\/th><\/tr><\/thead><tbody><tr><td>Rest<\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"592\" height=\"206\" data-attachment-id=\"121797\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-13-44-11\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-1.png\" data-orig-size=\"592,206\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 13.44.11\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-300x104.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-1.png\" class=\"wp-image-121797\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-1.png 592w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.11-300x104.png 300w\" sizes=\"auto, (max-width: 592px) 100vw, 592px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"368\" height=\"230\" data-attachment-id=\"121798\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-13-44-25\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-1.png\" data-orig-size=\"368,230\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 13.44.25\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-300x188.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-1.png\" class=\"wp-image-121798\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-1.png 368w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.25-300x188.png 300w\" sizes=\"auto, (max-width: 368px) 100vw, 368px\"><\/td><\/tr><tr><td>Opened<\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"592\" height=\"404\" data-attachment-id=\"121799\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-13-43-24\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-1.png\" data-orig-size=\"592,404\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 13.43.24\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-300x205.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-1.png\" class=\"wp-image-121799\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-1.png 592w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.43.24-300x205.png 300w\" sizes=\"auto, (max-width: 592px) 100vw, 592px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"258\" data-attachment-id=\"121800\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-13-44-33\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-1.png\" data-orig-size=\"400,258\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 13.44.33\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-300x194.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-1.png\" class=\"wp-image-121800\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-1.png 400w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-13.44.33-300x194.png 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 id=\"dataviews\" class=\"wp-block-heading\">DataViews<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For more information, consult the two reference documents: <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/docs\/dataviews-dataviews--docs\">storybook<\/a>, <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#dataviews\">developer docs<\/a>.<\/p>\n\n\n\n<h3 id=\"dataviews-activity\" class=\"wp-block-heading\">Activity layout (new)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviews--layout-activity\" target=\"_blank\" rel=\"noreferrer noopener\">Storybook<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s a new layout called <code>activity<\/code> that uses an activity-feed-timeline style.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"592\" height=\"1024\" data-attachment-id=\"121802\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-03-at-13-42-26\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-1.png\" data-orig-size=\"826,1428\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-03 at 13.42.26\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-174x300.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-592x1024.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-592x1024.png\" alt=\"\" class=\"wp-image-121802\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-592x1024.png 592w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-174x300.png 174w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-768x1327.png 768w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.42.26-1.png 826w\" sizes=\"auto, (max-width: 592px) 100vw, 592px\"><\/a><\/figure>\n\n\n\n<h3 id=\"dataviews-list\" class=\"wp-block-heading\">List layout supports <code>density<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#view-object\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ViewList now accepts an optional layout with a density setting (was previously layout-less), which the users can also configure via the view config.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const listLayout = { type: 'list', layout: { density: 'compact' } };<\/code><\/pre>\n\n\n\n<h3 id=\"dataviews-groupby\" class=\"wp-block-heading\">groupBy<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#view-object\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<br>Stories: <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviews--layout-table&amp;args=groupBy:!true\" target=\"_blank\" rel=\"noreferrer noopener\">table<\/a>, <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviews--layout-grid&amp;args=groupBy:!true\" target=\"_blank\" rel=\"noreferrer noopener\">grid<\/a>, <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviews--layout-list&amp;args=groupBy:!true\" target=\"_blank\" rel=\"noreferrer noopener\">list<\/a>, <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviews--layout-activity\" target=\"_blank\" rel=\"noreferrer noopener\">activity<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>groupByField<\/code> string in DataViews\u2019 view config was replaced by a <code>groupBy<\/code> object that supports field, direction, and label visibility.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">\/\/ Before (WordPress 6.9)\nconst view = { groupByField: 'status' };\n\n\/\/ After (WordPress 7.0)\nconst view = { groupBy: { field: 'status', direction: 'asc', showLabel: true } };<\/code><\/pre>\n\n\n\n<h3 id=\"dataviews-onreset\" class=\"wp-block-heading\">onReset<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#onreset-void-false\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A new prop that controls the \u201cReset view\u201d button in the view configuration dropdown:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>When\u00a0<code>undefined<\/code>\u00a0(not provided): No reset functionality is shown. Use this when view persistence is not supported.<\/li>\n\n\n\n<li>When\u00a0<code>false<\/code>: The \u201cReset view\u201d button is shown but disabled. Use this when view persistence is supported but the current view matches the default (not modified).<\/li>\n\n\n\n<li>When a function: The \u201cReset view\u201d button is shown and enabled. A blue dot indicator appears on the view options button to signal that the view has been modified. The function is called when the user clicks the reset button.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"dataviews-styles\" class=\"wp-block-heading\">Set background color<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#styling\" target=\"_blank\" rel=\"noreferrer noopener\">Developer docs<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s a new <span tabindex='0' class='glossary-item-container'>CSS<span class='glossary-item-hidden-content'><span class='glossary-item-header'>CSS<\/span> <span class='glossary-item-description'>Cascading Style Sheets.<\/span><\/span><\/span> Custom Property, <code>--wp-dataviews-color-background<\/code>, that can be used to set the background color of DataViews, so it follows the container.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"jsx\" class=\"language-jsx\">&lt;div\n\tstyle={{\n\t\t'--wp-dataviews-color-background': backgroundColor,\n\t}}\n&gt;\n\t&lt;DataViews \/&gt;\n&lt;\/div&gt;<\/code><\/pre>\n\n\n\n<h2 id=\"dataform\" class=\"wp-block-heading\">DataForm<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For more information, consult the two reference docs: <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/docs\/dataviews-dataform--docs\">storybook<\/a>, <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#dataform\">developer docs<\/a>.<\/p>\n\n\n\n<h3 id=\"dataform-details\" class=\"wp-block-heading\">Details layout (new)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataform--layout-details\" target=\"_blank\" rel=\"noreferrer noopener\">Storybook<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A new form layout renders fields inside a native <code>&lt;details&gt;<\/code> element.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const form = {\n\tfields: [ {\n\t\tid: 'metadata',\n\t\tlabel: 'Metadata',\n\t\tchildren: [ 'fileSize', 'dimensions' ],\n\t\tlayout: {\n\t\t\ttype: 'details',\n\t\t\tsummary: 'fieldSummary'\n\t\t},\n\t} ],\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"508\" height=\"604\" data-attachment-id=\"121804\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-03-at-13-44-50\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-1.png\" data-orig-size=\"508,604\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-03 at 13.44.50\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-252x300.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-1.png\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-1.png\" alt=\"\" class=\"wp-image-121804\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-1.png 508w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-03-at-13.44.50-252x300.png 252w\" sizes=\"auto, (max-width: 508px) 100vw, 508px\"><\/a><\/figure>\n\n\n\n<h3 id=\"dataform-panel\" class=\"wp-block-heading\">Panel layout: <code>editVisibility<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The panel trigger has been refactored and it now also includes an edit icon, whose visibility can be configured to <code>on-hover<\/code> (icon is displayed on hover over the field) or <code>always<\/code> (icon is always visible).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const form = {\n\tfields: [ {\n\t\tid: 'status',\n\t\tlayout: {\n\t\t\ttype: 'panel',\n\t\t\teditVisibility: 'always'\n\t\t}\n\t} ]\n};<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>On hover<\/th><th>Always<\/th><\/tr><\/thead><tbody><tr><td><img loading=\"lazy\" decoding=\"async\" width=\"1022\" height=\"1064\" data-attachment-id=\"121806\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-49-08\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-1.png\" data-orig-size=\"1022,1064\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.49.08\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-288x300.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-984x1024.png\" class=\"wp-image-121806\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-1.png 1022w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-288x300.png 288w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-767x799.png 767w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.08-984x1024.png 984w\" sizes=\"auto, (max-width: 1022px) 100vw, 1022px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"1022\" height=\"1064\" data-attachment-id=\"121805\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-49-18\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-1.png\" data-orig-size=\"1022,1064\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.49.18\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-288x300.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-984x1024.png\" class=\"wp-image-121805\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-1.png 1022w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-288x300.png 288w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-767x799.png 767w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.49.18-984x1024.png 984w\" sizes=\"auto, (max-width: 1022px) 100vw, 1022px\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"dataform-card\" class=\"wp-block-heading\">Card layout: <code>isCollapsible<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cards can optionally prevent collapsing. Default is true.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const form = {\n\tfields: [ {\n\t\tid: 'customer',\n\t\tlayout: {\n\t\t\ttype: 'card',\n\t\t\tisCollapsible: true\n\t\t},\n\t} ]\n};<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Collapsible<\/th><th>Non collapsible<\/th><\/tr><\/thead><tbody><tr><td><img loading=\"lazy\" decoding=\"async\" width=\"1022\" height=\"956\" data-attachment-id=\"121809\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-52-49\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-1.png\" data-orig-size=\"1022,956\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.52.49\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-300x281.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-1.png\" class=\"wp-image-121809\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-1.png 1022w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-300x281.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.49-768x718.png 768w\" sizes=\"auto, (max-width: 1022px) 100vw, 1022px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"1022\" height=\"956\" data-attachment-id=\"121808\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-52-44\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-1.png\" data-orig-size=\"1022,956\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.52.44\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-300x281.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-1.png\" class=\"wp-image-121808\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-1.png 1022w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-300x281.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.52.44-768x718.png 768w\" sizes=\"auto, (max-width: 1022px) 100vw, 1022px\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 id=\"dataform-validity\" class=\"wp-block-heading\">validity<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">All bundled DataForm layouts support the <code>validity<\/code> prop, and so they display error states properly. Additionally, validity has been expanded to support more rules: <code>pattern<\/code>, <code>minLength<\/code>, <code>maxLength<\/code>, <code>min<\/code>, <code>max<\/code>. See the Field API section for more info.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Panel<\/th><th>Card<\/th><th>Details<\/th><\/tr><\/thead><tbody><tr><td><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"676\" data-attachment-id=\"121813\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-58-14\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-1.png\" data-orig-size=\"500,676\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.58.14\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-222x300.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-1.png\" class=\"wp-image-121813\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-1.png 500w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.14-222x300.png 222w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"1176\" height=\"838\" data-attachment-id=\"121812\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-58-33\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-1.png\" data-orig-size=\"1176,838\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.58.33\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-300x214.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-1024x730.png\" class=\"wp-image-121812\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-1.png 1176w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-300x214.png 300w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-768x547.png 768w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.33-1024x730.png 1024w\" sizes=\"auto, (max-width: 1176px) 100vw, 1176px\"><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"628\" height=\"524\" data-attachment-id=\"121811\" data-permalink=\"https:\/\/make.wordpress.org\/core\/2026\/03\/04\/dataviews-dataform-et-al-in-wordpress-7-0\/screenshot-2026-03-02-at-16-58-54\/#main\" data-orig-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-1.png\" data-orig-size=\"628,524\" data-comments-opened=\"1\" data-image-meta='{\"aperture\":\"0\",\"credit\":\"\",\"camera\":\"\",\"caption\":\"\",\"created_timestamp\":\"0\",\"copyright\":\"\",\"focal_length\":\"0\",\"iso\":\"0\",\"shutter_speed\":\"0\",\"title\":\"\",\"orientation\":\"0\"}' data-image-title=\"Screenshot 2026-03-02 at 16.58.54\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-300x250.png\" data-large-file=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-1.png\" class=\"wp-image-121811\" style=\"width: 150px\" src=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-1.png\" alt=\"\" srcset=\"https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-1.png 628w, https:\/\/make.wordpress.org\/core\/files\/2026\/03\/Screenshot-2026-03-02-at-16.58.54-300x250.png 300w\" sizes=\"auto, (max-width: 628px) 100vw, 628px\"><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 id=\"dataviews-picker\" class=\"wp-block-heading\">DataViewsPicker<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For more information, consult the two reference docs: <a href=\"https:\/\/wordpress.github.io\/gutenberg\/?path=\/story\/dataviews-dataviewspicker--default\" target=\"_blank\" rel=\"noreferrer noopener\">storybook<\/a>, <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-dataviews\/#dataviewspicker\" target=\"_blank\" rel=\"noreferrer noopener\">developer docs<\/a>.<\/p>\n\n\n\n<h3 id=\"dataviews-picker-groupby\" class=\"wp-block-heading\">groupBy<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">See related section in DataViews component.<\/p>\n\n\n\n<h3 id=\"dataviews-picker-table\" class=\"wp-block-heading\"><code>pickerTable<\/code> layout<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s a table layout variant for pickers, complementing the existing pickerGrid. Supports column styles, density, and column moving. The <code>pickerTable<\/code> layout accepts the same layout options as the regular table:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"typescript\" class=\"language-typescript\">const view = {\n\ttype: 'pickerTable',\n\tlayout: {\n\t\tstyles: {\n\t\t\tname: { width: '50%' },\n\t\t\tstatus: { align: 'end' }\n\t\t},\n\t\tdensity: 'compact',\n\t\tenableMoving: false,\n\t}\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Props to <a href=\"https:\/\/profiles.wordpress.org\/ntsekouras\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>ntsekouras<\/a> for proofreading\/tech review, and to <a href=\"https:\/\/profiles.wordpress.org\/isabel_brison\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>isabel_brison<\/a> <a href=\"https:\/\/profiles.wordpress.org\/andrewserong\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>andrewserong<\/a> <a href=\"https:\/\/profiles.wordpress.org\/talldanwp\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>talldanwp<\/a> for the DataViewsPicker updates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/dev-notes-7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>dev-notes-7-0<\/a>, <a href=\"https:\/\/make.wordpress.org\/core\/tag\/7-0\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>7-0<\/a><\/p>\n<nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fcore%2F2026%2F03%2F04%2Fdataviews-dataform-et-al-in-wordpress-7-0%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>Previous cycle: WordPress 6.9. This is a summary of the changes introduced in the \u201cdataviews space\u201d during the WordPress 7.0 cycle from the APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. perspective. They have been posted [&hellip;]<\/p>\n","protected":false},"author":15155084,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1175],"tags":[5676,1443,5834],"class_list":["post-121795","post","type-post","status-publish","format-standard","hentry","category-general","tag-7-0","tag-dev-notes","tag-dev-notes-7-0","mentions-andrewserong","mentions-isabel_brison","mentions-ntsekouras","mentions-talldanwp","author-oandregal"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2AvED-vGr","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/users\/15155084"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/comments?post=121795"}],"version-history":[{"count":17,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121795\/revisions"}],"predecessor-version":[{"id":121859,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/posts\/121795\/revisions\/121859"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/media?parent=121795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/categories?post=121795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/core\/wp-json\/wp\/v2\/tags?post=121795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}