Title: July 16, 2020 – Make WordPress Core

---

#  Daily Archives: July 16, 2020

 [  ](https://profiles.wordpress.org/timothyblynjacobs/) [Timothy Jacobs](https://profiles.wordpress.org/timothyblynjacobs/)
8:33 pm _on_ July 16, 2020     
Tags: [5.5 ( 87 )](https://make.wordpress.org/core/tag/5-5/),
[dev-notes ( 618 )](https://make.wordpress.org/core/tag/dev-notes/), [rest-api ( 107 )](https://make.wordpress.org/core/tag/rest-api/)

# 󠀁[New and modified REST API endpoints in WordPress 5.5](https://make.wordpress.org/core/2020/07/16/new-and-modified-rest-api-endpoints-in-wordpress-5-5/)󠁿

In WordPress 5.5, a handful of entirely new REST APIREST API The REST API is an 
acronym for the RESTful Application Program Interface (API) that uses HTTP requests
to GET, PUT, POST and DELETE data. It is how the front end of an application (think“
phone app” or “website”) can communicate with the data store (think “database” or“
file system”) [https://developer.wordpress.org/rest-api/](https://developer.wordpress.org/rest-api/)
endpoints have been introduced and several others will see new features or enhancements.
Let’s look at a breakdown of these changes.

## BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Types

In [[48173]](https://core.trac.wordpress.org/changeset/48173) REST API endpoints
were introduced to return all of the block types registered on the server.

 * `GET /wp/v2/block-types` will return all registered block types.
 * `GET /wp/v2/block-types/core` will return all blocks within the `core` namespace.
 * `GET /wp/v2/block-types/core/quote` will return the definition specifically for
   the coreCore Core is the set of software required to run WordPress. The Core 
   Development Team builds WordPress. `quote` block.

This endpoint is accessible to users that have edit permission for any post type
that is included in the REST API. In other words, if the user can edit posts in 
the Block Editor, they can access the block types endpoint.

### Response Format

The response format for this endpoint closely follows the [Block Type Registration RFC](https://github.com/WordPress/gutenberg/blob/master/docs/rfc/block-registration.md).
The [JSON Schema](https://github.com/WordPress/wordpress-develop/blob/8c2443d171bf896163c10ea8f7048d803d654d28/src/wp-includes/rest-api/endpoints/class-wp-rest-block-types-controller.php#L363)
documents the full response type. The following is an example of that in practice
for the `core/quote` block.

    ```notranslate
    {
      "attributes": {
        "value": {
          "type": "string",
          "source": "html",
          "selector": "blockquote",
          "multiline": "p",
          "default": ""
        },
        "citation": {
          "type": "string",
          "source": "html",
          "selector": "cite",
          "default": ""
        },
        "align": {
          "type": "string"
        }
      },
      "is_dynamic": false,
      "name": "core/quote",
      "title": "",
      "description": "",
      "icon": null,
      "category": "text",
      "keywords": [],
      "parent": null,
      "provides_context": [],
      "uses_context": [],
      "supports": {
        "anchor": true
      },
      "styles": [],
      "textdomain": null,
      "example": null,
      "editor_script": null,
      "script": null,
      "editor_style": null,
      "style": null
    }
    ```

For more information, refer to the relevant ticketticket Created for both bug reports
and feature development on the bug tracker. on TracTrac An open source project by
Edgewall Software that serves as a bug tracker and project management tool for WordPress.(
[#48173](https://core.trac.wordpress.org/ticket/48173)).

## Plugins

In [[48242]](https://core.trac.wordpress.org/changeset/48242) REST API endpoints
were introduced for managing plugins. These endpoints facilitate the [Block Directory Inserter](https://make.wordpress.org/plugins/2020/07/11/you-can-now-add-your-own-plugins-to-the-block-directory/)
feature in the block editor.

 * `GET /wp/v2/plugins` will return a list of all plugins installed on a site.
 * `GET /wp/v2/plugins/akismet/akismet` will return information about the installed
   Akismet pluginPlugin A plugin is a piece of software containing a group of functions
   that can be added to a WordPress website. They can extend functionality or add
   new features to your WordPress websites. WordPress plugins are written in the
   PHP programming language and integrate seamlessly with WordPress. These can be
   free in the WordPress.org Plugin Directory [https://wordpress.org/plugins/](https://wordpress.org/plugins/)
   or can be cost-based plugin from a third-party.. The first `akismet` refers to
   the plugin’s folder, the second `akismet` is the main plugin file _without_ the`.
   php` file extension.
 * `POST /wp/v2/plugins { slug: "akismet" }` installs the plugin with the slug `
   aksimet` from the WordPress.orgWordPress.org The community site where WordPress
   code is created and shared by the users. This is where you can download the source
   code for WordPress core, plugins and themes as well as the central location for
   community conversations and organization. [https://wordpress.org/](https://wordpress.org/)
   plugin directory. The endpoint does not support uploading a plugin zip.
 * `PUT /wp/v2/plugins/akismet/akismet { status: "active" }` activates the selected
   plugin. The status can be set to `network-active` to networknetwork (versus site,
   blog) activate the plugin on Multisitemultisite Used to describe a WordPress 
   installation with a network of multiple blogs, grouped by sites. This installation
   type has shared users tables, and creates separate database tables for each blog(
   wp_posts becomes wp_0_posts). See also **network**, **blog**, **site**. To deactivate
   the plugin set the status to `inactive`. There is not a separate `network-inactive`
   status, `inactive` will perform a network deactivation if the plugin was network
   activated.
 * `DELETE /wp/v2/plugins/akismet/akismet` uninstalls the selected plugin. The plugin
   must be `inactive` before deleting it.

The endpoint is accessible to authenticated users with the `activate_plugins` capabilitycapability
A **capability** is permission to perform one or more types of task. Checking if
a user has a capability is performed by the `current_user_can` function. Each user
of a WordPress site might have some permissions but not others, depending on their
role. For example, users who have the Author role usually have permission to edit
their own posts (the “edit_posts” capability), but not permission to edit other 
users’ posts (the “edit_others_posts” capability).. Specific actions have their 
own additional permission checks. For instance, the `install_plugins` capability
is required to install new plugins.

### Response Format

The [JSON Schema](https://github.com/WordPress/wordpress-develop/blob/8c2443d171bf896163c10ea8f7048d803d654d28/src/wp-includes/rest-api/endpoints/class-wp-rest-plugins-controller.php#L827)
for the endpoint documents the full response type. The following is an example for
the Akismet plugin.

    ```notranslate
    {
      "plugin": "akismet/akismet",
      "status": "inactive",
      "name": "Akismet Anti-Spam",
      "plugin_uri": "https://akismet.com/",
      "author": "Automattic",
      "author_uri": "https://automattic.com/wordpress-plugins/",
      "description": {
        "raw": "Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.",
        "rendered": "Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key. <cite>By <a href=\"https://automattic.com/wordpress-plugins/\">Automattic</a>.</cite>"
      },
      "version": "4.1.6",
      "network_only": false,
      "requires_wp": "",
      "requires_php": "",
      "text_domain": "akismet"
    }
    ```

For more information, refer to the relevant ticket on Trac ([#50321](https://core.trac.wordpress.org/ticket/50321)).

## Block Directory

The [[48242]](https://core.trac.wordpress.org/changeset/48242) changeset also introduced
an endpoint for searching the WordPress.org block directory.

`GET /wp/v2/block-directory/search?term=starscape` searches for blocks that match
the term `starscape`.

This endpoint requires both the `activate_plugins` and `install_plugins` capabilitiescapability
A **capability** is permission to perform one or more types of task. Checking if
a user has a capability is performed by the `current_user_can` function. Each user
of a WordPress site might have some permissions but not others, depending on their
role. For example, users who have the Author role usually have permission to edit
their own posts (the “edit_posts” capability), but not permission to edit other 
users’ posts (the “edit_others_posts” capability)..

### Response Format

The [JSON Schema](https://github.com/WordPress/wordpress-develop/blob/8c2443d171bf896163c10ea8f7048d803d654d28/src/wp-includes/rest-api/endpoints/class-wp-rest-block-directory-controller.php#L227)
for the endpoint documents the full response type. The following is an example for
the Starscape block.

    ```notranslate
    {
      "name": "a8c/starscape",
      "title": "Starscape Block",
      "description": "Everything was made of collapsing stars, we are all made of star stuff. Now we also can create content in WordPress with stars in motion. Requirements As this is part...",
      "id": "starscape",
      "rating": 0,
      "rating_count": 0,
      "active_installs": 10,
      "author_block_rating": 0,
      "author_block_count": 1,
      "author": "Automattic",
      "icon": "https://ps.w.org/starscape/assets/icon.svg?rev=2232475",
      "assets": [
        "https://ps.w.org/starscape/tags/1.0.2/index.js?v=1591313160",
        "https://ps.w.org/starscape/tags/1.0.2/editor.css?v=1591313160",
        "https://ps.w.org/starscape/tags/1.0.2/style.css?v=1591313160"
      ],
      "last_updated": "2020-06-04T23:26:00",
      "humanized_updated": "1 month ago",
      "_links": {
        "wp:install-plugin": [
          {
            "href": "http://trunk.test/wp-json/wp/v2/plugins?slug=starscape"
          }
        ]
      }
    }
    ```

For more information, refer to the relevant ticket on Trac ([#50321](https://core.trac.wordpress.org/ticket/50321)).

## Image Editing

In [[48291]](https://core.trac.wordpress.org/changeset/48291) an endpoint was introduced
for editing image attachments in the media library. This facilitates the inline 
image editing feature in the block editor.

`POST /wp/v2/media/5/edit` edits the image with id 5. This rotates the image 90 
degrees, and then zooms the image to 80% of its original height and width into the
top-left corner.

    ```notranslate
    {
      "x": 0,
      "y": 0,
      "width": 80,
      "height": 80,
      "rotate": 90
    }
    ```

**Notes:** `width` and `height` only supports percentage values. `x` & `y` specify
the crop _starting point_.

This endpoint requires permission to edit the original attachment as well as the`
upload_files` capability. The endpoint returns the newly created attachment.

For more information, refer to the relevant ticket on Trac ([#44405](https://core.trac.wordpress.org/ticket/44405)).

## Block Renderer

Every block has a different set of attributes. These attributes are specified as
a JSONJSON JSON, or JavaScript Object Notation, is a minimal, readable format for
structuring data. It is used primarily to transmit data between a server and web
application, as an alternative to XML. Schema object. Previously, every block registered
its own block renderer route using its attributes for the schema. This allowed for
the attributes to be validated using the built in endpoint validation rules.

However, this approach had the unfortunate side effect of creating a large number
of nearly identical REST API routes (one for each dynamic block). Each registered
route has a performance impact. As the number of server side blocks goes up, this
becomes more and more of an issue.

In [[48069]](https://core.trac.wordpress.org/changeset/48069), the block renderer
route was changed to register a single block renderer route and dynamically validate
the attributes based on the selected block. This is an internal only change, consumers
of the block renderer endpoint shouldn’t notice any changes. The same request format
continues to work.

However, this means the attributes schema for a block can no longer be fetched by
making an `OPTIONS` request to the block renderer endpoint. The new block types 
endpoint should be used instead.

In [[47756]](https://core.trac.wordpress.org/changeset/47756) support for the `POST`
request method was added to the block renderer. This allows a block to be rendered
that has attributes larger than would be allowed in the URLURL A specific web address
of a website or web page on the Internet, such as a website’s URL www.wordpress.
org.

For more information, refer to the tickets on Trac ([#49680](https://core.trac.wordpress.org/ticket/49680)
and [#48079](https://core.trac.wordpress.org/ticket/48079)).

## Themes

In [[47921]](https://core.trac.wordpress.org/changeset/47921), support for returning
the majority of a theme’s headerHeader The header of your site is typically the 
first thing people will experience. The masthead or header art located across the
top of your page is part of the look and feel of your website. It can influence 
a visitor’s opinion about your content and you/ your organization’s brand. It may
also look different on different screen sizes. information from its public `style.
css` file was added to the `/wp/v2/themes` endpoint. Previously, only the theme’s
supported features were returned.

For example, Twenty Twenty now produces the following response:

    ```notranslate
    {
      "stylesheet": "twentytwenty",
      "template": "twentytwenty",
      "requires_php": "5.2.4",
      "requires_wp": "4.7",
      "textdomain": "twentytwenty",
      "version": "1.4",
      "screenshot": "http://trunk.test/wp-content/themes/twentytwenty/screenshot.png",
      "author": {
        "raw": "the WordPress team",
        "rendered": "<a href=\"https://wordpress.org/\">the WordPress team</a>"
      },
      "author_uri": {
        "raw": "https://wordpress.org/",
        "rendered": "https://wordpress.org/"
      },
      "description": {
        "raw": "Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor. ",
        "rendered": "Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor."
      },
      "name": {
        "raw": "Twenty Twenty",
        "rendered": "Twenty Twenty"
      },
      "tags": {
        "raw": [
          "blog",
          "one-column",
          "custom-background",
          "custom-colors",
          "custom-logo",
          "custom-menu"
        ],
        "rendered": "blog, one-column, custom-background, custom-colors, custom-logo, custom-menu"
      },
      "theme_uri": {
        "raw": "https://wordpress.org/themes/twentytwenty/",
        "rendered": "https://wordpress.org/themes/twentytwenty/"
      },
      "theme_supports": {}
    }
    ```

Currently, themes can declare support for a given feature by using `add_theme_support()`.
In [[48171]](https://core.trac.wordpress.org/changeset/48171), the `register_theme_feature`
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. was introduced that allows WordPress Core and plugins to declare a list of
available features that themes can support.

The REST API uses this to expose a theme’s supported features if the feature has
been registered with `show_in_rest` set to `true`.

> [Register theme feature API](https://make.wordpress.org/core/2020/07/15/register-theme-feature-api/)

As a reminder, the themes endpoint is available to any users who can edit a post
type that is visible in the REST API. In other words, if a user can use the Block
Editor, they can access this information.

For more information, refer to the relevant tickets on Trac ([#49906](https://core.trac.wordpress.org/ticket/49906)
and [#49406](https://core.trac.wordpress.org/ticket/49406)).

_Props [@desrosj](https://profiles.wordpress.org/desrosj/) and [@justinahinon](https://profiles.wordpress.org/justinahinon/)
for reviewing._

[#5-5](https://make.wordpress.org/core/tag/5-5/), [#dev-notes](https://make.wordpress.org/core/tag/dev-notes/),
[#rest-api](https://make.wordpress.org/core/tag/rest-api/)

 [  ](https://profiles.wordpress.org/timothyblynjacobs/) [Timothy Jacobs](https://profiles.wordpress.org/timothyblynjacobs/)
8:06 pm _on_ July 16, 2020     
Tags: [5.5 ( 87 )](https://make.wordpress.org/core/tag/5-5/),
[dev-notes ( 618 )](https://make.wordpress.org/core/tag/dev-notes/), [rest-api ( 107 )](https://make.wordpress.org/core/tag/rest-api/)

# 󠀁[REST API Parameter & JSON Schema changes in WordPress 5.5](https://make.wordpress.org/core/2020/07/16/rest-api-parameter-json-schema-changes-in-wordpress-5-5/)󠁿

WordPress 5.5 introduces a number of new features and changes to how request and
response parameters are handled, particularly around JSONJSON JSON, or JavaScript
Object Notation, is a minimal, readable format for structuring data. It is used 
primarily to transmit data between a server and web application, as an alternative
to XML. Schema features.

## General

### Support more JSON Schemas when filtering a response by context

The REST APIREST API The REST API is an acronym for the RESTful Application Program
Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is
how the front end of an application (think “phone app” or “website”) can communicate
with the data store (think “database” or “file system”) [https://developer.wordpress.org/rest-api/](https://developer.wordpress.org/rest-api/)
uses `context` to remove fields from a response if the user does not have adequate
permissions or for performance reasons. For example, in the following schema, if
the user requested the resource with `context=view`, only the `name` properties 
would be returned.

    ```notranslate
    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "context": [ "view", "edit" ]
        },
        "role": {
          "type": "string",
          "context": [ "edit" ]
        }
      }
    }
    ```

In [[47758]](https://core.trac.wordpress.org/changeset/47758), support was added
for removing more properties from a response if additional features were in use.
The `array` type, multi-types, and the `additionalProperties` keyword are now supported.
Additionally, the filterFilter Filters are one of the two types of Hooks [https://codex.wordpress.org/Plugin_API/Hooks](https://codex.wordpress.org/Plugin_API/Hooks).
They provide a way for functions to modify data of other functions. They are the
counterpart to Actions. Unlike Actions, filters are meant to work in an isolated
manner, and should never have side effects such as affecting global variables and
output. recurses to an infinite depth.

So for the following schema, if the resource was requested with `context=view` the
following fields would be returned.

    ```notranslate
    {
      "type": "object",
      "properties": {
        "notes": {
          "context": [ "view", "edit" ],
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "note": {
                "context": [ "view", "edit" ],
                "type": "string"
              },
              "ip": {
                "context": [ "edit" ],
                "type": "string"
              }
            }
          }
        }
      }
    }
    ```

Note that the `ip` field has been omitted.

    ```notranslate
    {
      "notes": [
        {
          "note": "My Note"
        }
      ]
    }
    ```

For more information, see [#48819](https://core.trac.wordpress.org/ticket/48819)
on TracTrac An open source project by Edgewall Software that serves as a bug tracker
and project management tool for WordPress..

### Inconsistent parameter type handling in `WP_REST_Request::set_param()`

Previously, when parameters were manually added to a `WP_REST_Request` object using`
set_param()`, the parameter was added into the first available parameter slot. This
could be unexpected if a parameter was already in another parameter slot and you
were trying to overwrite the value.

In [[47559]](https://core.trac.wordpress.org/changeset/47559), this changed to first
look for an existing parameter, and then falls back to the first parameter in the
order if none was found.

For more information, refer to the relevant Trac ticketticket Created for both bug
reports and feature development on the bug tracker. ([#40838](https://core.trac.wordpress.org/ticket/40838)).

### `WP_REST_Controller::get_endpoint_args_for_item_schema` drops some keywords

The primary mechanism for developers to declare the parameters an endpoint accepts
is by writing a JSON Schema in `WP_REST_Controller::get_item_schema()`. The schema
is then transformed into the `args` format by using `WP_REST_Controller::get_endpoint_args_for_item_schema()`
during route registration. This transformation process dropped the `minimum`, `maximum`,`
exclusiveMinimum`, and `exclusiveMaximum` JSON Schema keywords. This list of allowed
keywords was updated in [[47911]](https://core.trac.wordpress.org/changeset/47911)
to ensure this doesn’t happen.

For more information, check out [#50301](https://core.trac.wordpress.org/ticket/50301)
on Trac.

### Check required properties are provided when validating an object

Previously, the REST API would validate that all parameters with the `required` 
attribute were provided in `WP_REST_Request::has_valid_params`. This meant that 
if an object was defined with its own set of required parameters, it was not checked
by the default parameter validator.

So, for instance, given the following schema, the request would be accepted despite
the missing `version` field.

    ```notranslate
    {
      "type": "object",
      "properties": {
        "fixed_in": {
          "required": true,
          "type": "object",
          "properties": {
            "revision": {
              "required": true,
              "type": "integer"
            },
            "version": {
              "required": true,
              "type": "string"
            }
          }
        }
      }
    }
    ```

    ```notranslate
    {
      "fixed_in": {
        "revision": 47809
      }
    }
    ```

In [[47809]](https://core.trac.wordpress.org/changeset/47809) this was fixed to 
now generate a `rest_property_required` error.

#### Version 4 syntax

This change also adds support for JSON Schema Version 4 required-property syntax
where the list of required properties for an object is defined as an array of property
names. This can be particularly helpful when specifying that a metaMeta Meta is 
a term that refers to the inside workings of a group. For us, this is the team that
works on internal WordPress sites like WordCamp Central and Make WordPress. value
has a list of required properties.

Given the following meta field.

    ```notranslate
    register_post_meta( 'post', 'fixed_in', array(
    	'type'         => 'object',
    	'show_in_rest' => array(
    		'single' => true,
    		'schema' => array(
    			'required'   => array( 'revision', 'version' ),
    			'type'       => 'object',
    			'properties' => array(
    				'revision' => array(
    					'type' => 'integer',
    				),
    				'version'  => array(
    					'type' => 'string',
    				),
    			),
    		),
    	),
    ) );
    ```

And the following request object.

    ```notranslate
    {
    	"title": "Check required properties",
    	"content": "We should check that required properties are provided",
    	"meta": {
    		"fixed_in": {
    			"revision": 47089
    		}
    	}
    }
    ```

The following error will be returned.

    ```notranslate
    {
      "code": "rest_property_required",
      "message": "version is a required property of meta.fixed_in.",
      "data": {
        "status": 400
      }
    }
    ```

If the `fixed_in` meta field was omitted entirely, no error would be generated. 
An object that defines a list of required properties does not indicate that the 
object itself is required to be submitted. Just that if the object is included, 
that the listed properties must also be included as well.

Specifying the required properties in the top-level schema for an endpoint using
a `required` array is not supported. Given the following schema, a user could successfully
submit a request without the `title` or `content` properties. This is because, as
discussed [earlier](https://make.wordpress.org/core/2020/07/16/?output_format=md#47911),
the schema document is not itself used for validation, but instead transformed to
a list of parameter definitions.

    ```notranslate
    {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "title": "my-endpoint",
      "type": "object",
      "required": [ "title", "content" ],
      "properties": {
        "title": {
          "type": "string"
        },
        "content": {
          "type": "string"
        }
      }
    }
    ```

For more information, refer to [#48818](https://core.trac.wordpress.org/ticket/48818)
on Trac.

### Make multi-typed schemas more robust

A multi-type schema is a schema where the `type` keyword is an array of possible
types instead of a single type. For instance, `[ 'object', 'string' ]` would allow
objects or string values.

In [[46249]](https://core.trac.wordpress.org/changeset/46249) basic support for 
these schemas was introduced. The validator would loopLoop The Loop is PHP code 
used by WordPress to display posts. Using The Loop, WordPress processes each post
to be displayed on the current page, and formats it according to how it matches 
specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be
processed on each post. [https://codex.wordpress.org/The_Loop](https://codex.wordpress.org/The_Loop)
over each schema type trying to find a version that matched. This worked for valid
values, but for invalidinvalid A resolution on the bug tracker (and generally common
in software development, sometimes also _notabug_) that indicates the ticket is 
not a bug, is a support request, or is generally invalid. values it provided unhelpful
error messages. The sanitizer also had its utility restricted.

In [[48306]](https://core.trac.wordpress.org/changeset/48306), the validators and
sanitizers will now first determine the best type of the passed value and then apply
the schema with that set type. In the case that a value could match multiple types,
the schema of the first matching type will be used.

So, for instance, given the following schema, if the value `40` was submitted for
the parameter, the user would receive `param must be between 10 (inclusive) and 
20 (inclusive)` as an error message instead of `param is not of type null,integer`.

    ```notranslate
    {
      "type": [ "null", "integer" ],
      "minimum": 10,
      "maximum": 20
    }
    ```

## Correct `rest_sanitize_value_from_schema` return type

The return type of `rest_sanitize_value_from_schema` has been corrected in [[48307]](https://core.trac.wordpress.org/changeset/48307)
to be `mixed|WP_Error`. Previously, the function had been documented as returning`
true|WP_Error`.

Though `WP_Error` was a documented return type, it would not have been returned 
before WordPress 5.5. The function now returns a `WP_Error` if the value cannot 
be safely sanitized. For instance when checking the `uniqueItems` keyword.

## New Keywords

WordPress 5.5 adds support for a number of JSON Schema keywords.

### Pattern

The JSON Schema keyword `pattern` can be used to validate that a `string` field 
matches a regular expression.

For instance, given the following schema, `#123` would be valid, but `#abc` would
not.

    ```notranslate
    {
      "type": "string",
      "pattern": "#[0-9]+"
    }
    ```

The regex is not automatically anchored. Regex flags, for instance `/i` to make 
the match case insensitive are not supported. Developers are advised to use a constrained
set of regex features so the schema can be interoperable between JavaScriptJavaScript
JavaScript or JS is an object-oriented computer programming language commonly used
to create interactive effects within web browsers. WordPress makes extensive use
of JS for a better user experience. While PHP is executed on the server, JS executes
within a user’s browser. [https://www.javascript.com](https://www.javascript.com/)
and PHPPHP The web scripting language in which WordPress is primarily architected.
WordPress requires PHP 7.4 or higher. The pattern should be valid according to the
[ECMA 262 regex dialect](https://www.ecma-international.org/ecma-262/5.1/#sec-15.10.1).

Relevant changeset: [[47810]](https://core.trac.wordpress.org/changeset/47810).

### Min and max string length

The `minLength` and `maxLength` keywords can be used to constrain the acceptable
length of a string. Importantly multi-byte characters are counted as a single character
and bounds are inclusive.

For instance, given the following schema, `ab`, `abc`, and `abcd` are valid, while`
a`, and `abcde` are invalid.

    ```notranslate
    {
      "type": "string",
      "minLength": 2,
      "maxLength": 4
    }
    ```

The `exclusiveMinimum` and `exclusiveMaximum` keywords do not apply, they are only
valid for numbers.

Relevant changeset: [[47627]](https://core.trac.wordpress.org/changeset/47627).

### Min and max array items

The `minItems` and `maxItems` keywords can be used to constrain the acceptable number
of items included in an array.

For instance, given the following schema, `[ 'a' ]` and `[ 'a', 'b' ]` are valid,
while `[]` and `[ 'a', 'b', 'c' ]` are invalid.

    ```notranslate
    {
      "type": "array",
      "minItems": 1,
      "maxItems": 2,
      "items": {
        "type": "string"
      }
    }
    ```

Again, the `exclusiveMinimum` and `exclusiveMaximum` keywords do not apply.

Relevante changeset: [[47923]](https://core.trac.wordpress.org/changeset/47923).

### Unique items

The `uniqueItems` keyword can be used to require that all items in an array are 
unique.

For instance, given the following schema, `[ 'a', 'b' ]` is valid, while `[ 'a','
a' ]` is not.

    ```notranslate
    {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "type": "string"
      }
    }
    ```

#### Uniqueness

Items of different types are considered unique, for instance, `'1'`, `1` and `1.0`
are different values.

When arrays are compared, the order of items matters. So the given array is considered
to have all unique items.

    ```notranslate
    [
      [ "a", "b" ],
      [ "b", "a" ]
    ]
    ```

When objects are compared, the order the members appear in does not matter. So the
given array is considered to have duplicate items since the values are the same,
they just appear in a different order.

    ```notranslate
    [
      { 
        "a": 1,
        "b": 2
      },
      {
        "b": 2,
        "a": 1
      }
    ]
    ```

Uniqueness is checked in both `rest_validate_value_from_schema` and `rest_sanitize_value_from_schema`.
This is to prevent instances where items would be considered unique before sanitization
is applied, but after sanitization the items would converge to identical values.

Take for instance the following schema:

    ```notranslate
    {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "type": "string",
        "format": "uri"
      }
    }
    ```

A request with `[ "https://example.org/hello world", "https://example.org/hello%
20world" ]` would pass validation because the each string value is different. However,
after `esc_url_raw` converted the space in the first url to `%20` the values would
be identical.

In this case `rest_sanitize_value_from_schema` would return an error. As such, developers
are advised to always validate and sanitize parameters.

For more information, see [#48821](https://core.trac.wordpress.org/ticket/48821)
on Trac.

## Format Changes

A couple of changes have been made to handling of the `format` keyword.

### Only validate the format keyword if the type is a string

Previously, implementing multi-type fields that had a `format` keyword required 
disabling the default validate & sanitize callbacks. After [[48300]](https://core.trac.wordpress.org/changeset/48300)
this can now be expressed entirely in JSON Schema.

For instance, given the following schema, a user can now submit both `https://example.
org/hello world` and `{ "link": "https://example.org/hello world" }` and validation&
sanitization will be properly applied in both cases.

    ```notranslate
    {
      "type": [ "string", "object" ],
      "properties": {
        "link": {
          "type": "string",
          "format": "uri"
        },
        "label": {
          "type": "string"
        }
      },
      "format": "uri"
    }
    ```

For backward compatibility with invalid schemas the `format` validation will still
apply if the `type` is not specified, or it is invalid.

## Miscellaneous changes

 * The `hex-color` format has been introduced. This enforces a `3` or `6` hex digit
   color with a leading (see [#49270](https://core.trac.wordpress.org/ticket/49270)).
 * The `uuid` format has been introduced. This enforces a `uuid` of any version 
   using the `wp_is_uuid` function (see [#50053](https://core.trac.wordpress.org/ticket/50053)).
 * The `rest_validate_value_from_schema` and `rest_sanitize_value_from_schema` functions
   will now issue `_doing_it_wrong` notices if the `type` keyword is missing or 
   contains invalid values. The following types are valid: `object`, `array`, `string`,`
   number`, `integer`, `boolean`, and `null` (see [#48821](https://core.trac.wordpress.org/ticket/48821)).
 * The following functions have been introduced to encapsulate type validation &
   sanitization: `rest_is_integer`, `rest_is_array`, `rest_sanitize_array`, `rest_is_object`
   and `rest_sanitize_object` (see [#48821](https://core.trac.wordpress.org/ticket/48821)).

_Props [@desrosj](https://profiles.wordpress.org/desrosj/), [@davidbaumwald](https://profiles.wordpress.org/davidbaumwald/),
and [@justinahinon](https://profiles.wordpress.org/justinahinon/) for reviewing._

[#5-5](https://make.wordpress.org/core/tag/5-5/), [#dev-notes](https://make.wordpress.org/core/tag/dev-notes/),
[#rest-api](https://make.wordpress.org/core/tag/rest-api/)

 [  ](https://profiles.wordpress.org/azhiyadev/) [Hauwa Abashiya](https://profiles.wordpress.org/azhiyadev/)
6:32 pm _on_ July 16, 2020     
Tags: [core-accessibility ( 11 )](https://make.wordpress.org/core/tag/core-accessibility/),
[core-auto-updates ( 37 )](https://make.wordpress.org/core/tag/core-auto-updates/),
[core-editor ( 748 )](https://make.wordpress.org/core/tag/core-editor/)   

# 󠀁[Dev Chat Summary, July 15th, 2020](https://make.wordpress.org/core/2020/07/16/dev-chat-summary-july-15th-2020/)󠁿

[@whyisjake](https://profiles.wordpress.org/whyisjake/) hosted this [agenda](https://make.wordpress.org/core/2020/07/15/dev-chat-agenda-for-july-15th-2020/)
and [@audrasjb](https://profiles.wordpress.org/audrasjb/) edited.

## Highlighted Blogblog (versus network, site) Posts

 * The [wp-notify Next Steps](https://make.wordpress.org/core/2020/07/09/wp-notify-next-steps/)
   project is looking for feedback on initial requirements and wanting to kick-off
   the project
 * GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress.
   The editor improves the process and experience of creating new content, making
   writing rich content much simpler. It uses ‘blocks’ to add richness rather than
   shortcodes, custom HTML etc. [https://wordpress.org/gutenberg/](https://wordpress.org/gutenberg/)
   team published “[What’s new in Gutenberg](https://make.wordpress.org/core/2020/07/08/whats-new-in-gutenberg-8-july/)”
   last week

## Dev Notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase.

These were not discussed but referenced for people to review at their own time:

 * [Accessibility improvements to widgets outputting lists of links in 5.5](https://make.wordpress.org/core/2020/07/09/accessibility-improvements-to-widgets-outputting-lists-of-links-in-5-5/)
 * [Dashicons in WordPress 5.5 (the final update)](https://make.wordpress.org/core/2020/07/15/dashicons-in-wordpress-5-5-the-final-update/)
 * [Register theme feature API](https://make.wordpress.org/core/2020/07/15/register-theme-feature-api/)
 * [Lazy-loading images in 5.5](https://make.wordpress.org/core/2020/07/14/lazy-loading-images-in-5-5/)
 * [PHP related improvements & changes: WordPress 5.5 edition](https://make.wordpress.org/core/2020/07/14/php-related-improvements-changes-wordpress-5-5-edition/)
 * [New CSS styles for buttons with disabled state in WP 5.5](https://make.wordpress.org/core/2020/07/10/new-css-styles-for-buttons-with-disabled-state-in-wp-5-5/)

## Upcoming Releases

 * [WordPress 5.5 ](https://make.wordpress.org/core/5-5/) is slated for release 
   August 11th, 2020
    - [@marybaum](https://profiles.wordpress.org/marybaum/) added that the “About”
      page has a draft layout on Figma two weeks before RC1. Might change but it
      is now there. The best way to provide feedback on the “About” page copy is
      to enter it in the comments section on the ticketticket Created for both bug
      reports and feature development on the bug tracker. [#50416](https://core.trac.wordpress.org/ticket/50416)
 *  - @abhanonstopnewsuk said they are also working on FAQs and would appreciate
      input on these (they have been messaging them).
 * BetaBeta A pre-release of software that is given out to a large group of users
   to trial under real conditions. Beta versions have gone through alpha testing
   in-house and are generally fairly close in look, feel and function to the final
   product; however, design changes often occur as part of the process. 2 was released
   yesterday
    - Since Beta 1, over [40 tickets ](https://core.trac.wordpress.org/query?status=closed&changetime=07%2F08%2F2020..07%2F14%2F2020&milestone=5.5&group=component&col=id&col=summary&col=owner&col=type&col=priority&col=component&col=version&order=priority)
      plus Gutenberg have been closed, however there are still a [bunch](https://core.trac.wordpress.org/tickets/major)
      to go through.
 * Gutenberg bugbug A bug is an error or unexpected result. Performance improvements,
   code optimization, and are considered enhancements, not defects. After feature
   freeze, only bugs are dealt with, with regressions (adverse changes from the 
   previous version) being the highest priority. fixes for Beta releases
    - [@nrqsnchz](https://profiles.wordpress.org/nrqsnchz/) said [#core-accessibility](https://make.wordpress.org/core/tag/core-accessibility/)
      would like some clarification around how Gutenberg bug fixes that need to 
      make it through to betas should be handled and the process around it.
    - [@whyisjake](https://profiles.wordpress.org/whyisjake/) said when changes 
      are needed in Gutenberg there is a “Back to WordPress coreCore Core is the
      set of software required to run WordPress. The Core Development Team builds
      WordPress.” tagtag A directory in Subversion. WordPress uses tags to store
      a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of
      tags in version control systems. (Not to be confused with post tags.) that
      is applied. These are bundled into a release like this: [#23905 Backport more fixes to WordPress 5.5 beta2](https://github.com/WordPress/gutenberg/pull/23905).
      Additional docs are also available: [docs/contributor/release docs](https://github.com/WordPress/gutenberg/blob/master/docs/contributors/release.md)
    - [@youknowriad](https://profiles.wordpress.org/youknowriad/) confirmed that
      when an issue is created, they triagetriage The act of evaluating and sorting
      bug reports, in order to decide priority, severity, and other factors. issues
      and if it’s considered as an issue that needs to be fixed in the next Beta/
      RCrelease candidate One of the final stages in the version release cycle, 
      this version signals the potential to be a final release to the public. Also
      see [alpha (beta)](https://make.wordpress.org/core/2020/07/16/?output_format=md#alpha-beta).,
      it gets added to the “WordPress 5.5 Must Have” project. “They” being anyone
      with triage permissions on the repository.
    - [@afercia](https://profiles.wordpress.org/afercia/) is not sure opening issues
      on GitHubGitHub GitHub is a website that offers online implementation of git
      repositories that can easily be shared, copied and modified by other developers.
      Public repositories are free to host, private repositories require a paid 
      subscription. GitHub introduced the concept of the ‘pull request’ where code
      changes done in branches by contributors can be reviewed and discussed before
      being merged by the repository owner. [https://github.com/](https://github.com/)
      has the same effect of ensuring the highest visibility. He is uncomfortable
      with the process and doesn’t think it is equivalent to the way it works on
      TracTrac An open source project by Edgewall Software that serves as a bug 
      tracker and project management tool for WordPress..
    - [@desrosj](https://profiles.wordpress.org/desrosj/) challenged this:
       * In Trac, anyone with bug gardenerBug Gardener A contributor who has been
         given advanced privileges in Trac. capabilitiescapability A **capability**
         is permission to perform one or more types of task. Checking if a user 
         has a capability is performed by the `current_user_can` function. Each 
         user of a WordPress site might have some permissions but not others, depending
         on their role. For example, users who have the Author role usually have
         permission to edit their own posts (the “edit_posts” capability), but not
         permission to edit other users’ posts (the “edit_others_posts” capability).
         is trusted to appropriately milestone issues using good judgement.
       * On GitHub, anyone with triage permissions is trusted to milestone and tag
         issues appropriately using good judgement.
       * The only difference is that GitHub issues and PRs are not filtered through
         SlackSlack Slack is a Collaborative Group Chat Platform [https://slack.com/](https://slack.com/).
         The WordPress community has its own Slack Channel at [https://make.wordpress.org/chat/](https://make.wordpress.org/chat/),
         and there is an additional step of importing changes made on GitHub into
         trunktrunk A directory in Subversion containing the latest development 
         code in preparation for the next major release cycle. If you are running"
         trunk", then you are on the latest revision.. Release and project leads
         always have the final say if there are unreasonable disagreements about
         what should/should not be fixed (or should/should not make it into beta)
    - [@afercia](https://profiles.wordpress.org/afercia/) highlighted that its the
      composition of the triage teams with deep disagreements between the AccessibilityAccessibility
      Accessibility (commonly shortened to a11y) refers to the design of products,
      devices, services, or environments for people with disabilities. The concept
      of accessible design ensures both “direct access” (i.e. unassisted) and “indirect
      access” meaning compatibility with a person’s assistive technology (for example,
      computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) team
      and the Editor team.
    - [@desrosj](https://profiles.wordpress.org/desrosj/) asked if deeper discussions
      were needed about specific issues as nothing has been escalated and it is 
      each team’s responsibility to communicate with each other.
    - in the interest of moving the agenda forward, it was agreed that this discussion
      would continue after the dev-chat.
 * Beta 3 is coming next Tuesday July 21st, 2020. Bug Scrub #6 is tomorrow July 
   16th, 2020.

## Component check-in and status updates

 * [@azaozz](https://profiles.wordpress.org/azaozz/) mentioned [Updating jQuery version shipped with WordPress](https://make.wordpress.org/core/2020/06/29/updating-jquery-version-shipped-with-wordpress/).
   There is a Trac ticket [#50668: jquery-migrate.js in latest beta version 5.5 gone?](https://core.trac.wordpress.org/ticket/50668)
   asking the same questions.
 * [@marybaum](https://profiles.wordpress.org/marybaum/) gave a shoutout to [@estelaris](https://profiles.wordpress.org/estelaris/)
   @abhanonstopnewsuk [@yvettesonneveld](https://profiles.wordpress.org/yvettesonneveld/)
   and [@ryelle](https://profiles.wordpress.org/ryelle/) for the work they’ve done
   with great guidance from [@melchoyce](https://profiles.wordpress.org/melchoyce/)
 * [@audrasjb](https://profiles.wordpress.org/audrasjb/) [#core-auto-updates](https://make.wordpress.org/core/tag/core-auto-updates/)
   team is going to publish the first dev notedev note Each important change in 
   WordPress Core is documented in a developers note, (usually called dev note).
   Good dev notes generally include a description of the change, the decision that
   led to this change, and a description of how developers are supposed to work 
   with that change. Dev notes are published on Make/Core blog during the beta phase
   of WordPress release cycle. Publishing dev notes is particularly important when
   plugin/theme authors and WordPress developers need to be aware of those changes.
   In general, all dev notes are compiled into a Field Guide at the beginning of
   the release candidate phase. for this feature.
    - It introduces the new functions and hooksHooks In WordPress theme and development,
      hooks are functions that can be applied to an action or a Filter in WordPress.
      Actions are functions performed when a certain event occurs in WordPress. 
      Filters allow you to modify certain functions. Arguments used to hook both
      filters and actions look the same. and can be used to control auto-updates-
      UIUI User interface.
    - There will be another one to handle Site Health and email notifications.
    - They are also going to start work on the HelpHub Docs page (end user documentation)

## Open Floor

 * [@pbiron](https://profiles.wordpress.org/pbiron/) has a potential proposal related
   to dev-notes. Dev notes are rightly targeted at developers however there are 
   often changes in the WP adminadmin (and super admin) that users need to be made
   aware of. Would it be more appropriate to have a new user-note where a “heads-
   up” about these changes can be made?
    - [@joyously](https://profiles.wordpress.org/joyously/) thought it should go
      in the Field GuideField guide The field guide is a type of blogpost published
      on Make/Core during the release candidate phase of the [WordPress release cycle](https://make.wordpress.org/core/handbook/about/release-cycle/).
      The field guide generally lists all the dev notes published during the beta
      cycle. This guide is linked in the about page of the corresponding version
      of WordPress, in the release post and in the HelpHub version page.. [@azaozz](https://profiles.wordpress.org/azaozz/)
      said seconded it. [Make WordPress Core](https://make.wordpress.org/core/) 
      it seems to slowly shift towards a wider audience now, not just developers
    - [@desrosj](https://profiles.wordpress.org/desrosj/) said the Field Guide is
      a collection of dev notes. It is still developer focused and he think it should
      be in HelpHub. [@audrasjb](https://profiles.wordpress.org/audrasjb/) seconded
      the use of HelpHub for end user documentation but suggested that maybe we 
      publish a recap of all new HelpHub pages on [w.org/news](https://w.org/news).
      [@desrosj](https://profiles.wordpress.org/desrosj/) said the HelpHub could
      also be. more work needed
    - [@sergeybiryukov](https://profiles.wordpress.org/sergeybiryukov/) mentioned
      that there is also a pointers 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. in the admin for new features
      but he doesn’t think its been used in recent releases.
    - [@audrasjb](https://profiles.wordpress.org/audrasjb/) seconded the use of 
      HelpHub for end user documentation but has no blog to follow the news. He 
      suggested that maybe we publish a recap of all new HelpHub pages on w.org/
      news. [@desrosj](https://profiles.wordpress.org/desrosj/) said the HelpHub
      could also be linked to in the release post (provided it is published and 
      ready on release day). [@pbiron](https://profiles.wordpress.org/pbiron/) questioned
      whether it was appropriate to publish things in HelpHub before a release (
      like dev notes are).
    - [@azaozz](https://profiles.wordpress.org/azaozz/) suggested maybe having a
      new/separate place for user targeted “what’s up and coming”
    -  [@pbiron](https://profiles.wordpress.org/pbiron/) will source some examples
      where user-focused things were coered in dev notes and present a proposal 
      at the next weeklly dev-chat
    - [@marybaum](https://profiles.wordpress.org/marybaum/) [@yvettesonneveld](https://profiles.wordpress.org/yvettesonneveld/)
      @abhanonstopnewsuk think using wp.org/news is a good way to drum up excitement
      about new releases and aligns with the goal to use /news to connect with a
      wider audience and meetups.
 * [@collinsmbaka](https://profiles.wordpress.org/collinsmbaka/) is working on the
   embed blockBlock Block is the abstract term used to describe units of markup 
   that, composed together, form the content or layout of a webpage using the WordPress
   editor. The idea combines concepts of what in the past may have achieved with
   shortcodes, custom HTML, and embed discovery into a single consistent API and
   user experience. documentation and would like someone to look at the following
   issues:
    - The Hulu Embed Block from the default Block Editor cannot embed any links 
      [https://github.com/WordPress/gutenberg/issues/23920#issue-6563835132](https://github.com/WordPress/gutenberg/issues/23920#issue-656383513).
    - We have photobucket on the list of embed blocks but it is not on WordPress
      or he can’t seem to find it
 * [@whyisjake](https://profiles.wordpress.org/whyisjake/) asked him to share it
   in [#core-editor](https://make.wordpress.org/core/tag/core-editor/) and cc [@youknowriad](https://profiles.wordpress.org/youknowriad/)
   and [@ella](https://profiles.wordpress.org/ella/)

 [  ](https://profiles.wordpress.org/youknowriad/) [Riad Benguella](https://profiles.wordpress.org/youknowriad/)
12:02 pm _on_ July 16, 2020     
Tags: [5.5 ( 87 )](https://make.wordpress.org/core/tag/5-5/),
[block-editor ( 133 )](https://make.wordpress.org/core/tag/block-editor/), [dev-notes ( 618 )](https://make.wordpress.org/core/tag/dev-notes/)

# 󠀁[Block Patterns in WordPress 5.5](https://make.wordpress.org/core/2020/07/16/block-patterns-in-wordpress-5-5/)󠁿

In WordPress 5.5, the blockBlock Block is the abstract term used to describe units
of markup that, composed together, form the content or layout of a webpage using
the WordPress editor. The idea combines concepts of what in the past may have achieved
with shortcodes, custom HTML, and embed discovery into a single consistent API and
user experience. editor introduces a new concept called **block patterns**. The 
goal is to allow users to build and share predefined block layouts, ready to insert
and tweak more easily.

You can find the registered block patterns on the block inserter and add them to
your post/page like any other block.

![](https://make.wordpress.org/core/files/2020/07/image-1024x768.jpeg)

## Block Patterns Registration

WordPress 5.5 comes with a number of built-in block patterns but it’s also possible
for third-party plugins and themes to register additional block patterns or remove
existing ones.

To register a custom block pattern, you can call the `register_block_pattern` function
receives the name of the pattern as the first argument and an array describing properties
of the pattern as the second argument. The properties of the block pattern include
a title, a description, a categoryCategory The 'category' taxonomy lets you group
posts / content together that share a common bond. Categories are pre-defined and
broad ranging., potentially some additional keywords, and the content of the pattern.

    ```notranslate
    function my_plugin_register_block_patterns() {
    	register_block_pattern(
    		'my-plugin/my-awesome-pattern',
    		array(
    			'title'       => __( 'Two buttons', 'my-plugin' ),
    			'description' => _x( 'Two horizontal buttons, the left button is filled in, and the right button is outlined.', 'Block pattern description', 'my-plugin' ),
    			'categories'  => array( 'buttons' ),
    			'content'     => "<!-- wp:buttons {\"align\":\"center\"} -->\n<div class=\"wp-block-buttons aligncenter\"><!-- wp:button {\"backgroundColor\":\"very-dark-gray\",\"borderRadius\":0} -->\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-background has-very-dark-gray-background-color no-border-radius\">" . esc_html__( 'Button One', 'my-plugin' ) . "</a></div>\n<!-- /wp:button -->\n\n<!-- wp:button {\"textColor\":\"very-dark-gray\",\"borderRadius\":0,\"className\":\"is-style-outline\"} -->\n<div class=\"wp-block-button is-style-outline\"><a class=\"wp-block-button__link has-text-color has-very-dark-gray-color no-border-radius\">" . esc_html__( 'Button Two', 'my-plugin' ) . "</a></div>\n<!-- /wp:button --></div>\n<!-- /wp:buttons -->",
    		)
    	);
    }

    add_action( 'init', 'my_plugin_register_block_patterns' );
    ```

It is also possible to register custom categories for your own block patterns.

Refer to the [block patterns documentation](https://developer.wordpress.org/block-editor/developers/block-api/block-patterns/)
for more details about these APIs.

## CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Block Patterns

While WordPress comes with a number of block patterns built-in, theme authors might
want to opt-out of the bundled patterns and provide their own set.

You can do so by removing the `core-block-patterns` theme support flag.

    ```notranslate
    remove_theme_support( 'core-block-patterns' );
    ```

[#5-5](https://make.wordpress.org/core/tag/5-5/), [#block-editor](https://make.wordpress.org/core/tag/block-editor/),
[#dev-notes](https://make.wordpress.org/core/tag/dev-notes/)

 [  ](https://profiles.wordpress.org/psykro/) [Jonathan Bossenger](https://profiles.wordpress.org/psykro/)
6:11 am _on_ July 16, 2020     
Tags: [core-js ( 131 )](https://make.wordpress.org/core/tag/core-js/),
[javascript ( 130 )](https://make.wordpress.org/core/tag/javascript/), [meeting notes ( 227 )](https://make.wordpress.org/core/tag/meeting-notes/)

# 󠀁[JavaScript Core Chat Summary: 14 July 2020](https://make.wordpress.org/core/2020/07/16/javascript-core-chat-summary-14-july-2020/)󠁿

This is a recap of the JavaScriptJavaScript JavaScript or JS is an object-oriented
computer programming language commonly used to create interactive effects within
web browsers. WordPress makes extensive use of JS for a better user experience. 
While PHP is executed on the server, JS executes within a user’s browser. [https://www.javascript.com](https://www.javascript.com/)
CoreCore Core is the set of software required to run WordPress. The Core Development
Team builds WordPress. chat held on [Tuesday, July 14, 2020, 14:00 UTC](https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200714T1400).
You can [read the full meeting discussion here in Slack](https://wordpress.slack.com/archives/C5UNMSU4R/p1594735227341900)

[@adamsilverstein](https://profiles.wordpress.org/adamsilverstein/) hosted

There were no agenda items for today, so [@adamsilverstein](https://profiles.wordpress.org/adamsilverstein/)
moved straight to the open floor

**Open floor:**

 * [@adamsilverstein](https://profiles.wordpress.org/adamsilverstein/) plans to 
   publish the JavaScript Core team blogblog (versus network, site) post this week
    - You an view this post on ASBlocks [here](https://asblocks.com/write/satkNOuxkvmLX3RflHlX/b9f40d45-49be-4623-922a-3cb88f0f1b04#key=uzqreVcJlVLGUXGdYFqMRw)
    - The plan is for this to be “evergreen” and linked from our meeting record 
      and slackSlack Slack is a Collaborative Group Chat Platform [https://slack.com/](https://slack.com/).
      The WordPress community has its own Slack Channel at [https://make.wordpress.org/chat/](https://make.wordpress.org/chat/)
      room
 * [@mkaz](https://profiles.wordpress.org/mkaz/) shared in issue he’s been trying
   to figure out [here](https://github.com/WordPress/gutenberg/pull/23911). Any 
   feedback or suggestions to resolve it are welcome.

[@adamsilverstein](https://profiles.wordpress.org/adamsilverstein/) closed meeting
after 25 minutes.

Next chat is on [Wednesday, July 21, 2020, 14:00 UTC](https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200722T1400)
in the [#core-js](https://make.wordpress.org/core/tag/core-js/) channel on Slack.

## Weekly JavaScript news round up

 * The accessibilityAccessibility Accessibility (commonly shortened to a11y) refers
   to the design of products, devices, services, or environments for people with
   disabilities. The concept of accessible design ensures both “direct access” (
   i.e. unassisted) and “indirect access” meaning compatibility with a person’s 
   assistive technology (for example, computer screen readers). (https://en.wikipedia.
   org/wiki/Accessibility) [team notes from the July 3rd meeting](https://make.wordpress.org/accessibility/2020/07/06/accessibility-team-meeting-notes-july-3-2020/)
   have been posted.
 * A pull was recently merged for the `@wordpress/env` package that [adds support for environment specific options](https://github.com/WordPress/gutenberg/pull/22568).
   Also some work has started in the package for [improving environment start speed](https://github.com/WordPress/gutenberg/pull/23809).
 * A pull was merged with some [small performance tweaks round usage of `useSelect`](https://github.com/WordPress/gutenberg/pull/23825).
   Note to teams, the pull description has a great reminder from Riad about performance
   considerations when using this interface.
 * The [core editor chat summary notes for July 8th](https://make.wordpress.org/core/2020/07/09/editor-chat-summary-8th-july-2020/)
   were published.
 * The [core css chat summary notes for July 2nd](https://make.wordpress.org/core/2020/07/09/css-chat-summary-2nd-july-2020/)
   were published.
 * [Gutenberg 8.5 was released](https://make.wordpress.org/core/2020/07/08/whats-new-in-gutenberg-8-july/).
   Highlights include: drag and drop improvements, accessibility improvements, and
   an easy upload tool for external images.
 * [WordPress 5.5 Beta 1 was released](https://wordpress.org/news/2020/07/wordpress-5-5-beta-1/).
   If you haven’t already, you may want to update your development sites to start
   testing against the next great WordPress release!
 * It’s now possible to [add plugins to the Block Directory](https://make.wordpress.org/plugins/2020/07/11/you-can-now-add-your-own-plugins-to-the-block-directory/).
 * A dev notedev note Each important change in WordPress Core is documented in a
   developers note, (usually called dev note). Good dev notes generally include 
   a description of the change, the decision that led to this change, and a description
   of how developers are supposed to work with that change. Dev notes are published
   on Make/Core blog during the beta phase of WordPress release cycle. Publishing
   dev notes is particularly important when plugin/theme authors and WordPress developers
   need to be aware of those changes.In general, all dev notes are compiled into
   a Field Guide at the beginning of the release candidate phase. was published 
   about [new CSS styles for buttons with disabled state coming in WP 5.5](https://make.wordpress.org/core/2020/07/10/new-css-styles-for-buttons-with-disabled-state-in-wp-5-5/).
 * The [notes for the core js chat on July 7th](https://make.wordpress.org/core/2020/07/09/javascript-core-chat-summary-07-july-2020/)
   were published.

[#javascript](https://make.wordpress.org/core/tag/javascript/), [#meeting-notes](https://make.wordpress.org/core/tag/meeting-notes/)