{"id":6195,"date":"2026-06-10T16:08:10","date_gmt":"2026-06-10T16:08:10","guid":{"rendered":"https:\/\/developer.wordpress.org\/news\/?p=6195"},"modified":"2026-06-10T20:18:38","modified_gmt":"2026-06-10T20:18:38","slug":"whats-new-for-developers-june-2026","status":"publish","type":"post","link":"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/","title":{"rendered":"What\u2019s new for developers? (June 2026)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">June has been a busy month for anyone keeping one eye on WordPress 7.0 and the other on what comes next. The final release is now out, Gutenberg 23.3 and 23.2 shipped with a wide mix of editor updates, and the first testing calls for WordPress 7.1 are already here.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wordpress.org\/news\/2026\/05\/armstrong\/\">WordPress 7.0 &#8220;Armstrong&#8221;<\/a> landed on May 20, 2026. If you have not tested your plugins and themes against it yet, now is the time to do so. The <a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/14\/wordpress-7-0-field-guide\/\">WordPress 7.0 Field Guide<\/a> is still the best place to start, especially if your work touches AI APIs, block registration, DataViews, block bindings, editor UI, design tools, or accessibility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But let&#8217;s get into the new stuff. As usual, when testing features mentioned in these What&#8217;s new? posts, ensure that you&#8217;re running the latest version of WordPress and the latest version of the Gutenberg plugin. You can also <a href=\"https:\/\/playground.wordpress.net\/\">test the latest updates via Playground<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-group has-light-grey-2-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"border-radius:2px;margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30);padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">\n<p class=\"has-large-font-size wp-block-paragraph\" style=\"font-style:normal;font-weight:600;line-height:1\">Table of Contents<\/p>\n\n\n\n<nav aria-label=\"Table of Contents\" class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#highlights\">Highlights<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#media-editor-modal-is-now-the-default-crop-experience\">Media editor modal is now the default crop experience<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#client-side-media-processing-is-ready-for-testing\">Client-side media processing is ready for testing<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#collaborative-editing-outreach-starts-for-7-1\">Collaborative editing outreach starts for 7.1<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#plugins-tools\">Plugins &amp; Tools<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#react-19-compatibility-remains-the-big-watch-item\">React 19 compatibility remains the big watch item<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#abilities-api-refinements-continue\">Abilities API refinements continue<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#php-support-labels-get-clearer\">PHP support labels get clearer<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#unicode-email-support-is-open-for-feedback\">Unicode email support is open for feedback<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#ai-client-image-generation-tutorial\">AI Client image generation tutorial<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#themes\">Themes<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#pseudo-states-on-single-block-instances\">Pseudo states on single block instances<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#responsive-style-states-keep-expanding\">Responsive style states keep expanding<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#more-theme-facing-block-updates\">More theme-facing block updates<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#author-link-title-attributes-have-changed\">Author link title attributes have changed<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#playground\">Playground<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#wp-now-is-deprecated-in-favor-of-playground-cli\">wp-now is deprecated in favor of Playground CLI<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#pr-previews-and-php-snippets-get-official-guides\">PR previews and PHP snippets get official guides<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#saved-playgrounds-and-sites-api-work\">Saved Playgrounds and Sites API work<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#php-wasm-extension-work\">PHP.wasm extension work<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#user-facing-changes\">User-facing changes<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#dashboard-experiment-gets-more-widgets\">Dashboard experiment gets more widgets<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#accessibility-polish-across-editor-and-admin-screens\">Accessibility polish across editor and admin screens<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#resources\">Resources<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#developer-blog\">Developer Blog<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/developer.wordpress.org\/news\/2026\/06\/whats-new-for-developers-june-2026\/#general\">General<\/a><\/li><\/ol><\/li><\/ol><\/nav>\n<\/div>\n\n\n\n<h2 id=\"highlights\" class=\"wp-block-heading\">Highlights<\/h2>\n\n\n\n<h3 id=\"media-editor-modal-is-now-the-default-crop-experience\" class=\"wp-block-heading\">Media editor modal is now the default crop experience<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The media editor modal is now <strong>the default crop experience<\/strong> in Gutenberg 23.3. The workflow still starts from the familiar Crop button, but editing happens in a dedicated modal with freeform and aspect-ratio cropping, flip, rotation, zoom, and metadata editing.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2cb154f324e&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2cb154f324e\" class=\"wp-block-image alignwide size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"690\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/05-gutenberg-233-video-frame-01-1-1024x690.png\" alt=\"The WordPress Edit media modal showing an image crop selection with aspect ratio, zoom, rotation, and save controls.\" class=\"wp-image-6200\" srcset=\"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/05-gutenberg-233-video-frame-01-1-1024x690.png 1024w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/05-gutenberg-233-video-frame-01-1-300x202.png 300w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/05-gutenberg-233-video-frame-01-1-768x517.png 768w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/05-gutenberg-233-video-frame-01-1-1536x1034.png 1536w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/05-gutenberg-233-video-frame-01-1.png 1868w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you missed the earlier <a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/21\/media-editor-modal-call-for-testing\/\">Media Editor Modal call for testing<\/a>, start there for the larger testing context. Follow-up work added <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/78935\">aspect-ratio controls to the mobile toolbar<\/a>, replaced the zoom slider with <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/78928\">plus\/minus buttons<\/a>, refactored the modal layout, and improved sidebar and close-button behavior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If your plugin customizes image editing or depends on image metadata, test this flow with real images, keyboard navigation, and touch interactions.<\/p>\n\n\n\n<h3 id=\"client-side-media-processing-is-ready-for-testing\" class=\"wp-block-heading\">Client-side media processing is ready for testing<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/make.wordpress.org\/core\/2026\/06\/04\/call-for-testing-client-side-media-processing\/\">client-side media processing call for testing<\/a> is one of the more concrete testing calls this month. The feature uses a VIPS\/WASM pipeline to generate image sub-sizes in the browser when possible, while falling back to server-side processing when needed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is worth testing if your plugin customizes uploads, works with image metadata, generates thumbnails, or supports newer formats. The call for testing specifically asks for feedback on <strong>AVIF, WebP, HEIC, Ultra HDR, JPEG XL, GIF-to-video<\/strong> conversion, large images, generated sub-sizes, and fallback behavior.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>There are some important limits. The feature is currently active in Chromium browsers with the latest Gutenberg plugin, disabled by default in Firefox and Safari, skipped on devices with 2GB RAM or less, and bypassed for slow connections or restrictive <\/em><em>worker-src<\/em><em> Content Security Policy settings.<\/em><\/p>\n\n\n\n<h3 id=\"collaborative-editing-outreach-starts-for-7-1\" class=\"wp-block-heading\">Collaborative editing outreach starts for 7.1<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Real-time collaboration did not ship in WordPress 7.0, but the work has not gone quiet. A new <a href=\"https:\/\/make.wordpress.org\/core\/2026\/06\/03\/announcing-a-collaborative-editing-outreach-effort-for-7-1\/\">collaborative editing outreach effort for 7.1<\/a> is now underway for people testing the latest Gutenberg plugin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is still something to test and follow, not something to build production workflows around yet. If your plugin stores editor state, uses meta boxes, modifies block editor data, or depends on save behavior, this is a good time to try the latest work and report anything that feels off.<\/p>\n\n\n\n<h2 id=\"plugins-tools\" class=\"wp-block-heading\">Plugins &amp; Tools<\/h2>\n\n\n\n<h3 id=\"react-19-compatibility-remains-the-big-watch-item\" class=\"wp-block-heading\">React 19 compatibility remains the big watch item<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/27\/react-19-upgrade-in-wordpress\/\">React 19 upgrade dev note<\/a> is still worth reading, even though the upgrade has been temporarily reverted in Gutenberg. It outlines the kinds of changes plugin authors should prepare for: moving away from <code>render()<\/code> and <code>hydrate()<\/code>, replacing <code>unmountComponentAtNode()<\/code>, avoiding <code>findDOMNode()<\/code>, checking ref callbacks, and reviewing TypeScript updates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/make.wordpress.org\/core\/2026\/06\/05\/react-19-upgrade-temporarily-reverted-in-gutenberg\/\">temporary revert post<\/a> explains what happened. Several plugins bundled React 18 JSX runtime helpers and crashed when loaded alongside React 19. The Core team plans to keep working toward React 19 for WordPress 7.1, but with a more incremental strategy.If your plugin ships compiled JSX, uses <code>@wordpress\/element<\/code>, or reaches into private editor internals, this is the area to keep testing.<\/p>\n\n\n\n<h3 id=\"abilities-api-refinements-continue\" class=\"wp-block-heading\">Abilities API refinements continue<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Abilities API has already been covered in previous roundups, but there has been a steady stream of follow-up work in Core. Recent changes include <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/62397\">lifecycle filters for ability execution<\/a>,<a href=\"https:\/\/core.trac.wordpress.org\/changeset\/62398\"> input and output validation filters<\/a>, <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/62420\">filtering support for <code>wp_get_abilities()<\/code><\/a>, expanded <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/62426\">site, user, and environment info responses<\/a>, <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/62427\">REST schema preparation hardening<\/a>, and REST response keyword handling through <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/62447\">keyword allow-listing<\/a> and <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/62449\">required keyword normalization<\/a>. For a broader view of follow-up work, follow the <a href=\"https:\/\/core.trac.wordpress.org\/query?component=Abilities+API\">Abilities API Trac query<\/a>. If you are experimenting with abilities, it is worth checking the latest trunk behavior before leaning too hard on earlier assumptions.<\/p>\n\n\n\n<h3 id=\"php-support-labels-get-clearer\" class=\"wp-block-heading\">PHP support labels get clearer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/22\/php-support-clarification-2026\/\">PHP support clarification<\/a> retires the old &#8220;beta support&#8221; label for PHP 8. WordPress 6.9 and 7.0 are now documented as fully supporting PHP 8.5.For plugin and theme authors, the practical takeaway is straightforward: <strong>the minimum supported PHP version is 7.4 as of WordPress 7.0, and the minimum recommended version remains PHP 8.3<\/strong>. If your docs, support replies, or CI jobs still treat newer PHP versions as experimental for WordPress, this is a good time to update them.<\/p>\n\n\n\n<h3 id=\"unicode-email-support-is-open-for-feedback\" class=\"wp-block-heading\">Unicode email support is open for feedback<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A new proposal asks for feedback on <a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/22\/extending-unicode-support-in-email-addresses-usernames-and-slugs\/\">extending Unicode support in email addresses, usernames, and slugs<\/a>. This is not a shipped feature yet, but it could affect a lot of plugin code if it moves forward.The proposal touches functions like <code>is_email()<\/code>, <code>sanitize_email()<\/code>, and <code>antispambot()<\/code>, along with filters, database storage, normalization, and visually confusable characters. If your plugin validates, stores, masks, or compares email addresses, this is worth reading while feedback can still shape the approach.<\/p>\n\n\n\n<h3 id=\"ai-client-image-generation-tutorial\" class=\"wp-block-heading\">AI Client image generation tutorial<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The AI Client and Connectors API were covered in the April and May roundups, but there is now a practical tutorial on <a href=\"https:\/\/developer.wordpress.org\/news\/2026\/05\/how-to-build-an-image-generation-plugin-with-the-wordpress-ai-client\/\">building an image generation plugin with the WordPress AI Client<\/a>.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2cb15500615&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2cb15500615\" class=\"wp-block-image alignwide size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"670\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/08-ai-client-image-generation-ui-1024x670.png\" alt=\"The WordPress Media Library showing an image generation modal with a prompt field, generated preview, filename field, and save button.\" class=\"wp-image-6202\" srcset=\"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/08-ai-client-image-generation-ui-1024x670.png 1024w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/08-ai-client-image-generation-ui-300x196.png 300w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/08-ai-client-image-generation-ui-768x503.png 768w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/08-ai-client-image-generation-ui-1536x1005.png 1536w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/08-ai-client-image-generation-ui-2048x1340.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The most useful part is the feature-detection pattern. A plugin should check whether a provider is configured and whether it supports the capability the plugin needs before exposing the UI. The tutorial walks through that flow in the Media Library, from generating an image to saving it as an attachment.<\/p>\n\n\n\n<h2 id=\"themes\" class=\"wp-block-heading\">Themes<\/h2>\n\n\n\n<h3 id=\"pseudo-states-on-single-block-instances\" class=\"wp-block-heading\">Pseudo states on single block instances<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Gutenberg 23.3 added support for pseudo-state styles on individual block instances. That means a single block can carry styles for states like <code>:hover<\/code>, <code>:focus<\/code>, or <code>:visited<\/code> without changing every instance of that block across the site.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2cb15501151&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2cb15501151\" class=\"wp-block-image alignwide size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"372\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/563143084-bbc557b8-ca9d-4cb0-b649-5529a73b6cc7-1024x372.png\" alt=\"The WordPress block editor showing a Button block with the Hover state selected in the block settings sidebar.\" class=\"wp-image-6204\" srcset=\"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/563143084-bbc557b8-ca9d-4cb0-b649-5529a73b6cc7-1024x372.png 1024w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/563143084-bbc557b8-ca9d-4cb0-b649-5529a73b6cc7-300x109.png 300w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/563143084-bbc557b8-ca9d-4cb0-b649-5529a73b6cc7-768x279.png 768w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/563143084-bbc557b8-ca9d-4cb0-b649-5529a73b6cc7-1536x558.png 1536w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/563143084-bbc557b8-ca9d-4cb0-b649-5529a73b6cc7-2048x745.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The work landed in <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/76491\">Add supports for pseudo states on single block instances<\/a> and closes the long-running issue for a <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/38277\">standardized way to modify interactive states for blocks<\/a>. If you build themes with detailed button, link, or navigation states, this is worth testing in Gutenberg.<\/p>\n\n\n\n<h3 id=\"responsive-style-states-keep-expanding\" class=\"wp-block-heading\">Responsive style states keep expanding<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Responsive and state-aware styling continues to move forward across recent Gutenberg releases. <a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/21\/whats-new-in-gutenberg-23-2-21-may\/\">Gutenberg 23.2<\/a> introduced responsive global block styles with states, and Gutenberg 23.3 adds <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/78543\">layout responsive styles<\/a> and UI changes that hide some controls when a style state is selected.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2cb15501f32&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2cb15501f32\" class=\"wp-block-image alignwide size-large has-custom-border wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1002\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/07-responsive-border-image-frame-1-1024x1002.png\" alt=\"An Image block in the WordPress editor with the Mobile state enabled and responsive dimension, border, and radius controls visible.\" class=\"has-border-color has-light-grey-2-border-color wp-image-6206\" style=\"border-width:1px\" srcset=\"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/07-responsive-border-image-frame-1-1024x1002.png 1024w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/07-responsive-border-image-frame-1-300x293.png 300w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/07-responsive-border-image-frame-1-768x751.png 768w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/07-responsive-border-image-frame-1.png 1380w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This is still an area to test in Gutenberg, but it is one theme authors should keep an eye on. The best follow-up is the open <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/77817\">Responsive style states for blocks &#8211; iteration for WP 7.1<\/a> tracking issue, especially if your themes depend on theme.json presets and settings, layout presets, block supports, or custom responsive controls.<\/p>\n\n\n\n<h3 id=\"more-theme-facing-block-updates\" class=\"wp-block-heading\">More theme-facing block updates<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Several smaller changes are worth noting if your theme customizes editor controls, navigation, or front-end block output. Global Styles now integrates <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/78048\">slug-based color selection in the color panel<\/a>, the <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/76672\">Home Link block gained missing controls<\/a>, the <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/78524\">Breadcrumbs block hides visual separators from screen readers<\/a>, Navigation restores <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/78484\"><code>block_core_navigation_submenu_render_submenu_icon()<\/code> as a deprecated shim<\/a>, and the Image block avoids <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/70575\">squished output when only one dimension is set<\/a>.<\/p>\n\n\n\n<h3 id=\"author-link-title-attributes-have-changed\" class=\"wp-block-heading\">Author link title attributes have changed<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress 7.0 removed the default &#8220;Posts by Author&#8221; title attributes from author post links and from links generated by <code>wp_list_authors()<\/code>. The <a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/14\/removing-title-attributes-in-author-link-functions\/\">Core dev note<\/a> explains the change and shows how to customize the text if you intentionally need it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a small markup change, but it can still matter for themes and tests that compare author-link output.<\/p>\n\n\n\n<h2 id=\"playground\" class=\"wp-block-heading\">Playground<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Playground had enough late-month updates for its own section this time around. The best starting point is the recent run of <a href=\"https:\/\/make.wordpress.org\/playground\/\">Make\/Playground posts<\/a>, especially the new posts on the Playground CLI, PR previews, and PHP snippets.<\/p>\n\n\n\n<h3 id=\"wp-now-is-deprecated-in-favor-of-playground-cli\" class=\"wp-block-heading\">wp-now is deprecated in favor of Playground CLI<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The most immediate change is that <a href=\"https:\/\/make.wordpress.org\/playground\/2026\/06\/08\/wp-now-is-deprecated-migrate-to-playground-cli\/\">wp-now is deprecated<\/a>. If you still use wp-now for quick local WordPress environments, <strong>it is time to move to the Playground CLI.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The post explains that the CLI is now the recommended path for local Playground workflows. That should make the migration fairly direct for plugin and theme developers who used wp-now as a fast way to spin up test sites.<\/p>\n\n\n\n<h3 id=\"pr-previews-and-php-snippets-get-official-guides\" class=\"wp-block-heading\">PR previews and PHP snippets get official guides<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There are also two new Make\/Playground posts that are useful for docs and review workflows. <a href=\"https:\/\/make.wordpress.org\/playground\/2026\/06\/02\/pr-preview-with-wordpress-playground-what-changes-in-version-3-of-the-github-action\/\">PR Preview with WordPress Playground: What changes in version 3 of the GitHub Action<\/a> covers the latest version of the PR preview action, which is worth reviewing if your project uses Playground previews for pull requests.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The team also published <a href=\"https:\/\/make.wordpress.org\/playground\/2026\/05\/19\/run-php-examples-anywhere-with-wordpress-playground\/\">Run PHP examples anywhere with WordPress Playground<\/a>, which walks through embedding runnable PHP examples with Playground snippets. This is a good one to bookmark if you write developer docs or tutorials and want examples that readers can run in the browser.<\/p>\n\n\n\n<h3 id=\"saved-playgrounds-and-sites-api-work\" class=\"wp-block-heading\">Saved Playgrounds and Sites API work<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Playground shipped <a href=\"https:\/\/github.com\/WordPress\/wordpress-playground\/releases\/tag\/v3.1.35\">v3.1.35<\/a> and <a href=\"https:\/\/github.com\/WordPress\/wordpress-playground\/releases\/tag\/v3.1.36\">v3.1.36<\/a> within the last month. The most useful developer-facing thread is the continued work around saved sites and the Sites API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recent updates include the new <a href=\"https:\/\/wordpress.github.io\/wordpress-playground\/developers\/apis\/sites-api\">Sites API documentation<\/a>, active-site readiness work, saved-site creation APIs, autosave restore UX, and changes that avoid autosave prompts in embedded Playground instances.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you use Playground for demos, support, docs, or testing, this is the set of changes to watch. Saved browser-based WordPress sites are becoming more like something you can return to, rather than a throwaway session.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That persistence work also pairs well with Playground&#8217;s growing support for older WordPress versions. You can now load historical versions such as <a href=\"https:\/\/playground.wordpress.net\/?wp=0.7\">WordPress 0.7 in Playground<\/a>, and the <a href=\"https:\/\/janjakes.github.io\/wordpress-museum\/\">Virtual WordPress Museum<\/a> is a useful demo of that idea in action.<\/p>\n\n\n\n<h3 id=\"php-wasm-extension-work\" class=\"wp-block-heading\">PHP.wasm extension work<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There has also been a cluster of PHP.wasm work that is worth watching if you build advanced demos, browser-based tooling, or documentation examples. Playground continues to improve PHP-next builds, PHP side modules, extension usage, and runtime compatibility.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The new <a href=\"https:\/\/wordpress.github.io\/wordpress-playground\/guides\/php-frameworks\">Running PHP Frameworks in Playground<\/a> guide shows how far the runtime can stretch beyond basic WordPress examples, and the <a href=\"https:\/\/github.com\/WordPress\/wordpress-playground\/pull\/3582\"><code>@php-wasm\/compile-extension workflow<\/code><\/a> points to a more capable extension story.<\/p>\n\n\n\n<h2 id=\"user-facing-changes\" class=\"wp-block-heading\">User-facing changes<\/h2>\n\n\n\n<h3 id=\"dashboard-experiment-gets-more-widgets\" class=\"wp-block-heading\">Dashboard experiment gets more widgets<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The customizable dashboard remains experimental, but it is starting to feel more concrete. Gutenberg 23.3 highlights five new widgets and more layout polish. Recent PRs also added Site Health, News, Events, Quick Draft, a site preview\/URL bar, ghost widgets, size presets, and container-breakpoint grid columns.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2cb15503fa1&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2cb15503fa1\" class=\"wp-block-image alignwide size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"694\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/06-gutenberg-233-video-frame-02-1024x694.png\" alt=\"The experimental WordPress dashboard customization screen showing multiple dashboard widgets arranged in a two-column layout.\" class=\"wp-image-6208\" srcset=\"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/06-gutenberg-233-video-frame-02-1024x694.png 1024w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/06-gutenberg-233-video-frame-02-300x203.png 300w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/06-gutenberg-233-video-frame-02-768x521.png 768w, https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/06-gutenberg-233-video-frame-02.png 1460w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This is not a stable admin extension API yet. But if you build dashboard experiences or plugin-owned admin screens, it is worth keeping an eye on where the experiment is heading. The <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/issues\/77616\">customizable dashboard overview issue<\/a> is the best place to get up to speed.<\/p>\n\n\n\n<h3 id=\"accessibility-polish-across-editor-and-admin-screens\" class=\"wp-block-heading\">Accessibility polish across editor and admin screens<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Accessibility work continued in both Gutenberg and Core. Gutenberg 23.3 includes revisions improvements, and follow-up work fixed <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/pull\/78671\">Font Library focus navigation<\/a>. Core trunk includes <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/62454\">admin color-scheme contrast improvements for editor chrome<\/a>, <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/62459\">frontend toolbar focus outline fixes<\/a>, and <a href=\"https:\/\/core.trac.wordpress.org\/changeset\/62467\">button active-state fixes in high contrast mode<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you ship custom admin screens, editor panels, media workflows, or design-system extensions, include keyboard navigation, high contrast mode, larger text settings, and non-default admin color schemes in your next testing pass.<\/p>\n\n\n\n<h2 id=\"resources\" class=\"wp-block-heading\">Resources<\/h2>\n\n\n\n<h3 id=\"developer-blog\" class=\"wp-block-heading\">Developer Blog<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">One new tutorial was published on the Developer Blog in the past month:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developer.wordpress.org\/news\/2026\/05\/how-to-build-an-image-generation-plugin-with-the-wordpress-ai-client\/\">How to build an image generation plugin with the WordPress AI Client<\/a><\/li>\n<\/ul>\n\n\n\n<h3 id=\"general\" class=\"wp-block-heading\">General<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There are also a few other noteworthy posts from official WordPress blogs to read if you haven&#8217;t already done so:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/23\/accessibility-improvements-in-wordpress-7-0\/\">Accessibility Improvements in WordPress 7.0<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/20\/commence-operation-wp-7-1\/\">Commence: Operation WP 7.1<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/05\/21\/wordpress-7-1-call-for-volunteers\/\">WordPress 7.1 Call for Volunteers<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2026\/06\/05\/react-19-upgrade-temporarily-reverted-in-gutenberg\/\">React 19 upgrade temporarily reverted in Gutenberg<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Never want to miss an article again? <a href=\"https:\/\/developer.wordpress.org\/news\/subscribe\/\">Subscribe to the WordPress Developer Blog<\/a>.<\/p>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><em>Props to <a href='https:\/\/profiles.wordpress.org\/bph\/' class='mention'><span class='mentions-prefix'>@<\/span>bph<\/a> and <a href='https:\/\/profiles.wordpress.org\/greenshady\/' class='mention'><span class='mentions-prefix'>@<\/span>greenshady<\/a> for reviewing this article.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress 7.0 is out, and the 7.1 cycle is already asking developers to test media processing, React 19 compatibility, collaborative editing, theme style states, and Playground workflows.<\/p>\n","protected":false},"author":23464488,"featured_media":6213,"comment_status":"open","ping_status":"closed","sticky":true,"template":"","format":"standard","meta":{"_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":"edge","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[53,40,38,39],"tags":[65],"class_list":["post-6195","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blocks","category-plugins","category-themes","category-updates","tag-roundup","mentions-bph","mentions-greenshady"],"revision_note":"","jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/developer.wordpress.org\/news\/files\/2026\/06\/whats-new-devs-june-2026.jpeg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/posts\/6195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/users\/23464488"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/comments?post=6195"}],"version-history":[{"count":8,"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/posts\/6195\/revisions"}],"predecessor-version":[{"id":6217,"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/posts\/6195\/revisions\/6217"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/media\/6213"}],"wp:attachment":[{"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/media?parent=6195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/categories?post=6195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/developer.wordpress.org\/news\/wp-json\/wp\/v2\/tags?post=6195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}