ent only. Blocks, patterns, headlines, paragraphs, lists, buttons, those can all be just added, just change the content of it. But there is an edit button on the right edit pattern, and it&#8217;s for unsynced patterns as well as for sync patterns. The sync patterns has a different workflow when you change the original. That was always in there, but now this is coming to the unsynced patterns as well. When there are multiple patterns in multiple blocks in a pattern. So they&#8217;re kind of designated a section and then you can reduce the trouble a content editor can get themselves into.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I see. I see. Yeah, it certainly looks different. Yeah, you have different buttons. But yeah, you cannot go into like— yeah, you can like make it bold or italic or any of the work with the text. But yeah, you cannot say I want the button color to change. Is this the default for all patterns? As you said, it&#8217;s like I&#8217;ve now just added a regular pattern. And it&#8217;s not synced. So I assume it&#8217;s not synced.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Let me check.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I think so. Interesting. So when I go to edit pattern, oh, I now have to go to edit pattern in the toolbar. In the sidebar. I have now edit pattern.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: No, no, in the block toolbar.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: That&#8217;s the block toolbar. You can say edit pattern and then you get all the controls for each block to move them, delete them, whatever. And then you can go back and then you have, when you are in the pattern, you have only the editing ability as you described. So you can, cannot change the blocks itself, but you can like change the contents. I can change the image and set an alternative text, but I cannot say, give it a different aspect ratio or use a different image size or whatever.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Or make the paragraph a list or something like that. There, those decisions.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: So this is actually very good to know because I just stumbled upon that and, ooh, this will be why I wanted to do this. This will be interesting because that&#8217;s like, that&#8217;s a huge change. I can see the struggle people will have who are not aware of this to get into the editor. They have added a pattern, simply a pattern, and now they want to change the heading. For example, and now on 7.0, they&#8217;re like, the possibility to change the heading is gone. And they do not realize that they have to click on the edit pattern block first in order to change the heading level, for example. So I think this could be from the user experience part.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, a little bit of a stumble block. Yeah, absolutely. The dev note, and I see, I saw the draft of this dev note for that. There&#8217;s also a way for site admins to opt out of content-only. That especially if you are working with clients or you&#8217;re creating themes, you probably want to, because you want to edit the pattern all the time. You can opt out of it with a filter. And both are available for PHP as well as for JavaScript. And as a plugin developer or theme developer, you can designate patterns as content-only. And with an attribute in the pattern. Block thing. Those who create custom blocks, they can also designate in the block JSON which attributes are content only. You give it a role equals content in the block JSON. So there are multiple ways to kind of skin that cat, as they say in America. So for the end user, I think the advantage is that there is no ambiguity if I change that. Is that getting me into trouble or something like that? Yeah.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah. Yeah. From that point of view, I&#8217;m coming from a different point of view where the user is used to working with that and suddenly they cannot on the first glance, they cannot edit stuff anymore. Like they cannot change the heading level or font, font size, font, font family, whatever. So I think from that perspective, this will be a bit of a struggle.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So yeah. But I think the edit pattern button is prominent enough in the sidebar. But yeah, we&#8217;ll kind of need to see what the verdict is about that.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, yeah, true, true. So this will be an interesting thing to catch on, especially if you&#8217;re a heavy pattern user. This will be very interesting.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, I think the—</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik: </em>I mean, I do see, I do see, don&#8217;t get me wrong, I do see the point in like having this content only. I mean, we have something very similar in our Grid plugin. Where you can lock down, like you have the structure, but you can only edit the content. It&#8217;s very, very similar. So there is the need for this. It&#8217;s just like coming when you are already working with WordPress and then you&#8217;re coming to this. That is the issue that I&#8217;m seeing. So, but for real, for real, the, yeah, for real, the, this reduction of overwhelm to, oh my God, I have so many options, but the pattern is there, but you cannot break it.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Mm-hmm.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Uh, totally. That&#8217;s totally a cool thing.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. And I get your point, but what is it? It&#8217;s a 30-second, oh, I need to click on edit pattern. Uh, kind of reveal of that. Yeah. It&#8217;s not a kind of totally, oh, I, I get your point.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Well, if, if you are lucky, if you are lucky and the people see it and have the, I do not want to sound, uh, too, too negative about it, but if they have the curiosity to like explore. To do like, okay, what happens if I click on edit pattern? But you also have those people like who are like literally overwhelmed already by this and then go to whatever support people you have, whether it&#8217;s a plugin, a specific plugin is, I do see an increase of people coming into our support, for example, and saying, hey, things are not working anymore because of, I don&#8217;t know what&#8217;s happening here.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So, yeah.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. So I get that, especially because people just go into the website to get something done. And if they are overwhelmed with all the changes, it&#8217;s kind of a certain whoops.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: I didn&#8217;t expect that to change on me forever. Yeah. I totally get it.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: If they just want to add a text, they will probably not notice or maybe realize, okay, something is different. But as soon as they want to change anything that is related to the blog, I think then it&#8217;s when it&#8217;s going to be—</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: just to the design. Yeah.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Absolutely. Yeah. Yeah.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, exactly.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So I think the last thing that we talk about a little bit here is what did not make it into the 7.0. That was on the roadmap. And that was the playlist block didn&#8217;t finish in time. The dialog block, which I really like. The dialog block is something that you get a button or a link and then you can control what dialog comes up for that. And the tabs block that I&#8217;m really sad about that it did not make it.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Do you know what happened to like why the decision was made to not bring it in?</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: They have some, there was an aspect of the active tab state in a non-standard way. There were some accessibility issues that they kind of wanted to revisit.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Oh yeah. Tell me about it. Tell me about it. I made the Tabs plugin, the great plugin accessible. So it&#8217;s possible. So, but yeah, I get that this may be the reason why it has been cut out.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: I think there were too many people, too many cooks in the kitchen for that with different changes. So I think they need to be finalized as well. And then the playlist block. I&#8217;m really sad about that, but we will see. And then some of the notes features that were thought about didn&#8217;t make it either. There were a few things that haven&#8217;t been worked on that were in the roadmap, were kind of, kind of was aspirational, but it wasn&#8217;t really prioritized. So like there were short blocks. A lot of people would like to see that. That&#8217;s like block binding, but inside the paragraph. So you can change dynamic data in a paragraph and just in, in a certain way. It could be a date or could be a change like the time zone change, yeah, depending on something. Or data from the meta fields, custom fields that are just in the flow text kind of, you want to put them in. I know that people work on that. Slider block was not worked on and some of the media things. Didn&#8217;t make it either. So are you excited about WordPress 7.0? </p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I mean, there&#8217;s a lot of very interesting changes and I mean, just because something didn&#8217;t make it, I think there&#8217;s a lot that made it that is already giving an impact. We haven&#8217;t even touched the AI part. So I think this is also something that is really coming. And even that in itself is probably enough to make another episode about if you want to. Yeah. </p>\n\n\n\n<p class="wp-block-paragraph">But overall, I think there&#8217;s some good quality of life improvements. I mean, real-time collaboration is something that everyone has to look for themselves if it&#8217;s useful. I can see it useful, of course, in like Google Docs style if you need to collaborate really on something, but also in support essentially to like, okay, let me get into the same page and show me on a video call what are you doing, or without even being on a video call, without screen sharing, to see what the other person is doing essentially. I&#8217;m not sure if I think you can only see the editing sort of things, but overall to see, okay, I do this, I do that, and then this happens. I don&#8217;t know. This could maybe be a thing. Maybe we get the icon block, long, long awaited. We do have some more responsive hiding features, if you will. It&#8217;s, how to say, rudimentary, but it&#8217;s like, it works. So if you&#8217;re fine with that, then you&#8217;re good. Font library available to everyone. I think that&#8217;s not bad either. So yeah, I think overall this will be an interesting, an interesting release to have available.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: And I mean, there&#8217;s always work to do, so we&#8217;re not running out of work. You know, no, even if, uh, with the help of AI, I think the work is always going to be there. So for the developers amongst us, I think you want to look at the PHP-only registration for blocks. Also, some of the data view package changes for your own plugin might be very interesting for you. </p>\n\n\n\n<h3 class="wp-block-heading">Gutenberg 22.5 RC</h3>\n\n\n\n<p class="wp-block-paragraph">Also, the client-side media improvements, they are there, but it&#8217;s not visible to anybody. It&#8217;s just kind of that the browser is now doing all the changes to the image, the downsizing for smaller aspect ratios or sizes. Yeah, it is done in the browser and doesn&#8217;t have to go to server and back. But that&#8217;s all relatively invisible to a normal user. True. I would come to an end here. We are almost at the hour and it was so much stuff to talk about. So is there anything, Jessica, that you want our listeners to know and you didn&#8217;t get a chance to talk about?</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Not really. Go testing, I would say. Make sure if you have a product like us, make sure things work so you do not get in too much trouble. There will always be people coming to you saying, hey, something does not work. I mean, we do have that too. It&#8217;s like, then it&#8217;s just simply helping people with WordPress that is not related to the product itself. But yeah, overall, just make sure things work because like there are some changes happening. We also didn&#8217;t touch too much on the iframe editor situation in our chat. So I think this is something you should look into. I think there has been a new post by Ella this week with some more information. So yeah, for the developers of us, take a look at that because I think that maybe can potentially cause issues.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: It shouldn&#8217;t, but yeah. And I&#8217;m kind of hard to think about a scenario how we could test this with older plugins because I don&#8217;t see sites that are in with maintenance with a developer, so they probably won&#8217;t have a problem. They&#8217;re already kind of up there because the Gutenberg plugin has always already been updated with the iframe. So, I&#8217;m looking at people who haven&#8217;t updated their site for 5 years or something like that with the old blocks version in there. And all of a sudden they come back, but they, the front end won&#8217;t change. So they wouldn&#8217;t see it unless they go in, in the editor. And I have not seen yet something that fails. So that&#8217;s why it&#8217;s now in the Gutenberg plugin. That the post editor is loaded in the iframe.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, it will not be enforced in 7.0, but on the horizon we already see, okay, if it&#8217;s now in Gutenberg 22.6, potentially we will have to deal with it in 7.1. So this summer around that time. Yeah, I think that&#8217;s, that&#8217;s something important to, to just have in the back of your mind that if you have a product or if you have not just a product, but also like, like you said, created custom blocks for a client for specific websites. And there is like either no maintenance or very low maintenance contract, then you need to be aware that things can change, will change. And we had these discussions in the past. I have to say that there are people who were very frustrated that things have changed in the editor and made actually their frontend go sideways and not too bad, but like, okay, wasn&#8217;t looking as it was before. So I can totally understand that frustration, but, I mean, it&#8217;s software. It&#8217;s a moving project. It&#8217;s never going to be this forever unless you lock in the default WordPress version and only receive security updates, then well, okay, you can deal with that.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: But yeah. Yeah. But I don&#8217;t think that this block iframe or block editor iframe thing for post edits, this is really a major change or breaking change. That, yeah, it, I don&#8217;t think that most WordPress users would even know that that happened or haven&#8217;t even noticed that it&#8217;s already happening. So for those who do client-side that are a little older, yeah, keep an eye out and let us know or let the contributors know if it&#8217;s breaking, what is breaking, so it can be dealt with for the next iteration on it. All right. </p>\n\n\n\n<p class="wp-block-paragraph">And I also share in the show notes, the latest conversations that Grade and Jessica had with two agency owners about the block editor and FSE. I think that&#8217;s pretty insightful.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Oh, that was with the Codable Experts. Yeah, it was not the agency owners, but the Codable Experts.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. Yeah. Codable is an agency that matches up projects with freelancers and they have a very strict screening method for the freelancers. So they are real experts and they know what they&#8217;re doing and so, thank you for telling me that. Anyway, so I will share that. So if anybody who wants to listen some more, it&#8217;s on YouTube and it was Jessica. </p>\n\n\n\n<p class="wp-block-paragraph">So, and as always, the show notes will be published on <a href="http://gutenbergtimes.com/podcast">gutenbergtimes.com/podcast</a>. This is episode 127. And if you have questions and suggestions or news you want us to include, send them to <a href="mailto:changelog@gutenbergtimes.com">changelog@gutenbergtimes.com</a>. That&#8217;s <a href="mailto:changelog@gutenbergtimes.com">changelog@gutenbergtimes.com</a>. And thank you so much for spending this time with me and Jessica and going over the WordPress 7.0 features with me. And it was good to see you and talk to you. Thanks for listening and goodbye.</p>\n\n\n\n<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Thanks for having me. Bye.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 01 Mar 2026 17:15:04 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:19:"Gutenberg Changelog";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:41;a:6:{s:4:"data";s:21:"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:108:"Gutenberg Times: Help test WordPress 7.0 beta2, CSS in Block themes, AI experiements – Weekend Edition 359";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://gutenbergtimes.com/?p=44470";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:113:"https://gutenbergtimes.com/help-test-wordpress-7-0-beta2-css-in-block-themes-ai-experiements-weekend-edition-359/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:24645:"<p class="wp-block-paragraph">Happy Saturday! </p>\n\n\n\n<p class="wp-block-paragraph">It&#8217;s been another interesting week in WordPress, Gutenberg and AI. </p>\n\n\n\n<p class="wp-block-paragraph">If you would like to know more about my two weeks in New York and the immersive AI training there, here is a post for you. <a href="https://automattic.com/2026/02/25/ai-enablement-wordpress/">What Automattic’s AI Enablement Training Means for WordPress</a>. </p>\n\n\n\n<p class="wp-block-paragraph">And now, enjoy all the videos, blog posts and podcasts below.</p>\n\n\n\n<p class="wp-block-paragraph">Yours, <img alt="💕" class="wp-smiley" src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f495.png" style="height: 1em;" /><br /><em>Birgit</em></p>\n\n\n\n\n\n<h2 class="wp-block-heading" id="0-word-press-release-information">Developing Gutenberg and WordPress</h2>\n\n\n\n<p class="wp-block-paragraph">WordPress <strong><a href="https://wordpress.org/news/2026/02/wordpress-7-0-beta-2/">7.0 Beta2</a> </strong>is now available for testing. How? Glad you asked. The Test team has compiled a great list in their post <a href="https://make.wordpress.org/test/2026/02/20/help-test-wordpress-7-0/"><strong>Help Test WordPress 7.0</strong></a>. It&#8217;s the perfect way to learn what&#8217;s in the new release and you can help find bugs, that could be squashed before the final release.</p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><strong>Ray Morey</strong>, editor of The Repository, has some details in <a href="https://www.therepository.email/wordpress-7-0-beta-2-ships-with-connectors-ui-delivering-on-mullenwegs-ai-vision" rel="noreferrer noopener" target="_blank"><strong>WordPress 7.0 Beta 2 Ships With Connectors UI, Delivering on Mullenweg’s AI Vision</strong></a></p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><strong>Ella Van Durpe</strong> shares <a href="https://make.wordpress.org/core/2026/02/24/iframed-editor-changes-in-wordpress-7-0/"><strong>what&#8217;s shifting with the iframed post editor in WordPress 7.0</strong></a>: instead of checking all registered blocks across your plugins, WordPress will now only look at blocks actually inserted in the post. If they&#8217;re all Block API version 3 or higher, you get the iframe — if not, it steps back gracefully. Full enforcement isn&#8217;t happening in 7.0, but <em>Gutenberg plugin 22.6</em> enforces it for classic themes to gather real-world feedback first.</p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph">Release lead <strong>Bernie Reiter,</strong> published a new version, Gutenberg 22.6 and in his release post <a href="https://make.wordpress.org/core/2026/02/25/whats-new-in-gutenberg-22-6-25-february/"><strong>What’s new in Gutenberg 22.6? (25 February)</strong></a> he highlighted:</p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://make.wordpress.org/core/2026/02/25/whats-new-in-gutenberg-22-6-25-february/#in-editor-revisions-visual-change-tracking">In-Editor Revisions: Visual Change Tracking</a></li>\n\n\n\n<li><a href="https://make.wordpress.org/core/2026/02/25/whats-new-in-gutenberg-22-6-25-february/#icon-block">Icon Block</a></li>\n\n\n\n<li><a href="https://make.wordpress.org/core/2026/02/25/whats-new-in-gutenberg-22-6-25-february/#navigation-overlay">Navigation Overlay</a></li>\n\n\n\n<li><a href="https://make.wordpress.org/core/2026/02/25/whats-new-in-gutenberg-22-6-25-february/#client-side-media-processing">Client-Side Media Processing</a></li>\n\n\n\n<li><a href="https://make.wordpress.org/core/2026/02/25/whats-new-in-gutenberg-22-6-25-february/#real-time-collaboration">Real-Time Collaboration</a></li>\n\n\n\n<li><a href="https://make.wordpress.org/core/2026/02/25/whats-new-in-gutenberg-22-6-25-february/#gallery-lightbox-navigation">Gallery Lightbox Navigation</a></li>\n\n\n\n<li><a href="https://make.wordpress.org/core/2026/02/25/whats-new-in-gutenberg-22-6-25-february/#other-notable-highlights">Other Notable Highlights</a></li>\n</ul>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><strong>Anne McCarthy</strong> shares a candid look at <a href="https://nomad.blog/2026/02/28/iterating-on-notes-in-wordpress/"><strong>iterating on Notes features in WordPress</strong></a> that didn&#8217;t quite make the 7.0 cut. Built with Claude Code as part of her &#8220;Learn AI deeply&#8221; efforts, the three PRs in progress cover show/hide notes on the canvas, filter options (she leans toward &#8220;Open&#8221; over &#8220;Unresolved&#8221;), and compact note display. Questions around a resizable sidebar and UX friction remain open — your feedback on the PRs is warmly welcomed.</p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><strong>Jessica Lyschik,</strong> senior developer at Greyd, and I had fun recording another Gutenberg Changelog episode. We discussed the main user-facing features coming to WordPress 7.0. </p>\n\n\n\n<div class="wp-block-group has-light-background-background-color has-background"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">\n<p class="wp-block-paragraph"><img alt="🎙" class="wp-smiley" src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f399.png" style="height: 1em;" /> The latest episode is <a href="https://gutenbergtimes.com/podcast/gutenberg-changelog-127-wordpress-7-0-beta/">Gutenberg Changelog #127 – WordPress 7.0 Beta and Gutenberg 22.6</a> with special guest <strong>Jessica Lyschik</strong>, senior developer at Greyd</p>\n\n\n\n<figure class="wp-block-image size-full is-style-no-vertical-margin"><img alt="Jessica Lyschik and Birgit Pauli-Haack recording Gutenberg changelog episode number 127" class="wp-image-44548" height="184" src="https://i0.wp.com/gutenbergtimes.com/wp-content/uploads/2026/02/Screenshot-2026-02-27-at-12.47.56.png?resize=652%2C184&#038;ssl=1" width="652" /></figure>\n\n\n<div class="wp-block-newsletterglue-showhide ng-block" width="100%">\n<figure class="wp-block-embed is-type-rich is-provider-pocket-casts wp-block-embed-pocket-casts"><div class="wp-block-embed__wrapper">\n\n</div></figure>\n</div></div></div>\n\n\n\n<h2 class="wp-block-heading" id="0-p">Plugins, Themes, and Tools for #nocode site builders and owners</h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Tom Finley</strong> introduces <a href="https://tomfinley.com/stop-rebuilding-wordpress-block-patterns-from-scratch-use-block-zapper/"><strong>Block Zapper</strong></a>, a utility block that strips custom colors, spacing, typography, and backgrounds from WordPress block patterns in one click — so you can actually use them as clean starting points. You get granular control: preserve images and cover backgrounds while clearing everything else. Finley&#8217;s one important warning: it&#8217;s largely vibe-coded with AI assistance, so sandbox it thoroughly before touching any real project, and move your zapped blocks out before leaving the editor.</p>\n\n\n\n<p class="wp-block-paragraph">This seems to be inline with the <strong>Content Only Pattern editing experience</strong>, core contributors also try to achieve abstracting away the design aspects of working with patterns for content creators. It&#8217;s about to come to WordPress in 7.0 (or 7.1, the jury is still out) It is already available in the Gutenberg plugin 22.6 and this <a href="https://github.com/WordPress/gutenberg/issues/73775#issuecomment-3930751877">GitHub comment by Ramon Dodd.</a> </p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph">Carleton University&#8217;s <strong>Troy Chaplin</strong> built the <a href="https://wordpress.org/plugins/block-accessibility-checks/"><strong>Block Accessibility Checks plugin</strong></a> to catch what the WordPress block editor won&#8217;t — out-of-order headings, missing image alt text, and other gaps that slip through unexpectedly. Chaplin joined Chris Reynolds, Pantheon, on this week&#8217;s <a href="https://www.youtube.com/live/mLsC2tDcdL8">YouTube Livestream</a> for a walk-through of how the plugin validates your content in real time and flags issues before they reach your readers. A practical tool for anyone serious about making their content genuinely accessible to everyone.</p>\n\n\n<div class="wp-block-newsletterglue-showhide ng-block" width="100%">\n<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">\n\n</div></figure>\n</div>\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph">On WP Builds, <strong>Nathan Wrigley</strong> sits down with <strong>Ian Svoboda</strong>, a veteran of 10up, GenerateBlocks, and GeneratePress, to unpack the<a href="https://wpbuilds.com/2026/02/26/458-unpacking-the-clever-content-area-block-with-ian-svoboda/"> <strong>Content Area Block plugin</strong></a>. Born from a news site needing multiple editable regions per template, the plugin solves WordPress&#8217;s single-content-area limitation without meta field workarounds. You&#8217;ll hear about the technical hurdles — duplicating core hooks, navigating unstable APIs — and why this capability still hasn&#8217;t made it into Core.</p>\n\n\n<div class="wp-block-newsletterglue-showhide ng-block" width="100%">\n<figure class="wp-block-embed is-type-rich is-provider-pocket-casts wp-block-embed-pocket-casts"><div class="wp-block-embed__wrapper">\n\n</div></figure>\n</div>\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><strong>Rodolfo Melogli</strong> is the organizer of the <a href="https://checkoutsummit.com/">Checkout Summit in April</a> and editor of the <a href="https://wcwkly.com/">WooWeekly</a> newsletters. In his recent blog post, he discusses <a href="https://www.businessbloomer.com/my-honest-take-on-woocommerce-checkout-block-adoption/">WooCommerce Checkout Block adoption</a> and explains that most merchants still use the classic Shortcode even after two years of the block being the default option. The main issue is hesitation around plugin compatibility. Although WooCommerce data shows a 27% boost in conversions with the block checkout, the ecosystem has not fully adapted, and merchants are reluctant to risk disrupting their working stores.</p>\n\n\n\n<h2 class="wp-block-heading" id="2-word-press-6-0-1-and-6-1-scheduled">Theme Development for Full Site Editing and Blocks</h2>\n\n\n\n<p class="wp-block-paragraph">If you&#8217;ve ever wondered where your custom CSS actually lives — or should live — this comprehensive guide on <a href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/"><strong>14 ways to add custom CSS in the WordPress Block Editor</strong></a> is your new reference. Covering everything from <code>theme.json</code> structured properties and CSS variables to per-block Additional CSS, Block Style Variations, and <code>wp_enqueue_style()</code>, you&#8217;ll find a decision guide to match each method to your role, whether you&#8217;re a site builder, designer, or theme developer.</p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><strong>Jon Ang</strong>, Human Made, made the case that <a href="https://humanmade.com/wordpress-for-enterprise/how-wordpress-solves-visual-editing-without-the-complexity-tax/"><strong>WordPress in 2026 escapes the complexity tax</strong></a> that headless and composable stacks imposed on enterprise teams. The Site Editor, combined with Synced Patterns, Block Bindings, and the Interactivity API, now forms a structured visual system that scales alongside enterprise design systems without forcing teams into heavyweight JavaScript frameworks or fragile third-party glue. As Ang put it, it becomes a system interface &#8220;where visual work is grounded in real content models&#8221;.</p>\n\n\n<div class="ng-block-0fdc13a36865800f wp-block-newsletterglue-container ng-block" style="color: #666666;" width="100%"><div><div><div class="ng-block-vs ng-block-vs-1" colspan="3" height="0" style="height: 0px;"></div></div><div><div class="ng-block-hs ng-block-hs-1" height="0" style="width: 0px;"></div><div align="none" class="ng-block-td" style="font-size: 16px; font-family: Helvetica; line-height: 1.6; font-weight: normal; padding-top: 20px; padding-bottom: 20px; padding-left: 0px; padding-right: 0px; text-align: none; color: #666666; background-color: #fdfcea; border-radius: 12px;"><div class="ng-block-1137777dd59e7864 wp-block-newsletterglue-text ng-block" style="color: #666666;" width="100%"><div><div><div align="none" class="ng-block-td" style="font-size: 16px; font-family: Helvetica; line-height: 1.6; font-weight: normal; padding-top: 8px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; text-align: none; color: #666666;"><p><strong> <a href="https://make.wordpress.org/core/handbook/references/keeping-up-with-gutenberg-index/" rel="noreferrer noopener" target="_blank">&#8220;Keeping up with Gutenberg &#8211; Index 2026&#8221;</a> </strong><br />A chronological list of the WordPress Make Blog posts from various teams involved in Gutenberg development: Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. </p></div></div></div></div>\n\n<div class="ng-block-daa7dad8ac2c4c4d wp-block-newsletterglue-text ng-block" style="color: #666666;" width="100%"><div><div><div align="none" class="ng-block-td" style="font-size: 16px; font-family: Helvetica; line-height: 1.6; font-weight: normal; padding-top: 8px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; text-align: none; color: #666666;"><p>The previous years are also available: <br /><strong><strong><a href="https://make.wordpress.org/core/handbook/references/keeping-up-with-gutenberg-index/keeping-up-with-gutenberg-index-2020/">2020</a> | <a href="https://make.wordpress.org/core/handbook/references/keeping-up-with-gutenberg-index/keeping-up-with-gutenberg-index-2021/">2021</a></strong> | <strong><a href="https://make.wordpress.org/core/handbook/references/keeping-up-with-gutenberg-index/keeping-up-with-gutenberg-index-2022/">2022</a></strong></strong> | <strong><a href="https://make.wordpress.org/core/handbook/references/keeping-up-with-gutenberg-index/gutenberg-index-2023">2023</a></strong> | <a href="https://make.wordpress.org/core/handbook/references/keeping-up-with-gutenberg-index/gutenberg-index-2024/"><strong>2024</strong></a></p></div></div></div></div></div><div class="ng-block-hs ng-block-hs-2" height="0" style="width: 0px;"></div></div><div><div class="ng-block-vs ng-block-vs-2" colspan="3" height="0" style="height: 0px;"></div></div></div></div>\n\n\n<h2 class="wp-block-heading" id="3-building-themes-for-fse-and-word-press">Building Blocks and Tools for the Block editor.</h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Ryan Welcher</strong> released v. 1.0.3 of his VSCode extension <strong><a href="https://marketplace.visualstudio.com/items?itemName=ryanwelcher.wordpress-interactivity-api-helper">WordPress Interactivity API Helper</a></strong> that adds autocomplete for directive and even detects items in your store. After you install it you can invoke it by &#8220;Simply start typing <code>data-</code> in any HTML attribute position within PHP or HTML files&#8221;.  </p>\n\n\n\n<figure class="wp-block-image size-large"><img alt="Ryan Welcher''s Interactivity API VSCode extension" class="wp-image-44552" height="318" src="https://i0.wp.com/gutenbergtimes.com/wp-content/uploads/2026/02/interactivityAPI-VSCode-extension-1024x500.jpg?resize=652%2C318&#038;ssl=1" width="652" /></figure>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><strong>Ryan Welcher </strong>also released a new version of <a href="https://github.com/ryanwelcher/advanced-query-loop/releases/tag/4.4.0"><strong>Advanced Query Loop 4.4.0</strong></a> that enhances query speed and reliability. It includes transient caching for AQL instances and a new management control, along with fixes and improvements to caching. The current post ID and type are now included in the context, and the release features expanded unit tests, E2E tests via Playground, and static linting for both PHP and JavaScript.</p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><strong>JuanMa Garrido</strong> walks you through <a href="https://developer.wordpress.org/news/2026/02/a-better-way-to-test-html-in-wordpress-with-assertequalhtml/"><strong>the new <code>assertEqualHTML()</code> assertion introduced in WordPress 6.9</strong></a>, available on <code>WP_UnitTestCase</code>. If fragile PHPUnit tests that break over attribute ordering or style whitespace are your nemesis, this is your fix. It compares HTML semantically — not literally — so your tests only fail when markup is genuinely different. Covers block render callbacks, HTML API transformations, Interactivity API directives, and tips for migrating away from <code>assertSame()</code>. </p>\n\n\n\n<h2 class="wp-block-heading" id="ai-and-wordpress">AI and WordPress </h2>\n\n\n\n<p class="wp-block-paragraph">In his post on The Repository, <strong><a href="https://www.therepository.email/wordpress-faces-an-event-horizon-not-a-sunset">WordPress Faces an Event Horizon, Not a Sunset</a></strong>, <strong>Matt Cromwell</strong>, founder of Roots &amp; Fruits,  pushes back on the &#8220;WordPress is dying&#8221; narrative, reframing what looks like decline as an event horizon — a boundary where old rules break and new, denser ones form. AI, he argues, actually favors WordPress&#8217;s open, structured architecture. Flat plugin sales signal market maturity, not collapse. Educational pipelines are creating new builders. The real question isn&#8217;t whether WordPress survives, but whether its community will design for the physics ahead.</p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph">In this <a href="https://www.youtube.com/watch?v=gD-KgrQ_E_w"><strong>WordPress AI experiments roundup</strong></a>, <strong>Jonathan Bossenger</strong> dives into community-submitted projects, starting with the WP AI Client Mistral provider, where he clones the repo, gets the AI SDK running, and generates a &#8220;WordPress haiku&#8221; post — though the model returns Markdown rather than block markup. He then tests a Claude-to-WordPress MCP integration plugin, successfully publishing a post directly from Claude, uses MCP Tracker to monitor requests, and briefly explores Ability Scout, which surfaces potential abilities from code.</p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><strong>Rich Tabor</strong> walks you through <a href="https://richtabor.com/wordpress-ai-client" id="https://richtabor.com/wordpress-ai-client" type="link"><strong>the new WP AI Client landing in WordPress 7.0</strong></a> — a provider-agnostic layer for calling Anthropic, Google, OpenAI, and other AI models from both PHP and JavaScript, without plugins shipping their own API wrappers or credential pages. Configure once, use everywhere. His companion <a href="https://github.com/richtabor/wp-ai-content-kit"><em>WP AI Content Kit</em></a> demonstrates auto-generating alt text and post excerpts using structured JSON responses. WordPress 7.0 is due April 9, coinciding with WordCamp Asia. </p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><strong>Glen Davies </strong>at Automattic introduces <a href="https://wordpress.com/blog/2026/02/13/new-plugin-and-skills-for-claude-cowork/"><strong>new Skills and a Claude Cowork plugin</strong></a> that turns a conversation with Claude into a fully built block theme, deployed locally via WordPress Studio — no technical skills required. Describe your site, pick from design options, and Claude builds it. Setup takes about ten minutes and currently requires macOS. These tools are early and evolving fast, but the team wanted to ship them now rather than wait.</p>\n\n\n<div class="ng-block-b8faacd6a2c4fd90 wp-block-newsletterglue-container ng-block" style="color: #666666;" width="100%"><div><div><div class="ng-block-vs ng-block-vs-1" colspan="3" height="0" style="height: 0px;"></div></div><div><div class="ng-block-hs ng-block-hs-1" height="0" style="width: 0px;"></div><div align="none" class="ng-block-td" style="font-size: 16px; font-family: Helvetica; line-height: 1.6; font-weight: normal; padding-top: 20px; padding-bottom: 20px; padding-left: 0px; padding-right: 0px; text-align: none; color: #666666; background-color: #f8f8f8; border-radius: 8px;"><div class="ng-block-d905243a44002b84 wp-block-newsletterglue-text ng-block" style="color: #666666;" width="100%"><div><div><div align="none" class="ng-block-td" style="font-size: 16px; font-family: Helvetica; line-height: 1.6; font-weight: normal; padding-top: 8px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; text-align: none; color: #666666;"><p><strong><a href="https://gutenbergtimes.com/need-a-zip-from-master/">Need a plugin .zip from Gutenberg&#8217;s master branch?</a></strong><br />Gutenberg Times provides daily build for testing and review.</p></div></div></div></div>\n\n<div class="ng-block-836273af3289df23 wp-block-newsletterglue-image ng-block size-full is-resized" width="100%"><div><div><div align="center" class="ng-block-td" style="padding-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px;"><a href="https://playground.wordpress.net/?blueprint-url=https://gutenbergtimes.com/wp-content/uploads/2020/11/playnightly.json"><img alt="" class="wp-image-42874 ng-image" height="45" src="https://i0.wp.com/gutenbergtimes.com/wp-content/uploads/2024/02/Screenshot-2025-11-15-at-12.06.44.png?resize=196%2C45&#038;ssl=1" style="border-style: none; border-color: transparent;" width="196" /></a></div></div></div></div>\n\n<div class="ng-block-73d17e217b44e481 wp-block-newsletterglue-text ng-block" style="color: #666666;" width="100%"><div><div><div align="none" class="ng-block-td" style="font-size: 16px; font-family: Helvetica; line-height: 1.6; font-weight: normal; padding-top: 8px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; text-align: none; color: #666666;"><p>Now also available via <a href="https://playground.wordpress.net/?blueprint-url=https://gutenbergtimes.com/wp-content/uploads/2020/11/playnightly.json">WordPress Playground</a>. There is no need for a test site locally or on a server. Have you been using it? <a href="mailto:pauli@gutenbergtimes.com">Email me </a>with your experience.</p></div></div></div></div></div><div class="ng-block-hs ng-block-hs-2" height="0" style="width: 0px;"></div></div><div><div class="ng-block-vs ng-block-vs-2" colspan="3" height="0" style="height: 0px;"></div></div></div></div>\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="has-text-align-center has-small-font-size wp-block-paragraph"><em>Questions? Suggestions? Ideas? </em><br /><em>Don&#8217;t hesitate to send <a href="mailto:pauli@gutenbergtimes.com">them via email</a> or</em><br /><em> send me a message on WordPress Slack or Twitter @bph</em>.</p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity" />\n\n\n\n<p class="has-text-align-center has-small-font-size wp-block-paragraph">For questions to be answered on the <a href="http://gutenbergtimes.com/podcast">Gutenberg Changelog</a>, <br />send them to <a href="mailto:changelog@gutenbergtimes.com">changelog@gutenbergtimes.com</a></p>\n\n\n<div class="ng-block-2b3586aefc1ffd8a wp-block-newsletterglue-separator ng-block" style="color: #666666;" width="100%"><div><div><div align="center" class="ng-block-td" style="padding-top: 20px; padding-bottom: 20px; padding-left: 20px; padding-right: 20px; color: #666666;"><hr style="background-color: transparent; color: transparent; margin: 0; border: 0; border-top: 1px solid #666666; width: 560px; height: 0;" /></div></div></div></div>\n\n<div class="wp-block-newsletterglue-showhide ng-block" width="100%"></div>\n\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sat, 28 Feb 2026 12:53:22 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:18:"Birgit Pauli-Haack";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:42;a:6:{s:4:"data";s:21:"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:68:"Gutenberg Times: 14 ways to add Custom CSS in WordPress Block Editor";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://gutenbergtimes.com/?p=44344";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:79:"https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:100541:"<p class="wp-block-paragraph">With the new Custom CSS on a block and post/page level, I was wondering if I would know where to look if something needs to be changed that was modified by a Custom CSS setting. Turns out there are 14 different ways to skin WordPress. I am a fan of keeping one source of truth, but it might not always be possible to keep it in theme.json. So I also wanted to figure out what decisions making process goes into selecting a method in the first place.</p>\n\n\n\n<p class="wp-block-paragraph">Below is a comprehensive reference for users, site builders, designers and developers covering all methods from no-code to full theme development.</p>\n\n\n\n<p class="wp-block-paragraph">These methods only apply to Block themes, though. Classic theme methods (like the Customizer&#8217;s Additional CSS panel etc.) are excluded.</p>\n\n\n\n<p class="has-light-background-background-color has-background wp-block-paragraph">Huge Thank you to <em><strong>Rahmat Gumilar</strong>, who published <a href="https://rahmatgumilar.net/articles/14-cara-tambah-custom-css-wordpress-block-editor/"><strong>a translated version for Indonesian</strong></a> designers, and developers</em>. </p>\n\n\n\n<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">\n<p class="wp-block-paragraph"><strong>Table of contents</strong></p>\n\n\n\n<nav class="wp-block-table-of-contents"><ul><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#the-specificity-cascade">The specificity cascade</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#1-theme-json-structured-style-properties">1. theme.json — structured style properties</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#2-theme-json-the-css-property">2. theme.json — The css Property </a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#3-custom-css-properties-variables-via-theme-json-settings">3. Custom CSS Properties (Variables) via theme.json Settings</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#4-child-theme-s-theme-json">4. Child Theme&#8217;s theme.json</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#5-global-styles-ui">5. Global Styles UI </a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#6-additional-css">6. Additional CSS </a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#7-per-block-additional-css">7. Per-Block Additional CSS </a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#8-additional-css-class-es-on-individual-block-instances">8. Additional CSS Class(es) on individual block instances</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#9-global-style-variations-theme-level-style-presets">9. Global Style Variations (Theme-Level Style Presets)</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#10-block-style-variations-json-php-and-javascript">10. Block Style Variations (JSON, PHP, and JavaScript)</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#11-section-styles">11. Section Styles </a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#12-block-stylesheets-via-wp-enqueue-block-style">12. Block Stylesheets via wp_enqueue_block_style()</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#13-enqueuing-stylesheets-via-wp-enqueue-style-in-php">13. Enqueuing Stylesheets via wp_enqueue_style() in PHP</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#14-the-theme-s-style-css">14. The Theme&#8217;s style.css</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#summary-table">Summary Table</a></li><li><a class="wp-block-table-of-contents__entry" href="https://gutenbergtimes.com/14-ways-to-add-custom-css-in-wordpress-block-editor/#decision-guide">Decision Guide</a></li></ul></nav>\n</div></div>\n\n\n\n<h2 class="wp-block-heading" id="the-specificity-cascade">The specificity cascade</h2>\n\n\n\n<p class="wp-block-paragraph">Before diving in, it helps to understand WordPress&#8217;s style hierarchy for block themes. Styles resolve in this order, with later layers overriding earlier ones on four levels.</p>\n\n\n\n<ul class="wp-block-list">\n<li><strong>Default </strong>mostly the styling and layouts of WordPress Core.</li>\n\n\n\n<li><strong>Block-level</strong> styling can be altered with plugins and overwrites the Default styling.</li>\n\n\n\n<li><strong>Theme-level </strong>styling is the whole suite of design tools controlled by the active Theme. It overwrites Default and block-level styles and layouts for instance (e.g. template and template parts).</li>\n\n\n\n<li><strong>User-level</strong> styling uses the Design tools within the Site Editor to modify styles and layouts. These changes are stored in the database and overwrite the theme-level styling.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph">Within each layer, more specific targets (per block, per element) override more general ones. This cascade is central to how all the methods below interact.</p>\n\n\n\n<h2 class="wp-block-heading" id="1-theme-json-structured-style-properties">1. theme.json — structured style properties</h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Theme developers, child theme authors<br /><strong>Where:</strong> <code>theme.json</code> (root of your theme) → <code>styles</code> section</p>\n\n\n\n<p class="wp-block-paragraph">This is the <strong>recommended first choice</strong> for styling in block themes. Rather than writing raw CSS, you define styles as structured JSON properties — colors, typography, spacing, borders, shadows, and more — at the global, element, or per-block level.</p>\n\n\n\n<p class="wp-block-paragraph">You can use hardcoded values directly in <code>styles</code>, and they work just fine:</p>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>JSON</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">{\n  "version": 3,\n  "styles": {\n    "color": {\n      "background": "#ffffff",\n      "text": "#333333"\n    },\n    "elements": {\n      "link": {\n        "color": { "text": "#0073aa" }\n      }\n    },\n    "blocks": {\n      "core/button": {\n        "color": { "background": "#0073aa" }\n      }\n    }\n  }\n}</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">version</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #D7827E;">3</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">styles</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">background</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#ffffff&quot;</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">text</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#333333&quot;</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">elements</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">link</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">text</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#0073aa&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">blocks</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">core/button</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">background</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#0073aa&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>\n\n\n\n<p class="wp-block-paragraph">As your theme grows, hardcoded values become harder to manage. If you decide to change your primary color, you&#8217;d need to find and update every instance of <code>#0073aa</code> across styles. A more maintainable approach is to define your values as presets in the <code>settings</code> part of theme.json and then reference them in <code>styles</code> using the <code>var:preset||</code> syntax. WordPress converts these presets into CSS custom properties (e.g., <code>--wp--preset--color--primary</code>), keeping everything connected:</p>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>JSON</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">{\n  "version": 3,\n  "settings": {\n    "color": {\n      "palette": &#91;\n        { "slug": "primary", "color": "#0073aa", "name": "Primary" },\n        { "slug": "base", "color": "#ffffff", "name": "Base" },\n        { "slug": "contrast", "color": "#333333", "name": "Contrast" }\n      &#93;\n    },\n    "typography": {\n      "fontSizes": &#91;\n        { "slug": "medium", "size": "18px", "name": "Medium" }\n      &#93;\n    }\n  },\n  "styles": {\n    "color": {\n      "background": "var:preset|color|base",\n      "text": "var:preset|color|contrast"\n    },\n    "typography": {\n      "fontSize": "var:preset|font-size|medium",\n      "lineHeight": "1.6"\n    },\n    "elements": {\n      "link": {\n        "color": { "text": "var:preset|color|primary" }\n      },\n      "heading": {\n        "typography": { "fontWeight": "700" }\n      }\n    },\n    "blocks": {\n      "core/button": {\n        "border": { "radius": "4px" },\n        "color": { "background": "var:preset|color|primary" }\n      },\n      "core/quote": {\n        "typography": { "fontStyle": "italic" }\n      }\n    }\n  }\n}</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">version</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #D7827E;">3</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">settings</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">palette</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">&#91;</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">slug</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;primary&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#0073aa&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">name</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;Primary&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">slug</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;base&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#ffffff&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">name</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;Base&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">slug</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;contrast&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#333333&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">name</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;Contrast&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&#93;</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">typography</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">fontSizes</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">&#91;</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">slug</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;medium&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">size</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;18px&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">name</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;Medium&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&#93;</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">styles</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">background</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;var:preset|color|base&quot;</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">text</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;var:preset|color|contrast&quot;</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">typography</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">fontSize</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;var:preset|font-size|medium&quot;</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">lineHeight</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;1.6&quot;</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">elements</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">link</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">text</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;var:preset|color|primary&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">heading</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">typography</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">fontWeight</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;700&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">blocks</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">core/button</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">border</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">radius</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;4px&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">background</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;var:preset|color|primary&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">core/quote</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">typography</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">fontStyle</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;italic&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>\n\n\n\n<p class="wp-block-paragraph">This token-based approach pays off in a few ways. When a user changes &#8220;Primary&#8221; in the Global Styles UI, every element referencing that token updates automatically. It keeps your theme internally consistent — no risk of one button being <code>#0073aa</code> while another drifted to <code>#0074ab</code>. And it makes global style variations far simpler to create: a dark mode variation only needs to redefine the palette, not hunt down every color reference in styles. Either approach is valid, but tokens tend to save time as a theme matures.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li><strong>Automatic integration with the Global Styles UI:</strong> Users can view and override your styles in the Site Editor without writing CSS.</li>\n\n\n\n<li><strong>WordPress manages specificity for you:</strong> the &#8220;base → theme → user&#8221; cascade works correctly.</li>\n\n\n\n<li><strong>Generates CSS custom properties automatically</strong> (e.g. <code>--wp--preset--color--primary</code>).</li>\n\n\n\n<li><strong>Visual parity</strong> between editor and front end.</li>\n\n\n\n<li><strong>Machine-readable: </strong>other tools and plugins can consume and extend these styles.</li>\n\n\n\n<li><strong>Reduces the amount of CSS</strong> enqueued overall.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Can only express what <a href="https://schemas.wp.org/trunk/theme.json.">theme.json&#8217;s schema</a> supports (growing with each release, but not yet comprehensive).</li>\n\n\n\n<li>Pseudo-classes like <code>:hover</code>, <code>:focus</code>, <code>:active</code>, and <code>:visited</code> are supported for elements such as links and buttons (e.g., <code>"elements": { "link": { ":hover": { "color": { "text": "var:preset|color|contrast" } } } }</code>), but pseudo-elements like <code>::before</code> and <code>::after</code>, media queries, and more complex selectors are not available in the structured properties — use the <code>css</code> property (#2) or block stylesheets (#3) for those.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Documentation</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://developer.wordpress.org/themes/global-settings-and-styles/">Global Settings and Styles (theme.json)</a></li>\n\n\n\n<li><a href="https://developer.wordpress.org/news/2024/10/mastering-theme-json-you-might-not-need-css/">Mastering theme.json: You might not need CSS</a></li>\n\n\n\n<li><a href="https://developer.wordpress.org/themes/global-settings-and-styles/styles/using-presets/">Using Presets</a></li>\n\n\n\n<li><a href="https://developer.wordpress.org/themes/global-settings-and-styles/styles/styles-reference/">Styles Reference</a></li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="2-theme-json-the-css-property">2. theme.json — The <code>css</code> Property </h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Theme developers<br /><strong>Where:</strong> <code>theme.json</code> → <code>styles.css</code> (global) or <code>styles.blocks.[blockname].css</code> (per-block)</p>\n\n\n\n<p class="wp-block-paragraph">When theme.json&#8217;s structured properties aren&#8217;t enough, you can drop to raw CSS strings within theme.json itself. Available since WordPress 6.2.</p>\n\n\n\n<h3 class="wp-block-heading" id="global-custom-css">Global custom CSS</h3>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>JSON</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">{\n  "version": 3,\n  "styles": {\n    "css": ".my-custom-class { opacity: 0.8; } body { scroll-behavior: smooth; }"\n  }\n}</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">version</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #D7827E;">3</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">styles</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">css</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;.my-custom-class { opacity: 0.8; } body { scroll-behavior: smooth; }&quot;</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>\n\n\n\n<h3 class="wp-block-heading" id="per-block-custom-css">Per-block custom CSS</h3>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>JSON</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">{\n  "version": 3,\n    "styles": {    \n       "blocks": {\n          "core/image": {\n              "css": "&amp; img { border-radius: 8px; transition: transform 0.3s; } &amp;:hover img { transform: scale(1.02); }"\n              },     \n          "core/post-title": {\n              "css": "letter-spacing: 1px;"\n             },\n         "core/paragraph": {       \n              "css": "&amp;.has-background { padding: .5rem .8rem; }"\n           }\n        }\n    }\n}</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">version</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #D7827E;">3</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">styles</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span><span style="color: #575279;">    </span></span>\n<span class="line"><span style="color: #575279;">       </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">blocks</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">          </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">core/image</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">              </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">css</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;&amp; img { border-radius: 8px; transition: transform 0.3s; } &amp;:hover img { transform: scale(1.02); }&quot;</span></span>\n<span class="line"><span style="color: #575279;">              </span><span style="color: #797593;">},</span><span style="color: #575279;">     </span></span>\n<span class="line"><span style="color: #575279;">          </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">core/post-title</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">              </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">css</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;letter-spacing: 1px;&quot;</span></span>\n<span class="line"><span style="color: #575279;">             </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">         </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">core/paragraph</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span><span style="color: #575279;">       </span></span>\n<span class="line"><span style="color: #575279;">              </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">css</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;&amp;.has-background { padding: .5rem .8rem; }&quot;</span></span>\n<span class="line"><span style="color: #575279;">           </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>\n\n\n\n<p class="wp-block-paragraph">WordPress auto-generates the selector for per-block CSS—you don&#8217;t need to know the block&#8217;s class name. The <code>&amp;</code> selector is supported for targeting nested elements and pseudo-selectors (<code>:before</code>, <code>:after</code>, <code>:hover</code>, <code>:not()</code>, etc.).</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Integrates with the Styles interface in the Site Editor — users can see and modify your per-block CSS under Styles → Blocks → [Block] → Advanced → Additional CSS.</li>\n\n\n\n<li>WordPress handles the selector, so you avoid specificity conflicts.</li>\n\n\n\n<li>CSS from elements and variations is also supported (from WordPress 6.6).</li>\n\n\n\n<li>Provides a bridge between structured theme.json properties and full CSS freedom.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>JSON doesn&#8217;t support line breaks, so everything must be on one line — cumbersome for large blocks of CSS.</li>\n\n\n\n<li>No syntax highlighting in JSON files.</li>\n\n\n\n<li>Best for small, targeted additions — for anything extensive, use block stylesheets instead.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Documentation</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://make.wordpress.org/core/2023/03/06/custom-css-for-global-styles-and-per-block/">Custom CSS for global styles and per block</a></li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="3-custom-css-properties-variables-via-theme-json-settings">3. Custom CSS Properties (Variables) via theme.json Settings</h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Theme developers<br /><strong>Where:</strong> <code>theme.json</code> → <code>settings.custom</code></p>\n\n\n\n<p class="wp-block-paragraph">Create your own CSS custom properties that can be used anywhere in your CSS—in stylesheets, block stylesheets, or even within the <code>css</code> property.</p>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>JSON</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">{\n  "version": 3,\n  "settings": {\n    "custom": {\n      "contentMaxWidth": "800px",\n      "spacing": {\n        "gutter": "2rem"\n      },\n      "transition": "all 0.3s ease"\n    }\n  }\n}</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">version</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #D7827E;">3</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">settings</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">custom</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">contentMaxWidth</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;800px&quot;</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">spacing</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">gutter</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;2rem&quot;</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">transition</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;all 0.3s ease&quot;</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>\n\n\n\n<p class="wp-block-paragraph">This generates:</p>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>JSON</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">body {\n  --wp--custom--content-max-width: 800px;\n  --wp--custom--spacing--gutter: 2rem;\n  --wp--custom--transition: all 0.3s ease;\n}</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #575279;">body </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #B4637A;">--wp--custom--content-max-width</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #D7827E;">800</span><span style="color: #B4637A;">px;</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #B4637A;">--wp--custom--spacing--gutter:</span><span style="color: #575279;"> </span><span style="color: #D7827E;">2</span><span style="color: #B4637A;">rem;</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #B4637A;">--wp--custom--transition:</span><span style="color: #575279;"> </span><span style="color: #B4637A;">all</span><span style="color: #575279;"> </span><span style="color: #D7827E;">0.3</span><span style="color: #B4637A;">s</span><span style="color: #575279;"> </span><span style="color: #B4637A;">ease;</span></span>\n<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Centralized design tokens accessible from any CSS source.</li>\n\n\n\n<li>Automatic generation of CSS custom properties following WordPress naming conventions.</li>\n\n\n\n<li>Changes propagate everywhere the variable is used.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Only generates the variables — you still need to reference them in your CSS.</li>\n\n\n\n<li>Not directly editable by users in the Site Editor UI (unlike presets for colors or font sizes).</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Documentation</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://developer.wordpress.org/news/2023/08/adding-and-using-custom-settings-in-theme-json/">Adding and using custom settings in theme.json</a></li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="4-child-theme-s-theme-json">4. Child Theme&#8217;s <code>theme.json</code></h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Developers customizing a parent theme<br /><strong>Where:</strong> <code>theme.json</code> in the child theme root</p>\n\n\n\n<p class="wp-block-paragraph">Override or extend the parent theme&#8217;s <code>theme.json</code> with a child theme. WordPress merges both files automatically.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>All changes survive parent theme updates.</li>\n\n\n\n<li>Full access to every theme.json capability — structured properties, css property, presets, and settings.</li>\n\n\n\n<li>Combined with block stylesheets and style.css, it provides a complete override system.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Requires maintaining a child theme.</li>\n\n\n\n<li>Merging behavior can be tricky: child values override parent values at the same path but won&#8217;t remove parent values at other paths.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Documentation</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Theme Handbook: <a href="https://developer.wordpress.org/themes/advanced-topics/child-themes/">Child Themes</a></li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="5-global-styles-ui">5. Global Styles UI </h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Site owners, content editors (no code required)<br /><strong>Where:</strong> <strong>Appearance → Editor → Styles</strong></p>\n\n\n\n<p class="wp-block-paragraph">The visual interface for customizing your site&#8217;s appearance. Users can adjust typography, colors, spacing, and layout for the entire site, individual elements, or specific block types — all without writing any code.</p>\n\n\n\n<figure class="wp-block-image size-full"><img alt="" class="wp-image-44500" height="569" src="https://i0.wp.com/gutenbergtimes.com/wp-content/uploads/2026/02/Screenshot-2026-02-24-at-18.40.45.png?resize=652%2C569&#038;ssl=1" width="652" /></figure>\n\n\n\n<p class="wp-block-paragraph">The <strong>Style Book</strong> helps you keep the overall context for your styles and you and double-check on how blocks behave when Styles change. </p>\n\n\n\n<figure class="wp-block-image size-large"><img alt="" class="wp-image-44499" height="334" src="https://i0.wp.com/gutenbergtimes.com/wp-content/uploads/2026/02/Screenshot-2026-02-24-at-18.38.39.png?resize=652%2C334&#038;ssl=1" width="652" /></figure>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>No code required — fully visual.</li>\n\n\n\n<li>Highest specificity: user styles override theme defaults.</li>\n\n\n\n<li>Changes are stored in the database (<code>wp_global_styles</code> post type), separate from theme files, so they survive theme updates.</li>\n\n\n\n<li>Supports global style variations — users can switch between whole-site style presets.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Limited to what the UI controls expose (which grows with each WordPress release).</li>\n\n\n\n<li>For anything the UI can&#8217;t handle, users fall back to the Additional CSS options below.</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="6-additional-css">6. Additional CSS </h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Site owners with CSS knowledge<br /><strong>Where:</strong> Appearance → Editor → Styles → three-dot menu (⋮) → Additional CSS</p>\n\n\n\n<p class="wp-block-paragraph">This is the block theme replacement for the classic Customizer&#8217;s Additional CSS panel. A free-form CSS editor for site-wide custom styles.</p>\n\n\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Free-form CSS handles any valid CSS.</li>\n\n\n\n<li>Stored in the database as part of Global Styles (not in theme files), so it&#8217;s theme-specific but survives code deployments.</li>\n\n\n\n<li>Preview changes before saving.</li>\n\n\n\n<li>Revision history (last 25 versions).</li>\n\n\n\n<li>Higher specificity than theme styles.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Not scoped to blocks — loads globally.</li>\n\n\n\n<li>No syntax highlighting or code formatting.</li>\n\n\n\n<li>Intended as a last resort for styles that can&#8217;t be achieved through theme.json or the visual Styles interface.</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="7-per-block-additional-css">7. Per-Block Additional CSS </h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Site owners with CSS knowledge<br /><strong>Where:</strong> Appearance → Editor → Styles → Blocks → select a block → scroll to Advanced → Additional CSS</p>\n\n\n\n<p class="wp-block-paragraph">Target CSS to a specific block type site-wide. WordPress auto-generates the selector — you just write the CSS properties.</p>\n\n\n\n<figure class="wp-block-video wp-block-embed is-type-video is-provider-videopress"><div class="wp-block-embed__wrapper">\n\n</div></figure>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>CSS</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">/* Example: added to Styles → Blocks → Quote → Additional CSS */\nfont-style: italic;\nborder-left: 4px solid currentColor;\npadding-left: 1.5em;</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #797593; font-style: italic;">/*</span><span style="color: #9893A5; font-style: italic;"> Example: added to Styles → Blocks → Quote → Additional CSS </span><span style="color: #797593; font-style: italic;">*/</span></span>\n<span class="line"><span style="color: #56949F;">font-style</span><span style="color: #575279;">: italic;</span></span>\n<span class="line"><span style="color: #56949F;">border-left</span><span style="color: #575279;">: 4px solid currentColor;</span></span>\n<span class="line"><span style="color: #56949F;">padding-left</span><span style="color: #575279;">: 1.5em;</span></span></code></pre></div>\n\n\n\n<p class="wp-block-paragraph">The <code>&amp;</code> selector works here for nested elements and pseudo-selectors.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Scoped to a specific block type — only loads when that block is present on a page.</li>\n\n\n\n<li>No need to know CSS selectors — WordPress handles them.</li>\n\n\n\n<li>User-level styles (highest priority in the cascade).</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Media queries may not work reliably (as of 2025). Use CSS functions like <code>clamp()</code>, <code>min()</code>, and <code>max()</code> for responsive behavior, or put responsive styles in theme-level CSS.</li>\n\n\n\n<li>Small text area with no code formatting.</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="8-additional-css-class-es-on-individual-block-instances">8. Additional CSS Class(es) on individual block instances</h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Content editors with CSS knowledge<br /><strong>Where:</strong> Select any block in the editor → Settings sidebar → Advanced → Additional CSS Class(es)</p>\n\n\n\n<p class="wp-block-paragraph">Add custom class names to a specific block instance. The CSS itself must be defined elsewhere (style.css, block stylesheets, Additional CSS, etc.). As a user the global Additional CSS is probably the most practical place. </p>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Precision targeting of individual block instances rather than all blocks of a type.</li>\n\n\n\n<li>Perfect for one-off styling: a highlighted paragraph, a special call to action, etc.</li>\n\n\n\n<li>Multiple classes can be added, separated by spaces.</li>\n\n\n\n<li>Works with any CSS source — just define the class styles somewhere.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Only adds class names — you still need to write the CSS elsewhere.</li>\n\n\n\n<li>Per-instance, which means it doesn&#8217;t scale well for repeated patterns (use block style variations for those).</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="9-global-style-variations-theme-level-style-presets">9. Global Style Variations (Theme-Level Style Presets)</h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Theme developers<br /><strong>Where:</strong> JSON files in the theme&#8217;s <code>/styles</code> directory (at the top level, not in a <code>/blocks</code> subfolder)</p>\n\n\n\n<p class="wp-block-paragraph">Provide entire alternative site-wide style schemes. Each variation is a JSON partial that can override settings and styles from the main theme.json. </p>\n\n\n\n<p class="wp-block-paragraph">Since WordPress 6.6, style variations are further classified into three subtypes based on their content. </p>\n\n\n\n<p class="wp-block-paragraph">A variation file that defines only <code>settings.color</code> or <code>styles.color</code> is automatically recognized as a <strong>color variation</strong>, appearing under <strong>Styles → Colors → Palette. </strong></p>\n\n\n\n<p class="wp-block-paragraph">One that defines only <code>settings.typography</code> or <code>styles.typography</code> becomes a <strong>typography variation</strong>, appearing under <strong>Styles → Typography → Presets. </strong></p>\n\n\n\n<p class="wp-block-paragraph">Files that touch other properties remain full <strong>theme style variations</strong>. </p>\n\n\n\n<p class="wp-block-paragraph">Color and typography variations can be mixed and matched with each other and with theme variations. </p>\n\n\n\n<p class="wp-block-paragraph">To keep the <code>/styles</code> folder organized, it&#8217;s recommended to use subfolders (e.g., <code>/styles/color</code>, <code>/styles/typography</code>, <code>/styles/global</code>). </p>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>JSON</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">// /styles/dark-mode.json\n{\n  "$schema": "https://schemas.wp.org/trunk/theme.json",\n  "version": 3,\n  "title": "Dark Mode",\n  "settings": {\n    "color": {\n      "palette": &#91;\n        { "slug": "base", "color": "#1a1a2e", "name": "Base" },\n        { "slug": "contrast", "color": "#e0e0e0", "name": "Contrast" }\n      &#93;\n    }\n  },\n  "styles": {\n    "color": {\n      "background": "#1a1a2e",\n      "text": "#e0e0e0"\n    }\n  }\n}</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #797593; font-style: italic;">//</span><span style="color: #9893A5; font-style: italic;"> /styles/dark-mode.json</span></span>\n<span class="line"><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">$schema</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;https://schemas.wp.org/trunk/theme.json&quot;</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">version</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #D7827E;">3</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">title</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;Dark Mode&quot;</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">settings</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">palette</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">&#91;</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">slug</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;base&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#1a1a2e&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">name</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;Base&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">{</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">slug</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;contrast&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#e0e0e0&quot;</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">name</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;Contrast&quot;</span><span style="color: #575279;"> </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&#93;</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">},</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">styles</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">color</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">background</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#1a1a2e&quot;</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&quot;</span><span style="color: #56949F;">text</span><span style="color: #797593;">&quot;</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">&quot;#e0e0e0&quot;</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">}</span></span>\n<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Users can switch between entire style schemes (light/dark, color themes, typographic variations) from the Styles panel.</li>\n\n\n\n<li>Makes one theme feel like many — more versatile without requiring separate themes.</li>\n\n\n\n<li>Fully declarative (no PHP).</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Only affects settings and styles — not templates or patterns.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Documentation</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://developer.wordpress.org/themes/global-settings-and-styles/style-variations/">Style Variations</a></li>\n\n\n\n<li><a href="https://developer.wordpress.org/news/2024/07/mixing-and-matching-styles-colors-and-typography-in-wordpress-6-6/">Mixing and matching styles, colors, and typography in WordPress 6.6</a></li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="10-block-style-variations-json-php-and-javascript">10. Block Style Variations (JSON, PHP, and JavaScript)</h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Theme developers, plugin developers<br /><strong>Where:</strong> JSON files in <code>/styles</code>, PHP via <code>register_block_style()</code>, or JavaScript via <code>wp.blocks.registerBlockStyle()</code></p>\n\n\n\n<p class="wp-block-paragraph">Block style variations give content creators pre-made styling options in the Styles panel — like &#8220;Rounded&#8221; or &#8220;Outline&#8221; on core blocks. You can register them via JSON files in <code>/styles</code> (WordPress 6.6+, no PHP needed), PHP with <code>register_block_style()</code>, or JavaScript. The JSON-based methods integrate with Global Styles so users can customize them in the Site Editor; <code>inline_style</code>, <code>style_handle</code>, and JavaScript methods do not.</p>\n\n\n\n<p class="wp-block-paragraph">For a thorough walkthrough of all six registration methods — with code examples, a companion theme and plugin on GitHub, and a comparison table showing which methods support Global Styles — see the comprehensive guide <strong><a href="https://wordpress.com/blog/2025/05/07/custom-block-styles/">Mastering Custom Block Styles in WordPress: 6 Methods for Theme and Plugin Developers</a>.</strong></p>\n\n\n\n<h2 class="wp-block-heading" id="11-section-styles">11. Section Styles </h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Theme developers<br /><strong>Where:</strong> JSON files in <code>/styles</code> directory, targeting mostly group or column blocks. </p>\n\n\n\n<p class="wp-block-paragraph">Section styles are more of a convention than a separate feature. They are essentially Block Style Variations. The difference is naming the variation slug: <code>style-1</code>, <code>style-2</code>, etc. so that they can be reused across themes.</p>\n\n\n\n<p class="wp-block-paragraph">Since WordPress 6.6, block style variations can style nested inner blocks and elements, enabling &#8220;section styling&#8221; — where a Group block&#8217;s style variation changes the appearance of all blocks within it.</p>\n\n\n\n<p class="wp-block-paragraph">The Twenty Twenty Five theme showcases this convention quite nicely. </p>\n\n\n\n		<figure class="wp-block-jetpack-videopress jetpack-videopress-player">\n			<div class="jetpack-videopress-player__wrapper"> </div>\n			\n			\n		</figure>\n		\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Apply coordinated styles to entire sections (background, text color, button colors, link colors) with a single click.</li>\n\n\n\n<li>Users select the section style in the block&#8217;s Styles panel.</li>\n\n\n\n<li>Powerful for creating consistent design sections (hero areas, dark sections, testimonials).</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Easy to overwhelm users with too many section style options — restraint is needed.</li>\n\n\n\n<li>Requires careful design token architecture (using base/contrast/primary/secondary color naming).</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Documentation</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://make.wordpress.org/core/2024/06/24/section-styles/">Section Styles</a> (WordPress 6.6)</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="12-block-stylesheets-via-wp-enqueue-block-style">12. Block Stylesheets via <code>wp_enqueue_block_style()</code></h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Theme developers<br /><strong>Where:</strong> Separate <code>.css</code> files in your theme (e.g., <code>/assets/blocks/core-image.css</code>), registered in <code>functions.php</code></p>\n\n\n\n<p class="wp-block-paragraph">This is the recommended approach when you have more CSS than what&#8217;s comfortable in theme.json&#8217;s <code>css</code> property.</p>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>JSON</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">/* /assets/blocks/core-image.css */\n.wp-block-image img {\n    padding: 1rem;\n    background: linear-gradient(-60deg, #ff5858, #f09819);\n}</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #797593; font-style: italic;">/*</span><span style="color: #9893A5; font-style: italic;"> /assets/blocks/core-image.css </span><span style="color: #797593; font-style: italic;">*/</span></span>\n<span class="line"><span style="color: #575279;">.wp-block-image img </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #B4637A;">padding</span><span style="color: #797593;">:</span><span style="color: #575279;"> </span><span style="color: #D7827E;">1</span><span style="color: #B4637A;">rem;</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #B4637A;">background:</span><span style="color: #575279;"> </span><span style="color: #B4637A;">linear-gradient(</span><span style="color: #D7827E;">-60</span><span style="color: #B4637A;">deg</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #B4637A;">#ff5858,</span><span style="color: #575279;"> </span><span style="color: #B4637A;">#f09819);</span></span>\n<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>JSON</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">// functions.php\nadd_action( ''init'', function() {\n    wp_enqueue_block_style( ''core/image'', array(\n        ''handle'' => ''my-theme-image-styles'',\n        ''src''    => get_theme_file_uri( ''assets/blocks/core-image.css'' ),\n        ''path''   => get_theme_file_path( ''assets/blocks/core-image.css'' ),\n    ) );\n});</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #797593; font-style: italic;">//</span><span style="color: #9893A5; font-style: italic;"> functions.php</span></span>\n<span class="line"><span style="color: #575279;">add_action( ''init'', function() </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #B4637A;">wp_enqueue_block_style(</span><span style="color: #575279;"> </span><span style="color: #B4637A;">''core/image'',</span><span style="color: #575279;"> </span><span style="color: #B4637A;">array(</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #B4637A;">''handle''</span><span style="color: #575279;"> </span><span style="color: #B4637A;">=&gt;</span><span style="color: #575279;"> </span><span style="color: #B4637A;">''my-theme-image-styles'',</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #B4637A;">''src''</span><span style="color: #575279;">    </span><span style="color: #B4637A;">=&gt;</span><span style="color: #575279;"> </span><span style="color: #B4637A;">get_theme_file_uri(</span><span style="color: #575279;"> </span><span style="color: #B4637A;">''assets/blocks/core-image.css''</span><span style="color: #575279;"> </span><span style="color: #B4637A;">),</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #B4637A;">''path''</span><span style="color: #575279;">   </span><span style="color: #B4637A;">=&gt;</span><span style="color: #575279;"> </span><span style="color: #B4637A;">get_theme_file_path(</span><span style="color: #575279;"> </span><span style="color: #B4637A;">''assets/blocks/core-image.css''</span><span style="color: #575279;"> </span><span style="color: #B4637A;">),</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #B4637A;">)</span><span style="color: #575279;"> </span><span style="color: #B4637A;">);</span></span>\n<span class="line"><span style="color: #797593;">}</span><span style="color: #575279;">);</span></span></code></pre></div>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li><strong>Performance:</strong> CSS only loads when the block is actually present on the page. WordPress inlines it in the <code>&lt;head&gt;</code> section</li>\n\n\n\n<li>Full CSS syntax with syntax highlighting, multi-line formatting, and preprocessor support (Sass/SCSS).</li>\n\n\n\n<li>Clean code organization — one file per block.</li>\n\n\n\n<li>Works for any CSS, including media queries, animations, complex selectors, and pseudo-elements.</li>\n\n\n\n<li>Applies in both the editor and front end.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Requires PHP registration in functions.php.</li>\n\n\n\n<li>These styles aren&#8217;t exposed in the Global Styles UI for user editing.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Documentation</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://developer.wordpress.org/themes/features/block-stylesheets/">Block Stylesheets</a></li>\n\n\n\n<li><a href="https://developer.wordpress.org/news/2022/12/leveraging-theme-json-and-per-block-styles-for-more-performant-themes/">Leveraging theme.json and per-block styles for more performant themes</a></li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="13-enqueuing-stylesheets-via-wp-enqueue-style-in-php">13. Enqueuing Stylesheets via <code>wp_enqueue_style()</code> in PHP</h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Theme and plugin developers<br /><strong>Where:</strong> <code>functions.php</code> using the <code>wp_enqueue_scripts</code> (front end) and <code>enqueue_block_editor_assets</code> (editor) hooks</p>\n\n\n\n<p class="wp-block-paragraph">The traditional WordPress approach still works and is useful for loading third-party CSS libraries, fonts, or complex stylesheets. </p>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>PHP</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">add_action( ''wp_enqueue_scripts'', function() {\n    wp_enqueue_style(\n        ''my-theme-custom'',\n        get_theme_file_uri( ''assets/css/custom.css'' ),\n        array(),\n        ''1.0.0''\n    );\n});\n\n// For editor-only styles:\nadd_action( ''enqueue_block_editor_assets'', function() {\n    wp_enqueue_style(\n        ''my-theme-editor'',\n        get_theme_file_uri( ''assets/css/editor.css'' ),\n        array(),\n        ''1.0.0''\n    );\n});</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #D7827E;">add_action</span><span style="color: #797593;">(</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">''wp_enqueue_scripts''</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #286983;">function</span><span style="color: #797593;">()</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #D7827E;">wp_enqueue_style</span><span style="color: #797593;">(</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #EA9D34;">''my-theme-custom''</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #D7827E;">get_theme_file_uri</span><span style="color: #797593;">(</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">''assets/css/custom.css''</span><span style="color: #575279;"> </span><span style="color: #797593;">),</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #B4637A; font-style: italic;">array</span><span style="color: #797593;">(),</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #EA9D34;">''1.0.0''</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">);</span></span>\n<span class="line"><span style="color: #797593;">});</span></span>\n<span class="line"></span>\n<span class="line"><span style="color: #797593; font-style: italic;">//</span><span style="color: #9893A5; font-style: italic;"> For editor-only styles:</span></span>\n<span class="line"><span style="color: #D7827E;">add_action</span><span style="color: #797593;">(</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">''enqueue_block_editor_assets''</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #286983;">function</span><span style="color: #797593;">()</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #D7827E;">wp_enqueue_style</span><span style="color: #797593;">(</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #EA9D34;">''my-theme-editor''</span><span style="color: #797593;">,</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #D7827E;">get_theme_file_uri</span><span style="color: #797593;">(</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">''assets/css/editor.css''</span><span style="color: #575279;"> </span><span style="color: #797593;">),</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #B4637A; font-style: italic;">array</span><span style="color: #797593;">(),</span></span>\n<span class="line"><span style="color: #575279;">        </span><span style="color: #EA9D34;">''1.0.0''</span></span>\n<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">);</span></span>\n<span class="line"><span style="color: #797593;">});</span></span></code></pre></div>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Full control over loading conditions (you can conditionally enqueue based on page, template, user role, etc.).</li>\n\n\n\n<li>Familiar to all WordPress developers.</li>\n\n\n\n<li>Can load external stylesheets, Google Fonts, icon libraries, etc.</li>\n\n\n\n<li>Supports dependencies, versioning, and media attributes.</li>\n\n\n\n<li>Can target editor-only or front-end-only.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Loads on every page (unless you add conditional logic).</li>\n\n\n\n<li>No integration with the Global Styles UI.</li>\n\n\n\n<li>Doesn&#8217;t benefit from the block stylesheet system&#8217;s per-block inlining.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Documentation</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://developer.wordpress.org/block-editor/how-to-guides/enqueueing-assets-in-the-editor/#editor-scripts-and-styles">Enqueueing assets in the Editor</a></li>\n\n\n\n<li><a href="https://developer.wordpress.org/themes/core-concepts/including-assets/#editor-stylesheets" rel="noreferrer noopener" target="_blank">Editor Stylesheets</a></li>\n\n\n\n<li><a href="https://developer.wordpress.org/reference/hooks/wp_enqueue_scripts/">do_action( ‘wp_enqueue_scripts’ )</a></li>\n\n\n\n<li><a href="https://developer.wordpress.org/reference/functions/wp_enqueue_style/">wp_enqueue_style( string $handle, string $src, string[] $deps = array(), string|bool|null $ver = false, string $media )</a></li>\n</ul>\n\n\n\n<h3 class="wp-block-heading" id="what-s-the-difference-between-wp-enqueue-style-and-add-editor-style">What&#8217;s the difference between wp_enqueue_style and add_editor_style?</h3>\n\n\n\n<p class="wp-block-paragraph"><code>wp_enqueue_style()</code> is the general-purpose function for loading stylesheets — you choose where it loads by picking your hook (<code>wp_enqueue_scripts</code> for the frontend, <code>enqueue_block_editor_assets</code> for the editor). When you use it on the editor hook, the stylesheet loads into the entire editor page, including the UI chrome (sidebar, toolbar, etc.).</p>\n\n\n\n<p class="wp-block-paragraph"><code>add_editor_style()</code> is specifically designed for visual parity between the editor and the frontend. WordPress takes the stylesheet you pass it and automatically scopes every selector to <code>.editor-styles-wrapper</code>, so your styles only affect the content canvas and don&#8217;t bleed into the editor UI. In block themes it&#8217;s typically called from an <code>after_setup_theme</code> hook — this is how themes get their <code>style.css</code> to apply inside the editor.</p>\n\n\n\n<p class="wp-block-paragraph">The practical upshot: if you want your theme&#8217;s frontend styles to look the same in the editor, use <code>add_editor_style()</code>. If you need to style the editor UI itself (like a custom sidebar panel) or need fine-grained control over loading conditions, dependencies, and versioning, use <code>wp_enqueue_style()</code> on the appropriate hook.</p>\n\n\n\n<h2 class="wp-block-heading" id="14-the-theme-s-style-css">14. The Theme&#8217;s <code>style.css</code></h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Who:</strong> Theme developers<br /><strong>Where:</strong> <code>style.css</code> in the theme root</p>\n\n\n\n<p class="wp-block-paragraph">The traditional main stylesheet still works in block themes, but its role has changed significantly. It now primarily holds theme metadata (name, version, description) and is loaded globally. </p>\n\n\n\n<p class="wp-block-paragraph">In block themes it&#8217;s typically called from an <code>after_setup_theme</code> hook — this is how themes get their <code>style.css</code> to apply inside the editor.</p>\n\n\n\n<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers"><span>PHP</span><span class="code-block-pro-copy-button" style="color: #575279; display: none;" tabindex="0"><pre class="code-block-pro-copy-button-pre"><textarea class="code-block-pro-copy-button-textarea" readonly="readonly" tabindex="-1">add_action( ''after_setup_theme'', ''theme_slug_setup'' );\n\nfunction theme_slug_setup() {\n	add_editor_style( get_stylesheet_uri() );\n}</textarea></pre><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path class="with-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path class="without-check" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span><pre class="shiki rose-pine-dawn" style="background-color: #faf4ed;" tabindex="0"><code><span class="line"><span style="color: #D7827E;">add_action</span><span style="color: #797593;">(</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">''after_setup_theme''</span><span style="color: #797593;">,</span><span style="color: #575279;"> </span><span style="color: #EA9D34;">''theme_slug_setup''</span><span style="color: #575279;"> </span><span style="color: #797593;">);</span></span>\n<span class="line"></span>\n<span class="line"><span style="color: #286983;">function</span><span style="color: #575279;"> </span><span style="color: #D7827E;">theme_slug_setup</span><span style="color: #797593;">()</span><span style="color: #575279;"> </span><span style="color: #797593;">{</span></span>\n<span class="line"><span style="color: #575279;">	</span><span style="color: #D7827E;">add_editor_style</span><span style="color: #797593;">(</span><span style="color: #575279;"> </span><span style="color: #D7827E;">get_stylesheet_uri</span><span style="color: #797593;">()</span><span style="color: #575279;"> </span><span style="color: #797593;">);</span></span>\n<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>\n\n\n\n<p class="wp-block-paragraph"><strong>Advantages:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Familiar workflow for developers with classic theme experience.</li>\n\n\n\n<li>Good for truly global CSS that should always be available (e.g., custom utility classes, print styles, CSS resets beyond what theme.json handles).</li>\n\n\n\n<li>Full CSS syntax, syntax highlighting, and preprocessor support.</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Limitations:</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li>Needs to be enqueued like any other stylesheet file (see #13)  </li>\n\n\n\n<li>Loads on every page, even if the styles aren&#8217;t needed — no per-block performance optimization.</li>\n\n\n\n<li>Not integrated with the Global Styles UI.</li>\n\n\n\n<li>Not the recommended approach for block-specific styling; use block stylesheets instead (#12)</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Documentation</strong></p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://developer.wordpress.org/themes/core-concepts/main-stylesheet/">Main Stylesheet (style.css)</a></li>\n</ul>\n\n\n\n<h2 class="wp-block-heading" id="summary-table">Summary Table</h2>\n\n\n\n<figure class="wp-block-table alignwide is-style-stripes" style="font-size: 0px;"><table><thead><tr><th>#</th><th>Method</th><th>Who</th><th>Scope</th><th>Loads When</th><th>Editable by Users</th></tr></thead><tbody><tr><td>1</td><td>theme.json structured properties</td><td>Developer</td><td>Global / block / element</td><td>Always (inlined)</td><td>Yes, via Global Styles UI</td></tr><tr><td>2</td><td>theme.json <code>css</code> property</td><td>Developer</td><td>Global or per-block</td><td>Always (inlined)</td><td>Yes, per-block CSS is visible in Styles</td></tr><tr><td>3</td><td>Custom CSS properties (<code>settings.custom</code>)</td><td>Developer</td><td>Global (variables)</td><td>Always</td><td>No (indirectly via tokens)</td></tr><tr><td>4</td><td>Child theme.json</td><td>Developer</td><td>Inherits parent</td><td>Same as parent</td><td>Same as parent</td></tr><tr><td>5</td><td>Global Styles UI (visual)</td><td>User</td><td>Global / block / element</td><td>Always (inlined)</td><td>It <em>is</em> the user editing</td></tr><tr><td>6</td><td>Additional CSS (site-wide)</td><td>User</td><td>Global</td><td>Every page</td><td>Yes</td></tr><tr><td>7</td><td>Per-block Additional CSS</td><td>User</td><td>Per-block type</td><td>When block present</td><td>Yes</td></tr><tr><td>8</td><td>Additional CSS Class(es)</td><td>User</td><td>Single block instance</td><td>When that block is present</td><td>N/A (class only)</td></tr><tr><td>9</td><td>Global style variations</td><td>Developer</td><td>Whole site preset</td><td>When active</td><td>Users switch presets</td></tr><tr><td>10</td><td>Block style variations (JSON, PHP, JS)</td><td>Developer</td><td>Per-block variation</td><td>Only when block + variation is used</td><td>JSON/<code>style_data</code> methods: yes; <code>inline_style</code>/JS: no</td></tr><tr><td>11</td><td>Section styles</td><td>Developer</td><td>container blocks </td><td>When block + variation is used</td><td>Yes, via Styles panel</td></tr><tr><td>12<br /> </td><td>Block stylesheets (<code>wp_enqueue_block_style</code>)</td><td>Developer</td><td>Per-block</td><td>Only when block is present</td><td>No</td></tr><tr><td>13</td><td><code>wp_enqueue_style()</code></td><td>Developer</td><td>Configurable</td><td>Configurable</td><td>No</td></tr><tr><td>14</td><td><code>style.css</code></td><td>Developer</td><td>Global</td><td>Every page</td><td>No</td></tr></tbody></table></figure>\n\n\n\n<h2 class="wp-block-heading" id="decision-guide">Decision Guide</h2>\n\n\n\n<p class="wp-block-paragraph"><strong>Start here:</strong> Use <strong>theme.json structured properties</strong> (#1) for everything they support. This gives you the best integration with the Global Styles system and lets users customize your styles.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Need CSS that theme.json properties can&#8217;t express?</strong> Use the <strong>theme.json <code>css</code> property</strong> (#2) for small additions or <strong>block stylesheets</strong> (#12) for anything substantial.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Want to offer style choices to content editors?</strong> Create <strong>block style variations</strong> (#10) so they appear in the Styles panel.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Site owner making tweaks?</strong> Use the <strong>Global Styles UI</strong> (#5) first, then fall back to <strong>Additional CSS</strong> (#7 or #7) for anything the visual interface can&#8217;t handle.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Need to target one specific block instance?</strong> Use <strong>Additional CSS Class(es)</strong> (#8) and define the class in your preferred CSS source.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Building a child theme?</strong> Override the parent via <strong>child theme.json</strong> (#4) and add block stylesheets as needed.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Need to sync user edits with theme files</strong>? Use the <a href="https://wordpress.org/plugins/create-block-theme/">Create Block Theme plugin</a>. </p>\n\n\n\n<p class="wp-block-paragraph"><strong>How to sync user editor to theme files and maintain version control?</strong> Here is a tutorial: <a href="https://developer.wordpress.org/news/2026/01/streamlining-block-theme-development-with-wordpress-playground-and-github/">Streamlining block theme development with WordPress Playground and GitHub</a>.</p>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />\n\n\n\n<p class="wp-block-paragraph"><em>Huge Thank you to Justin Tadlock for reviewing the post to make sure it&#8217;s all technically accurate. </em></p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 27 Feb 2026 18:01:03 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:18:"Birgit Pauli-Haack";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:43;a:6:{s:4:"data";s:21:"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:25:"Open Channels FM: Empathy";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:34:"https://openchannels.fm/?p=1497274";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:32:"https://openchannels.fm/empathy/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:73:"For some of us it comes naturally. For others, it may need to be learned.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 27 Feb 2026 09:55:43 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:8:"Bob Dunn";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:44;a:6:{s:4:"data";s:21:"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:16:"Matt: Enablement";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:23:"https://ma.tt/?p=151317";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:33:"https://ma.tt/2026/02/enablement/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:474:"<p class="wp-block-paragraph">This year at <a href="https://automattic.com/">Automattic</a> has been intense. We kicked it off with two weeks of in-person AI enablement training, <a href="https://automattic.com/2026/02/25/ai-enablement-wordpress/">and there&#8217;s a great post about it now</a>. I&#8217;ve been so impressed and inspired by my colleagues leaning in to learn and grow together in the most consequential time in software development in the past 40 years.</p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 27 Feb 2026 02:00:52 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"Matt";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:45;a:6:{s:4:"data";s:21:"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:40:"WordPress.org blog: WordPress 7.0 Beta 2";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=20025";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"https://wordpress.org/news/2026/02/wordpress-7-0-beta-2/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:6527:"<p class="wp-block-paragraph">WordPress 7.0 Beta 2 is now ready for testing!</p>\n\n\n\n<p class="wp-block-paragraph"><strong>This beta version of the WordPress software is under development</strong>. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, you should evaluate Beta 2 on a test server and site. You can test WordPress 7.0 Beta 2 in any of the following ways:</p>\n\n\n\n<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Plugin</strong></td><td>Install and activate the <a href="https://wordpress.org/plugins/wordpress-beta-tester/">WordPress Beta Tester</a> plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream.)</td></tr><tr><td><strong>Direct Download</strong></td><td>Download the <a href="https://wordpress.org/wordpress-7.0-beta2.zip">Beta 2 version (zip)</a> and install it on a WordPress website.</td></tr><tr><td><strong>Command Line</strong></td><td>Use this <a href="https://make.wordpress.org/cli/">WP-CLI</a> command: <br /><code>wp core update --version=7.0-beta2</code></td></tr><tr><td><strong>WordPress Playground</strong></td><td>Use the <a href="https://playground.wordpress.net/?php=8.0&amp;wp=beta&amp;networking=no&amp;language=&amp;multisite=no&amp;random=y4q1rn88xn">WordPress Playground instance</a> to test the software directly in your browser.  No setup required – just click and go! </td></tr></tbody></table></figure>\n\n\n\n<p class="wp-block-paragraph">The scheduled final release date for WordPress 7.0 is <strong>April 9, 2026</strong>. The full <a href="https://make.wordpress.org/core/2026/02/12/wordpress-7-0-release-party-schedule/">release schedule can be found here</a>. Your help testing Beta and RC versions is vital to making this release as stable and powerful as possible. Make sure to check the <a href="https://make.wordpress.org/core/">Make WordPress Core blog</a> for <a href="https://make.wordpress.org/core/tag/7-0">7.0-related posts</a> in the coming weeks for more information. Thank you to everyone who contributes by testing!</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Catch up on what’s new in WordPress 7.0</strong>: Read the <a href="https://wordpress.org/news/2026/02/wordpress-7-0-beta-1/">Beta 1 announcement</a> for details and highlights.</p>\n\n\n\n<h2 class="wp-block-heading">How to test this release</h2>\n\n\n\n<p class="wp-block-paragraph">Your help testing WordPress 7.0 Beta 2 is key to ensuring everything in the release is the best it can be. While testing the upgrade process is essential, trying out new features is equally important. This <a href="https://make.wordpress.org/test/2026/02/20/help-test-wordpress-7-0/">guide on what to test in WordPress 7.0</a> will walk you through testing features in WordPress 7.0.</p>\n\n\n\n<p class="wp-block-paragraph">If you encounter an issue, please report it to the <a href="https://wordpress.org/support/forum/alphabeta/">Alpha/Beta area</a> of the support forums or directly to <a href="https://core.trac.wordpress.org/newticket">WordPress Trac</a> if you are comfortable writing a reproducible bug report. You can also check your issue against a list of <a href="https://core.trac.wordpress.org/tickets/major">known bugs</a>. Curious about testing releases in general? Follow along with the <a href="https://make.wordpress.org/test/">testing initiatives in Make Core</a> and join the <a href="https://wordpress.slack.com/messages/core-test/">#core-test channel</a> on <a href="https://wordpress.slack.com/">Making WordPress Slack</a>.</p>\n\n\n\n<h2 class="wp-block-heading">Beta 2 updates and highlights</h2>\n\n\n\n<p class="wp-block-paragraph">WordPress 7.0 Beta 2 contains more than 70 updates and fixes across the Editor and Core since the Beta 1 release. </p>\n\n\n\n<p class="wp-block-paragraph">Each beta cycle focuses on bug fixes; and more are on the way with your help through testing. You can browse the technical details for all issues addressed since Beta 1 using these links:</p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://github.com/WordPress/gutenberg/commits/wp/7.0?since=2026-02-20&amp;until=2026-02-26">GitHub commits for 7.0</a> since February 20, 2026</li>\n\n\n\n<li><a href="https://core.trac.wordpress.org/query?status=closed&amp;changetime=02%2F20%2F2026..02%2F26%2F2026&amp;milestone=7.0&amp;col=id&amp;col=milestone&amp;col=owner&amp;col=type&amp;col=priority&amp;order=id">Closed Trac tickets for 7.0</a> since February 20, 2026</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Beta 2 also contains a new feature</strong>!</p>\n\n\n\n<p class="wp-block-paragraph">AI provider management is more intuitive in 7.0 Beta 2 with a new Connectors UI dashboard page. WordPress users can now manage external AI connections in a central place in wp-admin, under Settings &gt; Connectors. The new UI enables users to add, delete, and update external connections. It is powered by an extensible, route-based architecture that allows plugins and themes to hook into the page and expand its functionality. The new Connectors page builds on PHP-based script and menu infrastructure, and adds route components powered by <code>@wordpress/components</code> and <code>@wordpress/admin-ui</code>. A new <code>connections-wp-admin-init</code> hook and registration APIs allow plugins to integrate cleanly. This makes managing external connections easier while giving developers a clearer path to extend the experience.</p>\n\n\n\n<h2 class="wp-block-heading">A Beta 2 haiku</h2>\n\n\n\n<p class="wp-block-paragraph"><em>New, and fresh as dew</em></p>\n\n\n\n<p class="wp-block-paragraph"><em>Crafted and refined for you:</em></p>\n\n\n\n<p class="wp-block-paragraph"><em>Beta 2 breaks through.</em></p>\n\n\n\n<p class="has-text-align-right wp-block-paragraph"><em>Props to <a class="mention" href="https://profiles.wordpress.org/4thhubbard/"><span class="mentions-prefix">@</span>4thhubbard</a>, <a class="mention" href="https://profiles.wordpress.org/annezazu/"><span class="mentions-prefix">@</span>annezazu</a></em>, <em><a class="mention" href="https://profiles.wordpress.org/audrasjb/"><span class="mentions-prefix">@</span>audrasjb</a>, <a class="mention" href="https://profiles.wordpress.org/mukesh27/"><span class="mentions-prefix">@</span>mukesh27</a>, and <a class="mention" href="https://profiles.wordpress.org/chaion07/"><span class="mentions-prefix">@</span>chaion07</a></em> <em>for collaboration, proofreading and review.</em></p>\n\n\n\n<p class="wp-block-paragraph"></p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 26 Feb 2026 16:32:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Amy Kamala";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:46;a:6:{s:4:"data";s:21:"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:57:"Open Channels FM: Open Source vs SaaS: The Freedom Debate";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:34:"https://openchannels.fm/?p=1650282";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:63:"https://openchannels.fm/open-source-vs-saas-the-freedom-debate/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:126:"In this clip, hosts Dave and Robert discuss the balance between personal convenience and the ideals of open source technology.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 26 Feb 2026 14:50:00 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:8:"Bob Dunn";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:47;a:6:{s:4:"data";s:21:"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:19:"Matt: Great Writing";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:23:"https://ma.tt/?p=151313";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:36:"https://ma.tt/2026/02/great-writing/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1961:"<p class="wp-block-paragraph">Especially in an age where generating words is cheap, when you come across truly great writing, it really stands out. I want to pull two quotes from The Economist&#8217;columnist Charlemagne&#8217;s article <a href="https://www.economist.com/europe/2026/02/25/luxury-goods-are-europes-global-tax-on-vanity">Luxury goods are Europe’s global tax on vanity</a>.</p>\n\n\n\n<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">\n<p class="wp-block-paragraph">Flogging luxury goods is one of the few fields of business in which Europe excels (if one excludes the crafting of regulation). In an ironic twist, an egalitarian continent with an ever-declining share of global GDP hosts an industry that thrives on inequality and bombastic money-making. For how many seasons more can this alchemy of aspiration endure?</p>\n</blockquote>\n\n\n\n<p class="wp-block-paragraph">I mean, gosh, look at every word there. How they flow. The density of concepts and metaphors. Here&#8217;s another delicious excerpt.</p>\n\n\n\n<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">\n<p class="wp-block-paragraph">Luxury houses sell the idea of scarcity, with hordes of publicists explaining that the years-long wait for a Birkin handbag is due to the lack of sufficient artisans to craft these pinnacles of refinement. This is a fairy tale stitched in fine silk. The luxury-goods industry has roughly tripled in size since 2000; its €358bn in annual sales—half a Walmart or Amazon, give or take—betrays how thoroughly mainstream supposed exclusivity has become. Fifty years ago, Louis Vuitton had but two outlets, both in France. These days it has two stores in Ningbo, China’s 34th-biggest city. Exclusive, <em>moi</em>?</p>\n</blockquote>\n\n\n\n<p class="wp-block-paragraph">I guess this post also serves as an endorsement of why it&#8217;s worth subscribing to publications like The Economist. </p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 26 Feb 2026 07:04:40 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"Matt";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:48;a:6:{s:4:"data";s:21:"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:112:"WPTavern: #206 – Jonathan Desrosiers on WordPress Sustainability, Community Engagement, and Release Strategies";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:48:"https://wptavern.com/?post_type=podcast&p=202772";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:124:"https://wptavern.com/podcast/206-jonathan-desrosiers-on-wordpress-sustainability-community-engagement-and-release-strategies";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:57656:"<details>Transcript<div>\n<p class="wp-block-paragraph">[00:00:19] <strong>Nathan Wrigley:</strong> Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.</p>\n\n\n\n<p class="wp-block-paragraph">Jukebox is a podcast which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case WordPress sustainability, community engagement and release strategies.</p>\n\n\n\n<p class="wp-block-paragraph">If you&#8217;d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice. Or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.</p>\n\n\n\n<p class="wp-block-paragraph">If you have a topic that you&#8217;d like us to feature on the podcast, I&#8217;m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.</p>\n\n\n\n<p class="wp-block-paragraph">So on the podcast today, we have Jonathan Desrosiers. Jonathan has been involved with WordPress for almost two decades, both as a user and a contributor. He&#8217;s a principal software engineer at Bluehost, where his role sees him sponsored to work on WordPress through the Five for the Future program. Over the years, he&#8217;s become a Core committer, and has spent many hours thinking about how to enhance the contributor experience, and make it easier for people to get involved in the project.</p>\n\n\n\n<p class="wp-block-paragraph">In this episode we discuss how WordPress releases might become more impactful by synchronizing them with flagship community events like WordCamps and State of the Word. A recent experiment of combining a major release with a live event spark some excitement, and Jonathan shares insights on the logistics behind such synchronized moments, the challenges posed by international holidays, and regional scheduling, and the broader vision for connecting releases with community gatherings.</p>\n\n\n\n<p class="wp-block-paragraph">We also get into the challenging landscape of the WordPress community, how it&#8217;s recovering from the effects of COVID, the struggle to rebuild local Meetups, and efforts like mentorship and educational initiatives to bring in new contributors, particularly from younger generations.</p>\n\n\n\n<p class="wp-block-paragraph">Jonathan reflects on the importance of making release moments engaging and fun, akin to the anticipation of a new TV series or software launch, and the role of AI and open source in empowering a new wave of builders.</p>\n\n\n\n<p class="wp-block-paragraph">If you&#8217;re interested in how release cycles, community events, and contributor onboarding are involved in WordPress, or what the future might hold for the platform and its community, this episode is for you.</p>\n\n\n\n<p class="wp-block-paragraph">If you&#8217;re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you&#8217;ll find all the other episodes as well.</p>\n\n\n\n<p class="wp-block-paragraph">And so without further delay, I bring you Jonathan Desrosiers.</p>\n\n\n\n<p class="wp-block-paragraph">I am joined on the podcast by Jonathan Desrosiers. Hello.</p>\n\n\n\n<p class="wp-block-paragraph">[00:03:06] <strong>Jonathan Desrosiers:</strong> Hi, how are you?</p>\n\n\n\n<p class="wp-block-paragraph">[00:03:07] <strong>Nathan Wrigley:</strong> Yeah, good. Jonathan&#8217;s joining me again. Most recently, I think we were at WordCamp somewhere. I can&#8217;t exactly remember where, but I was chatting with him and Joe Dolson if memory serves. And a very different conversation to be had today because Jonathan has been mulling over how we can make releases impactful, and also how we can bind those to community events, particularly flagship WordPress events like WordCamps, things like that.</p>\n\n\n\n<p class="wp-block-paragraph">Before we begin that conversation, Jonathan, I wonder, it&#8217;s a bit of a banal question, but people like to have the context of who you are. So would you mind just, very quick potted bio. Just tell us who you are and what you do in the WordPress space.</p>\n\n\n\n<p class="wp-block-paragraph">[00:03:44] <strong>Jonathan Desrosiers:</strong> Sure. So my name is Jonathan Desrosiers. I am a principal software engineer at Bluehost and I am sponsored there, the majority of my time is sponsored to contribute back to the WordPress project through the Five for the Future program. And so I&#8217;ve been there, probably since 2018, I think. And I&#8217;ve been a Core committer for almost eight years now.</p>\n\n\n\n<p class="wp-block-paragraph">I&#8217;ve been involved as an accredited contributor for 13 years now. And so I&#8217;ve been involved with WordPress for over a decade in many ways, contributing, but also as a user for almost, geez, almost two decades now I think. And so, I just had that realisation, it&#8217;s been a really long time. It&#8217;s been almost 20 years that I&#8217;ve been at least using WordPress in some way.</p>\n\n\n\n<p class="wp-block-paragraph">But week to week I do a lot of thinking about contributor experience, how we can automate things, or how we can make our processes more clear so that more people can participate. And just generally making sure that everybody has what they need to be successful. And whether that&#8217;s mentorship, or they have blockers they need, certain people to come together and discuss, and get a consensus or understanding, you know, how the sausage is made in some way.</p>\n\n\n\n<p class="wp-block-paragraph">[00:04:56] <strong>Nathan Wrigley:</strong> I think it&#8217;s fair to say that you are very much connected to the WordPress project. I think it&#8217;s the fulcrum of your working life, and you are working at a very high level as well. So Core committer, things like that.</p>\n\n\n\n<p class="wp-block-paragraph">Now, in the recent past, it was probably, I want to say December in the year 2025, we had a kind of strange event happened. Not strange in the sense of weird, but strange in the sense of different, unusual. A release of WordPress came out and it coincided with an actual event. Now, in this case, it was State of the Word. So there was a bunch of people, and I believe they were gathered in New York. I could be wrong about that, but I think it was in.</p>\n\n\n\n<p class="wp-block-paragraph">[00:05:33] <strong>Jonathan Desrosiers:</strong> It was in San Francisco.</p>\n\n\n\n<p class="wp-block-paragraph">[00:05:35] <strong>Nathan Wrigley:</strong> San Francisco. Okay, there we go. Thank you for the correction. It was in San Francisco and the idea was that the release of WordPress would go out and it would be bound to this event. And there was this almost, how can we describe it? It was almost like television, basically. It was being filmed and streamed live all over the place. And there was this feeling of a big red button. There was a lot of people gathered around and they all sort of leaned in and pushed a big red button, and the release of WordPress came out.</p>\n\n\n\n<p class="wp-block-paragraph">Now, I don&#8217;t know if the button actually did anything or if it was really sort of smoke and mirrors. I like the idea that the button actually did signal the release, but I don&#8217;t know if that&#8217;s the case. But the point was, there was a little bit of theater put into it. There was this idea that, okay, we&#8217;ve got this live event which lots of people will be watching. We&#8217;ve got a release which we need to do, which lots of people will be looking forward to. Why don&#8217;t we sort of combine the two things?</p>\n\n\n\n<p class="wp-block-paragraph">And so it was a bit of PR really. And it also felt a bit like sort of marketing, and I&#8217;m going to use gimmick in the real sense of the word. So not like gimmick as in something pointless, but gimmick as in something different, unique. Something to draw your attention and grab you in. And I think the idea has been proposed that in the year 2026, the flagship events, the flagship WordCamps, so I&#8217;ll list them in order in which they&#8217;re happening.</p>\n\n\n\n<p class="wp-block-paragraph">So we&#8217;ve got WordCamp Asia, and then we&#8217;ve WordCamp Europe, and then we&#8217;ve got WordCamp US. The three releases of WordPress during 2026 will happen in tandem with those events. Now, why? Why would we want to do this?</p>\n\n\n\n<p class="wp-block-paragraph">[00:07:12] <strong>Jonathan Desrosiers:</strong> Yeah, so I don&#8217;t think it was intentional, but the schedule just happened to coincide. You know, we were working on 6.9 and we realised, oh, the release date is the same as State of the Word. And so, I can&#8217;t remember who originally had the idea, but it was mentioned that it would be really neat to just be able to publish it live at the event and celebrate that.</p>\n\n\n\n<p class="wp-block-paragraph">I guess the main reason behind it is just that, the more I&#8217;m involved in open source, the more I realise that the code and the license and all those things are important, but the most important thing underneath any open source project is the community that&#8217;s involved with it. And what better way to celebrate our achievements and our accomplishments when we get together in different ways.</p>\n\n\n\n<p class="wp-block-paragraph">And so, typically that&#8217;s in Slack or social media, right? We celebrate a release and we share the posts and say what we&#8217;re excited about. But we also get together at different events and we do the same thing, right? We talk about what we&#8217;re excited about, what we&#8217;re working on, what&#8217;s coming, or what we think should change in certain ways. Why not just do that at the same time and create even a more ultimate celebration, right? Another community moment where people have another opportunity to feel involved in something greater than them.</p>\n\n\n\n<p class="wp-block-paragraph">[00:08:25] <strong>Nathan Wrigley:</strong> Do you have any notion that this is going to be carried forward? I mean, I know that there was obviously a bit of serendipity in how it happened. The coincidence of timing and things like that. But do you have every confidence that this will happen, that Asia will get a release, Europe will get a release, and the US will get a release. In the year 2026, do you think that&#8217;s going to actually occur?</p>\n\n\n\n<p class="wp-block-paragraph">[00:08:46] <strong>Jonathan Desrosiers:</strong> We will see. So as the proposed schedule is for this calendar year, right? There&#8217;s three releases. Unfortunately, it&#8217;s tough because the people planning WordCamps don&#8217;t plan around our software&#8217;s release cadence, right? They plan around budget, regional holidays, travel factors, weather, cost of venues and availability.</p>\n\n\n\n<p class="wp-block-paragraph">And so, you know, it&#8217;s not reasonable for the Core team and the people working on releases to say you have to have an event in a certain month, right? And so this year, some people may not have noticed, but WordCamp Asia is in April this year, which it&#8217;s been in February so far in the previous editions. And WordCamp Europe is in June, which it&#8217;s traditionally usually in.</p>\n\n\n\n<p class="wp-block-paragraph">And so that&#8217;s not a big enough gap to have another major release. And so the proposed schedule is saying, let&#8217;s release during WordCamp Asia, let&#8217;s release during WordCamp US, and then we&#8217;ll release again at the end of the year around State of the Word. We don&#8217;t have a date for State of the Word yet, but it&#8217;s around where we think it might be.</p>\n\n\n\n<p class="wp-block-paragraph">And likewise, creating a schedule for releases is incredibly hard because if we don&#8217;t release in the first week of April, for example, then I believe the whole month of April has major religious holidays scattered throughout it in different areas of the world. And if we released in March, that was way too soon because we started the alpha phase of 7.0, that starts when the previous release is branched, like it&#8217;s separated from the primary branch in the code base, and that happened in like November.</p>\n\n\n\n<p class="wp-block-paragraph">But there&#8217;s US Thanksgiving, there&#8217;s Hanukkah, there&#8217;s Christmas, there&#8217;s New Year&#8217;s, right? A lot of people in the community take the majority of December off, and so that&#8217;s like a washed month, right? And so we would&#8217;ve had essentially four weeks until the feature complete point of the release. So that was too soon. And so it&#8217;s just as hard to plan the release schedule in a way that doesn&#8217;t negatively impact everybody as best as possible as it is to plan these major events.</p>\n\n\n\n<p class="wp-block-paragraph">And so I can&#8217;t say that it will be a guarantee going forward. We&#8217;re trying it out this year to see how it goes and what we can learn from it. We felt that the State of the Word was successful and it was exciting. It was unique in its own ways. And so we want to try, continue trying this this year and see how it goes.</p>\n\n\n\n<p class="wp-block-paragraph">[00:11:06] <strong>Nathan Wrigley:</strong> Gosh, the piece that you just said there about the religious holidays and what have you, that really opens up a really interesting discussion. Because it is quite likely, I imagine, that the listenership to this podcast probably never gave that any thought, that this kind of international calendar, be it a religious calendar or maybe just a vacation calendar in certain parts of the globe would really impact when the release can happen.</p>\n\n\n\n<p class="wp-block-paragraph">Because there are people who are committing to the project, and they tend to be in certain jurisdictions. And so if there are people who are on, I don&#8217;t know, a week long holiday, nationally, in a specific jurisdiction, and they typically are a large part of the team that are committing in various different respects, that&#8217;s important, but probably something that many people would not have thought about.</p>\n\n\n\n<p class="wp-block-paragraph">Now, in terms of these releases then, is the idea, well, I&#8217;ll backpedal a little bit. It occurred to me that quite a lot of the people who may be involved in releases are the very kind of people who would find themselves also at some of these flagship events. Now, obviously it&#8217;s not going to be 100%, maybe it&#8217;s 25% of the people who are release leads and part of the teams that are committing here, there, and everywhere.</p>\n\n\n\n<p class="wp-block-paragraph">I was worried that there&#8217;d be people on airplanes, people trying to land and orientate themselves in the country that they&#8217;ve landed in in the same period of time when they would&#8217;ve been heads down, in their office, in their study, figuring out the bits that might be broken with the upcoming release. Is that a thing? Is that part of the jigsaw puzzle of this?</p>\n\n\n\n<p class="wp-block-paragraph">[00:12:32] <strong>Jonathan Desrosiers:</strong> It definitely is, yeah. With any release, there&#8217;s no time of the day where everyone on the planet is available to work on something, right? And so another part of this is that, in a way it forces us to have a major release in different geographic areas so that everywhere on the globe there&#8217;s a WordPress release that they may be able to participate in, right?</p>\n\n\n\n<p class="wp-block-paragraph">And so, likewise with travel, right? So when we assemble a release squad, we have to think, okay, it&#8217;s based in, for example, this one was planned to be released at WordCamp Asia in India. So we want to make sure we have a mix of people that are in different areas of the world. And not just so that there&#8217;s always people around to respond to things throughout the entire cycle, but we also want to have people that are present and not present at the event that are participating. And maybe the wifi is completely unusable or maybe something happens, right? So it&#8217;s good to have people that are there and not.</p>\n\n\n\n<p class="wp-block-paragraph">And that was part of the announcement too, is that we tried to underscore the point that it would be great if everybody could go to WordCamp Asia, but traveling is not a requirement to participate in the release at all. And that&#8217;s a good thing, because it&#8217;s good to have people in multiple areas, multiple time zones.</p>\n\n\n\n<p class="wp-block-paragraph">With WordCamp Asia, once contributor day ends, it&#8217;s the beginning of the US daytime, right? And so those contributors can sign off and there&#8217;s people around to help carry that torch and continue on if there&#8217;s any follow-up issues or anything that needs to be investigated.</p>\n\n\n\n<p class="wp-block-paragraph">And so, yeah, that&#8217;s also a consideration is how, I guess we can call it global coverage, right? Like, how can we ensure we have global coverage so that there are people with the right skill sets, and right availability, and right knowledge, to be able to take on certain tasks or responsibilities or perform investigations, whatever may need to be done as part of that release process.</p>\n\n\n\n<p class="wp-block-paragraph">[00:14:26] <strong>Nathan Wrigley:</strong> I, like you, am really in the weeds of the WordPress project. I obsess about it in a way that&#8217;s probably not all that healthy. I&#8217;m very well aware of when the next release is coming up. I&#8217;m usually fairly aware of what is going to be in that release. But I imagine most people using WordPress, it&#8217;s probably a bit of a surprise. You know, they open up WordPress one day and either it has updated. If it&#8217;s a point release, probably it&#8217;s a more manual thing, if it&#8217;s a major release, I should say, but if it&#8217;s a more minor release, maybe things have updated in the background during the course of the night and what have you.</p>\n\n\n\n<p class="wp-block-paragraph">But I&#8217;m thinking of TV series now. So when a successful TV series has a new season, there&#8217;s all this fanfare and buildup and you know it&#8217;s coming. You see the commercials, you see the adverts. And the moment that TV series comes around, you are excited, you&#8217;re ready to go. And I remember back in the day, this is going back a long time, when Firefox would make a release, they sort of did this thing like, I don&#8217;t know, every 18 months or something like that. Not like now where it&#8217;s every couple of hours it seems, that browsers update themselves.</p>\n\n\n\n<p class="wp-block-paragraph">But when it went to, I don&#8217;t know, 3.6 or something like that, there was this big fanfare, this big moment. Everybody took stock and what have you. And are you trying to encourage a bit of that? Are you trying to create a bit of razzmatazz and drama and intrigue and awareness and all of that around the release, and make it feel like an important thing, which with the best will in the world, it kind of has not been more recently? Most people, it just updates. There&#8217;s no fanfare whatsoever. But we can leverage it to make it important, significant, fun, interesting.</p>\n\n\n\n<p class="wp-block-paragraph">[00:16:04] <strong>Jonathan Desrosiers:</strong> Yes and no, right? Like, we want to celebrate the community and the work we&#8217;re doing now. I actually would love it if we could get to a point where we&#8217;re releasing every, I don&#8217;t know, every week or every month even, right? Not have to wait every three or four months. There&#8217;s some value in having that penultimate moment, right? Of, we&#8217;ve worked for three months on this. But there&#8217;s also aspects of the world where we expect things faster and more instant and waiting for the patch that you submit in January to be released in April is not really, like maybe you lose interest in contributing in that time, right? So there&#8217;s many different things like that.</p>\n\n\n\n<p class="wp-block-paragraph">Some things that you mentioned really resonated with me as far as awareness of what&#8217;s coming or like what&#8217;s been done. In a way, the fact that users are not so aware of what&#8217;s being added or what their site has updated to, it&#8217;s a sign of the success of auto updates and how seamless those are.</p>\n\n\n\n<p class="wp-block-paragraph">Because for a little while I&#8217;ve been considering, when you update WordPress manually, you&#8217;re redirected into the about page in the dashboard, right? And every release, there&#8217;s a new about page that&#8217;s designed, it works hand in hand with, we call them the micro sites, which is like a wordpress.org&#8217;s landing page that showcases the release. And it just explains all the features that have been added.</p>\n\n\n\n<p class="wp-block-paragraph">But you only see that if you either go to the about page manually or you manually click update when you&#8217;re in the dashboard. And a site might have many administrators that only the person that actually updates will see it. And so I&#8217;ve been thinking about ways that we can make users more aware that their site is updated. Or maybe that&#8217;s not the important part, but maybe it&#8217;s just the important part to make them aware of the new features that are available to them, right?</p>\n\n\n\n<p class="wp-block-paragraph">Maybe we put some type of a widget on the dashboard where we link off to a Learn WordPress page that teaches you about how to use the Notes feature that got added. The other thing too is you mentioned about the TV shows advertise when they&#8217;re coming up, right? Maybe we need to do a better job of advertising what&#8217;s coming up and encouraging people to opt in early and test.</p>\n\n\n\n<p class="wp-block-paragraph">And in a way a more rapid release cycle leads to that because many of the browsers have different feature flags and they build features out in different branches, and you can actually opt into testing a specific feature and that would get turned on, but maybe not all the other things that they&#8217;re working on until it&#8217;s ready.</p>\n\n\n\n<p class="wp-block-paragraph">And so maybe we need different ways for people to get involved testing, or trying things out earlier to understand what&#8217;s coming, but also to give us valuable feedback, how it works on their site, what breaks, what it doesn&#8217;t interact with. All of that is very valuable feedback, and we should always be striving to get more testers and more awareness around what&#8217;s coming because it creates new feedback loops that are valuable for different reasons.</p>\n\n\n\n<p class="wp-block-paragraph">[00:18:58] <strong>Nathan Wrigley:</strong> Yeah, it&#8217;s kind of interesting, and what I&#8217;m about to say, I am sure that a significant proportion of the listeners to this podcast will say, no, Nathan, we don&#8217;t want this. But here&#8217;s a proposal then. Here&#8217;s an idea. And again, I&#8217;m going to hark back to the TV series.</p>\n\n\n\n<p class="wp-block-paragraph">The TV series, typically when they&#8217;ve started advertising between other television programs, that TV series has been made, the footage has been shot, the graphics have been done. It&#8217;s basically ready to roll. And then they parcel all that up and then they release little snippets of what&#8217;s coming so that you can prepare yourself and get excited.</p>\n\n\n\n<p class="wp-block-paragraph">I kind of wondered if something like that in the dashboard, akin to the about us page, but in the run up to the release. So all the graphics have been made. We know basically what&#8217;s going to drop in this release. Now it may get tweaked here and there at the edges, but we know what&#8217;s coming. I&#8217;ve always thought that would be a really nice idea.</p>\n\n\n\n<p class="wp-block-paragraph">I would love to see that. And I realise a proportion of people would think, no, we really don&#8217;t want that. But I think that&#8217;s a perfect opportunity to get people drawn into, oh, this is coming. Collaborative editing, that&#8217;s about to happen is it? Gosh, that&#8217;s really interesting.</p>\n\n\n\n<p class="wp-block-paragraph">And then this call to action could be dropped in, but we need some testing around the edges of it. We&#8217;ve got the bare bones of it, but we need some more eyeballs on it and what have you. So that proactive demonstration of what&#8217;s going to happen rather than the reactive, your site has been updated, here&#8217;s what there is, which is already there. This is more of a here&#8217;s what&#8217;s coming, get excited, get involved, yada yada.</p>\n\n\n\n<p class="wp-block-paragraph">[00:20:29] <strong>Jonathan Desrosiers:</strong> In some ways the feature branch model that I described lends to that, right? Because then it&#8217;s not, here comes this feature and then, oh, actually we left it out of this release, right? It&#8217;s its own thing that&#8217;s being worked on. And then when it&#8217;s released, it&#8217;s released, and it&#8217;s here. But it doesn&#8217;t make it any less, any worse off than other things that are shipping in the release, right? Because it&#8217;s its own thing, and it&#8217;s its own, it has its own criteria to be ready, in a state that we&#8217;re comfortable with shipping it and supporting it forever because of backwards compatibility.</p>\n\n\n\n<p class="wp-block-paragraph">And so yeah, I think that what you&#8217;re describing is essentially what I was describing, a little bit more detail. And there&#8217;s of course a lot of nuance there around how often do we do that? We have a lot of parts of the release process that need to be automated before we can even consider that. The different parts of the block editor are, many of it is managed as packages, NPM packages. And so a lot of those are so interconnected, it&#8217;s a little difficult to release just one feature because they&#8217;re all being updated at the same time.</p>\n\n\n\n<p class="wp-block-paragraph">And so like there&#8217;s some architectural things to think about around that. Like, how do we compartmentalize things better to be able to do that? Make sure we don&#8217;t accidentally include something that&#8217;s not ready but when we intended to include a certain feature. There&#8217;s a lot to unpack there and I don&#8217;t know that we&#8217;ll ever get there just because of the sheer size of the project and how, backwards compatibility, how long we&#8217;ve been around.</p>\n\n\n\n<p class="wp-block-paragraph">But I think that training users that auto updates are important to have enabled that are quality, you know, not shipping things that break people&#8217;s sites as much as possible, even though it&#8217;s unavoidable because of how flexible WordPress is.</p>\n\n\n\n<p class="wp-block-paragraph">After 6.9 came out, I was looking into some of the data because I had this gut feeling that 6.9 was being updated to, slower than other releases. And so for a little while I was looking at that. And after about a month, I was like, okay, this is just a hunch. Let me go and actually look at the data around this.</p>\n\n\n\n<p class="wp-block-paragraph">And so what I noticed was actually the opposite. When I looked at, I created 5% thresholds for the percentage of total WordPress sites. And when I looked at the data, I realised that for the last 10 releases, let&#8217;s see here. So every major version of the last six to eight releases has passed 35% of all WordPress sites in two days or less. And also every one of these columns as far as percentages is increasing.</p>\n\n\n\n<p class="wp-block-paragraph">And so WordPress 6.9 reached the 50% threshold of all WordPress sites in 10 days, and that&#8217;s four days faster than 6.8, which was the next fastest. And currently we&#8217;re approaching 65% threshold of all WordPress sites. And only six other releases have done that so far. All of them are the most recent ones, except for 4.9, which we all know had a waiting period for Gutenberg. And the only release the past 70% was 6.8.</p>\n\n\n\n<p class="wp-block-paragraph">And so I&#8217;m interested to see how this trend continues because it&#8217;s showing an acceleration of adoption for each new major version of WordPress. They&#8217;re getting installed faster, by more people. It&#8217;s a sign that we&#8217;re shipping stable software. People are more confident. People are opting into auto updates for major versions. And in general, it&#8217;s just a quality sign that we&#8217;re doing something right here. And so how can we lean into that more?</p>\n\n\n\n<p class="wp-block-paragraph">[00:23:52] <strong>Nathan Wrigley:</strong> Okay, let&#8217;s pivot a little bit. Let&#8217;s sort of bind community, we did touch on this a minute ago, but let&#8217;s spend a little bit of time binding the community to these kind of things because right at the start you mentioned that really the community is the underpinnings of your interest in the WordPress space. The code is obviously tremendously important, but without the community there is no code basically.</p>\n\n\n\n<p class="wp-block-paragraph">And so we&#8217;ve got these events. We&#8217;re trying to create interest around the WordCamps and the releases at the same time. But just looking back over the last period of time, let&#8217;s go for year, two years, something like that. I don&#8217;t know what your spidey sense is telling you, but my spidey sense is telling me that that community portion, it&#8217;s sort of slowly but surely, it feels like it&#8217;s withering away slightly.</p>\n\n\n\n<p class="wp-block-paragraph">I&#8217;m not really picking up on like this angry mob of people who are stamping their feet and shouting, I don&#8217;t want anything to do with the WordPress community and then disappearing. I mean maybe there&#8217;s a few of those, probably, somewhere. But I don&#8217;t get a sense of that. I just get this sense of sort of, somebody&#8217;s pulled the plug out of a bathtub and it&#8217;s slowly sort of draining away.</p>\n\n\n\n<p class="wp-block-paragraph">Attendance down at WordCamps. Meetups struggling to sort of get the numbers that they had several years ago. And so it would feel like at the moment, you would have to be watching the news fairly closely, especially right now. So at the beginning of February, 2026 is when we&#8217;re recording this. There does seem to be a push from the senior leadership to make WordPress Meetups and things like that, a much more central part.</p>\n\n\n\n<p class="wp-block-paragraph">And then there&#8217;s this whole broad spectrum of educational initiatives as well going on. So we&#8217;ve got WP Campus Connect, we&#8217;ve got the Credits Program and a whole smorgasbord of other things which is happening.</p>\n\n\n\n<p class="wp-block-paragraph">So there&#8217;s no question there, really, what I&#8217;m just trying to do is give you the opportunity to bind the two things, the WordPress community and the software, and really just talk about whether you&#8217;ve noticed the same thing as me, where there&#8217;s this slow, withering of the community. And maybe this is a part of just sort of getting it all back together, making events like this a bit more fun and interesting.</p>\n\n\n\n<p class="wp-block-paragraph">[00:26:02] <strong>Jonathan Desrosiers:</strong> Yeah. I think there&#8217;s a few things there to call out. The first observation I&#8217;ve had over the last year is there&#8217;s a palpable excitement to build with WordPress again. I&#8217;m noticing there&#8217;s a renewed enthusiasm. People, they want to move on from certain things, and they want to get back to building experiences and tools and things on the WordPress platform.</p>\n\n\n\n<p class="wp-block-paragraph">But there&#8217;s also, I think we&#8217;re dealing with some, in some ways, a long tail COVID effect, right? There was obviously, you know, a lack of in-person events for a while, and during that time a lot of the people who were keeping Meetups alive and WordCamps alive, they moved on, or burnt out, and chose not to return after. And so there was a break in that pipeline of, usually there&#8217;s a lead doing that and there&#8217;s other people learning under them, and then they move up and take over. And that was totally disrupted and I think that we&#8217;re still trying to rebuild that.</p>\n\n\n\n<p class="wp-block-paragraph">I think that it manifests differently in different areas too. So for example, the APAC WordCamp community is very strong and they have lots of WordCamps. But in the United States, there was one WordCamp that wasn&#8217;t WordCamp US last year, I think, Montclair. And I lead the Boston WordPress Meetup and so finding speakers is difficult. Getting people to come out is difficult as well. And I think those are partially just larger societal shifts where it&#8217;s harder to get people to come out to certain things. And we just have different preferences as far as how we consume information or learn.</p>\n\n\n\n<p class="wp-block-paragraph">But I&#8217;m still not sure why the difference in the geographical areas, and I think it may have to do more with, APAC is a more emerging market when it comes to WordPress, right? Like their community, especially in certain areas has been growing and is much newer than it is in the US. And so I think that they&#8217;re growing their communities for the first time in many ways, right? But in the US it&#8217;s the second or third or fourth time that we&#8217;re growing those communities or revitalising those communities. And the form that that needs to take, I think is a little different. And I&#8217;m not clear on what the holdup is there.</p>\n\n\n\n<p class="wp-block-paragraph">But I do know that a big factor of that is to get new people involved with WordPress and interested in WordPress, and that&#8217;s why some of the priorities that Mary Hubbard published, and one of them in particular is education and awareness and all of those different things that work together in the form of the WP Credits program, mentorship programs. There&#8217;s been the contributor mentorship programs that happen every few quarters in WordPress over the last few years.</p>\n\n\n\n<p class="wp-block-paragraph">And we&#8217;ve seen some really great contributors who were mentored in that program, and then the next time the program happened, they mentored, and then they became a team lead, and then they served on release squads. And so we&#8217;ve seen some really great contributed journeys through those paths.</p>\n\n\n\n<p class="wp-block-paragraph">[00:28:53] <strong>Nathan Wrigley:</strong> I&#8217;ll just sort of run through with you the kind of things that I&#8217;ve noticed in my part of the world. So I think COVID is an enormous part of it. It upended so many ordinary things in life. So, as an example, you know, people obviously, they ceased going out, and then that pattern of not going out became habituated. People didn&#8217;t go out because that&#8217;s not what you do.</p>\n\n\n\n<p class="wp-block-paragraph">And in the UK we have this institution called the pub, which I&#8217;m sure you&#8217;ve heard of. And it used to be that prior to COVID, the pub was the real centerpiece of many communities. You know, towns, suburbs, what have you. Everybody would coalesce around the pub and that was very important. Since the pandemic, a lot of those institutions, they don&#8217;t really function in that way anymore. You know, there isn&#8217;t the throughput, there isn&#8217;t the footfall and so they go out of business.</p>\n\n\n\n<p class="wp-block-paragraph">And the same, I presume is true in the WordPress space. You know, we&#8217;re trying to encourage people to get up, leave their home, spend money on transportation. Obviously there&#8217;s the time cost, the sunk cost of time and what have you as well. It&#8217;s difficult, but it makes me more sanguine that it&#8217;s not just like, it&#8217;s not just a WordPress thing, you know, it&#8217;s the whole of society.</p>\n\n\n\n<p class="wp-block-paragraph">But like you said, I get the feeling that the WordPress community has begun to address it. And the way it&#8217;s being addressed is through these educational initiatives. Trying to get a throughput of younger talent. So get them at the school age, get them at the university age, and then hopefully they will have an interest. They&#8217;ll get a flavor of what it means to be involved in these Meetups and things like that and hopefully take those on.</p>\n\n\n\n<p class="wp-block-paragraph">It&#8217;s a laudable goal. I hope that it has the capacity to transfer. You know, so in a decade&#8217;s time we can look back and say, look what happened. This young blood emerged. I think it&#8217;s yet to be seen. I think certainly in the area, the locale where I am, the United Kingdom, we don&#8217;t see evidence of that yet. Maybe in the US that would also mirror.</p>\n\n\n\n<p class="wp-block-paragraph">But from everything that I&#8217;ve learned and the people that I&#8217;ve talked to for this podcast and events in Asia and places like that, that seems to be a really different picture. There seems to be a real thirst for solutions like WordPress. Because there&#8217;s a direct kind of career path there. You know, you can pick up a free piece of open source software, crack open a laptop and get going and start to sell your services far and wide. And so again, there&#8217;s no question there, just observations that I hope these initiatives bear fruit. But it&#8217;ll be interesting to see. Only time will tell.</p>\n\n\n\n<p class="wp-block-paragraph">[00:31:16] <strong>Jonathan Desrosiers:</strong> I think at the root of what we&#8217;re dealing with is that people are motivated by what they see as valuable, right? If they&#8217;re not going out to events, so they&#8217;re not engaging with the community, they don&#8217;t recognise or feel that it&#8217;s valuable to them in some way. And so we&#8217;re having to reprove why communities are valuable, why open source is valuable, why you should care.</p>\n\n\n\n<p class="wp-block-paragraph">And then the other aspect of it is, you know, overall project sustainability. We can&#8217;t just keep getting older. We need to have a balance of new, younger people that get involved as well.</p>\n\n\n\n<p class="wp-block-paragraph">And so one way to lean into getting younger is obviously, like you said, to approach people at schooling age, right? Or university, and teach them about open source. Show them how to contribute, how to be a part of a community, and why it&#8217;s valuable. But we have to be really careful because we need to be prepared to, I&#8217;ve written in the past that we need to be prepared to activate these contributors, right?</p>\n\n\n\n<p class="wp-block-paragraph">So it&#8217;s one thing to make them aware of this, but it&#8217;s another thing to make sure they&#8217;re properly supported and we give them pathways to grow. We give them clear criteria to be successful, clear projects to work on, so they understand what they&#8217;re doing and what they&#8217;re trying to accomplish.</p>\n\n\n\n<p class="wp-block-paragraph">And I think that this is one thing that is also a benefit of having the releases coincide with these major events because new people are getting together already, so why not use that opportunity?</p>\n\n\n\n<p class="wp-block-paragraph">One of the goals that every table lead and every organiser of a Contributor Day has is to ensure as many contributors see, realise their work over the finish line. And so on the Core team that&#8217;s a patch that someone tests gets committed, or a patch someone writes gets committed to WordPress, right? How can we make that more valuable, where it&#8217;s not just ending when they leave Contributor Day?</p>\n\n\n\n<p class="wp-block-paragraph">And so I&#8217;ve been thinking about all the different logistics and helping to coordinate with the WordCamp Asia team and the 7.0 release team to make sure we&#8217;re prepared for that final day. And one of the things I&#8217;ve been thinking about is the release process itself. One of the best, lowest friction ways to get involved with WordPress in the actual release process. And you don&#8217;t need any experience contributing to really take part in it. And that&#8217;s when we get to a point where we say, okay, here&#8217;s the zip file of what we think we&#8217;re going to ship, go test it.</p>\n\n\n\n<p class="wp-block-paragraph">And so people will take it, and they install it on their server and they say which version of PHP they&#8217;re using, and how they installed it and what they did and, you know, it worked. And the majority of that though is just looking for problems. And when problems don&#8217;t come up, we just don&#8217;t do anything with all the information that people are dropping, right? And there might be 50 people at a major release. We call them parties, but at the release parties that are dropping information. And again, if there&#8217;s no red flags, that information just largely goes away.</p>\n\n\n\n<p class="wp-block-paragraph">But, how can we rethink that and make that effort more meaningful, and also create a pathway for them to continue contributing in some way past that moment? And having everybody in person is a great way to have pilot programs for different approaches, because there can be someone that briefs a set of contributors on what we&#8217;re going to try this time, here&#8217;s what we want to do, give us feedback on how you felt it went. Everybody that&#8217;s involved in the squad and doing the release can say, oh yeah, that actually was really helpful and better than what we do before.</p>\n\n\n\n<p class="wp-block-paragraph">And these newer individuals that are learning also have fresh perspective. And so having them participate in these, I guess I&#8217;ll call them experiments of such, but just these processes and things that we are considering, it helps get that fresh opinion and perspective on why things are working and why things aren&#8217;t and helps us just improve.</p>\n\n\n\n<p class="wp-block-paragraph">[00:35:04] <strong>Nathan Wrigley:</strong> I&#8217;ve got three children and they&#8217;re all of a certain age now, they&#8217;re certainly no longer small. You know, they&#8217;re basically adults. And it&#8217;s really fascinating looking at the kind of things that engage them. I think they&#8217;ve just grown up in a different era. The diet of the kind of things that excite them is very different to the kind of things that excited somebody of my generation, just because, you know, they&#8217;ve had the whole world in their pocket ever since they were born.</p>\n\n\n\n<p class="wp-block-paragraph">And having that dialogue with the next generation, and trying to figure out what it is that they want and that they desire. And even things like open source. So when, I was already an adult before the internet began to be put into everybody&#8217;s homes, and people started to own personal computers and things like that. And so I was ready to receive that message of open source right at the start. And it became really obvious to me, oh, that&#8217;s a really clever way of making software.</p>\n\n\n\n<p class="wp-block-paragraph">But now of course we&#8217;ve got this landscape of closed platforms. Everything&#8217;s free at the point of use, but everything&#8217;s not free in any way, shape, or form. You can think of the siloed platforms that I&#8217;m talking about. My children have been raised with those and so just even making the argument about open source is hard enough.</p>\n\n\n\n<p class="wp-block-paragraph">So I think what I&#8217;m really advocating for is, obviously we&#8217;ve got to shepherd these people in, but at the same time, I think we have to be willing to let go of a lot of the things that we think the project is. We think the Meetup should contain. We think the WordCamp should maintain. Because at the end of the day, we&#8217;re competing for eyeballs and if we don&#8217;t make it, I&#8217;m going to use the word exciting, if we don&#8217;t make it exciting, they&#8217;re just not going to show up.</p>\n\n\n\n<p class="wp-block-paragraph">And I feel that&#8217;s a piece of the next five, six years, trying to figure out what excites these people. Because unless we do excite them, I fear the Meetups are going to be empty and there&#8217;ll be a certain throughput from the WordPress initiatives, Campus Connect and what have you. But we need to make these things exciting, interesting, innovative, fun. But I don&#8217;t have an answer to that.</p>\n\n\n\n<p class="wp-block-paragraph">[00:36:59] <strong>Jonathan Desrosiers:</strong> Yeah, you touched on something interesting that I&#8217;ve been thinking about quite a bit. I gave a talk last year about how to implement AI into open source communities while maintaining what makes them great in the first place, which is the human element, right? The community aspects of it.</p>\n\n\n\n<p class="wp-block-paragraph">And so I&#8217;ve been thinking a lot about just AI and how it&#8217;s affecting us. And there&#8217;s a few things that I&#8217;m really excited about with AI and those are empowerment and learning. And so you can have an AI model that digests massive amounts of information and summarises it in the specific way that you learn best, right?</p>\n\n\n\n<p class="wp-block-paragraph">And likewise, I&#8217;m noticing that people feel more empowered to try things themselves because they have more of an ability to distill a lot of information down into something that&#8217;s digestible, right?</p>\n\n\n\n<p class="wp-block-paragraph">And so I feel that the tension between those two areas of closed and open is growing. Because when I was growing up, computers were just starting to be less than the size of a car, right? People were starting to have them in their house. But they were still at a point where, the computer went bad, you took it apart and fixed it. You didn&#8217;t trade it in for a new one, right?</p>\n\n\n\n<p class="wp-block-paragraph">And so I feel like my generation, there was a level of, we had the tools, but we had to go out and build the things we needed ourselves in some ways, and experiment. And then there&#8217;s been the generations between that and now where they pretty much had everything that they needed.</p>\n\n\n\n<p class="wp-block-paragraph">But AI is changing what we need, or what we want, and what ways we want it. And so now there&#8217;s a new found need to build again in some ways. And in some ways it&#8217;s kind of a circle, right? Because it&#8217;s, the AI is making it easier to build, but it&#8217;s also making you more aware you have to build. It&#8217;s kind of like building against itself in certain ways.</p>\n\n\n\n<p class="wp-block-paragraph">But I&#8217;m finding that there&#8217;s more of a willingness to do things on your own, try to tackle something you would typically need to hire a professional to do in the past. You know in many ways we need to lean into that because then that gets people excited. Oh, WordPress, I could use WordPress to build this, or I could use just the WordPress for just the database part of it and the REST API and have some type of application on it because it scales well and it caches or whatever it may be.</p>\n\n\n\n<p class="wp-block-paragraph">But I feel like people are starting to scoff at the walled gardens a little bit more, and I&#8217;m seeing that there&#8217;s a resurgence in things like RSS. I&#8217;m seeing new RSS readers are popping up. People are leaning towards the Fediverse. People are blogging more, having their own website instead of just their business on Facebook, right? Because that can get taken away.</p>\n\n\n\n<p class="wp-block-paragraph">We saw with Twitter how they just chose to close their platform. And embeds no longer work in WordPress because they shut down oEmbeds. And I feel like it changes every month, but there&#8217;s times where you have to log in to see a post, or you can&#8217;t see a post, or you can see one post and then you can&#8217;t see any more that&#8217;s shared externally. Yeah, so it gives you more control.</p>\n\n\n\n<p class="wp-block-paragraph">[00:40:02] <strong>Nathan Wrigley:</strong> Yeah, I think that&#8217;s really interesting. And I also noticed that swing. Obviously, I don&#8217;t have any broader data. I can only point to the things in my life, the little intuitions that I&#8217;m gaining. But I see the same thing. I see an interest in AI, so we&#8217;ll just put that to one side for a moment. But in terms of the closed platforms, I do see that the people that I know who are significantly younger than me, they have intuitions around that, and they&#8217;ve kind of figured out for themselves that this is not great. It seems to be a vehicle to serve me ads, and I wonder what the incentive is for the stuff that I&#8217;m seeing, and maybe it&#8217;s kind of pushing me off in one direction politically and all of that.</p>\n\n\n\n<p class="wp-block-paragraph">And yeah, this resurgence of RSS, of the blog. I know it&#8217;s hard to talk about, but it&#8217;s almost like we&#8217;re doing some sort of archaeology in the internet space. We&#8217;ve gone back to something older. We kind of dug up the relics from the past and we found that they&#8217;re still usable. They&#8217;re still there.</p>\n\n\n\n<p class="wp-block-paragraph">It&#8217;ll be so interesting. But I think if it was just the RSS and it was just the open nature of things, I think that&#8217;s going to be a hard sell. But throw AI into the mix, this capacity for somebody with very little relationship with writing code who can get something credible out. Now, it may not be robust, it may have security problems here and there. The accessibility may be something that needs to be addressed and what have you. But who can argue with the excitement of it.</p>\n\n\n\n<p class="wp-block-paragraph">You know, you tell a computer to make a colourful website that&#8217;s got rainbows and pictures of cats, and sure enough, two minutes later you have a website with rainbows and pictures of cats. And that wasn&#8217;t possible until just a couple of years ago. And so I think we&#8217;ve got the tools. I think there&#8217;s things that we can deploy. AI seems to be the primary one at the moment. Let&#8217;s hope that that continues to be sustainable.</p>\n\n\n\n<p class="wp-block-paragraph">But that&#8217;s interesting. That gives me some hope. And the way that you&#8217;ve encapsulated it, open source combined with things like AI. Trying to get Meetups back. Trying to combine it with educational initiatives. Trying to combine it with WordCamps and releases.</p>\n\n\n\n<p class="wp-block-paragraph">[00:41:52] <strong>Jonathan Desrosiers:</strong> You mentioned something that&#8217;s important there in that it&#8217;s very easy for someone to get something built that they need specifically, right? And I think that&#8217;s where we&#8217;re at right now where AI is, like I said, is empowering, but more on a personal level. Once you need to scale those things, that&#8217;s when it gets difficult.</p>\n\n\n\n<p class="wp-block-paragraph">And it&#8217;s a rollercoaster of, oh my God, there&#8217;s going to be no software. And then, oh, look at all this crappy software that AI built. We are always going to have a job. And then it&#8217;s like up and down all throughout time as new tools get released. And it definitely matches what I&#8217;m seeing is like the personal empowerment level, they could take that and run with it and build this really massive thing, or they could just build something that they just want, that does specifically what they want, that they haven&#8217;t found out there that it accomplishes.</p>\n\n\n\n<p class="wp-block-paragraph">And I think that another aspect of that is I&#8217;m noticing that a lot of people that you may not have thought would try things in the physical world on their own are more likely to do so as well. So maybe changing their faucet, or doing a landscaping project or something. I feel like we&#8217;ve had YouTube tutorials, right, has been a big thing for maybe a decade, right? But I feel like AI has unlocked a new level of empowerment where people feel more confident to try things because of the knowledge that&#8217;s available to them in different ways.</p>\n\n\n\n<p class="wp-block-paragraph">[00:43:09] <strong>Nathan Wrigley:</strong> The year 2026 is going to be punctuated by WordCamps. It&#8217;s going to be punctuated by WordPress releases. Hopefully we will start to see the needle move on educational initiatives, and maybe some younger people joining in with the community.</p>\n\n\n\n<p class="wp-block-paragraph">That has been a fascinating chat, Jonathan. I really appreciate that, getting your insight into what I think we both hope is going to happen in the WordPress project. That it will still be relevant in 10 years time, and that there&#8217;ll be children who are now, not old enough to be using computers, in a decade, they&#8217;ll be coming on podcasts like this, and hosting podcasts like this, and being involved in the community that we love so very much.</p>\n\n\n\n<p class="wp-block-paragraph">Where can we find you, Jonathan? If people want to talk to you and have a bit of a natter, where&#8217;s the best place to locate you?</p>\n\n\n\n<p class="wp-block-paragraph">[00:43:48] <strong>Jonathan Desrosiers:</strong> My website is just jonathandesrosiers.com. I&#8217;m desrosej pretty much everywhere on the internet. I try to keep it consistent and easy. And you can also, of course, find me in the wordpress.org Slack.</p>\n\n\n\n<p class="wp-block-paragraph">[00:44:01] <strong>Nathan Wrigley:</strong> I will link to all of those in the show notes. So if you go to the wptavern.com website, search for the episode with Jonathan Desrosiers, you&#8217;ll be able to find all of the links probably at the bottom underneath the transcript and the preamble. Go and have a look down there and hopefully we&#8217;ll be speaking soon. I&#8217;ll probably see you in Mumbai in a few weeks time. Take care, Jonathan.</p>\n\n\n\n<p class="wp-block-paragraph">[00:44:21] <strong>Jonathan Desrosiers:</strong> Thank you. Look forward to it, and hopefully I see your listeners there as well.</p>\n</div></details>\n\n\n\n<p class="wp-block-paragraph">On the podcast today we have <a href="https://profiles.wordpress.org/desrosj/">Jonathan Desrosiers</a>.</p>\n\n\n\n<p class="wp-block-paragraph">Jonathan has been involved with WordPress for almost two decades, both as a user and a contributor. He’s a principal software engineer at Bluehost, where his role sees him sponsored to work on WordPress through the Five for the Future program. Over the years, he’s become a Core committer, and has spent many hours thinking about how to enhance the contributor experience and make it easier for people to get involved in the project.</p>\n\n\n\n<p class="wp-block-paragraph">In this episode we discuss how WordPress releases might be made more impactful by synchronizing them with flagship community events like WordCamps and State of the Word. A recent experiment of combining a major release with a live event sparked some excitement, and Jonathan shares insights on the logistics behind such synchronized moments, the challenges posed by international holidays and regional scheduling, and the broader vision for connecting releases with community gatherings.</p>\n\n\n\n<p class="wp-block-paragraph">We also get into the changing landscape of the WordPress community, how it’s recovering from the effects of COVID, the struggle to rebuild local Meetups, and efforts (like mentorship and educational initiatives) to bring in new contributors, particularly from younger generations. Jonathan reflects on the importance of making release moments engaging and fun, akin to the anticipation of a new TV series or software launch, and the role of AI and open source in empowering a new wave of builders.</p>\n\n\n\n<p class="wp-block-paragraph">If you’re interested in how release cycles, community events, and contributor onboarding are evolving in WordPress, or what the future might hold for the platform and its community, this episode is for you.</p>\n\n\n\n<h2 class="wp-block-heading">Useful links</h2>\n\n\n\n<p class="wp-block-paragraph"><a href="https://jonathandesrosiers.com">Jonathan&#8217;s website</a></p>\n\n\n\n<p class="wp-block-paragraph"><a href="https://profiles.wordpress.org/desrosj/">Jonathan on WordPress.org</a></p>\n\n\n\n<p class="wp-block-paragraph"><a href="https://x.com/desrosj">Jonathan on X</a></p>\n\n\n\n<p class="wp-block-paragraph"><a href="https://www.bluehost.com">Bluehost</a></p>\n\n\n\n<p class="wp-block-paragraph"><a href="https://wordpress.org/five-for-the-future/">Five for the Future</a></p>\n\n\n\n<p class="wp-block-paragraph"><a href="https://wordpress.com/blog/2025/12/04/state-of-the-word-2025-recap/">State of the Word 2025 recap</a></p>\n\n\n\n<p class="wp-block-paragraph"><a href="https://events.wordpress.org/campusconnect/">WP Campus Connect</a></p>\n\n\n\n<p class="wp-block-paragraph"><a href="https://wordpress.org/education/credits/">WordPress Credits</a></p>\n\n\n\n<p class="wp-block-paragraph">Mary Hubbard on the importance of education &#8211; <a href="https://make.wordpress.org/project/2026/01/23/big-picture-goals-for-2026/">Big Picture Goals for 2026</a></p>\n\n\n\n<p class="wp-block-paragraph"><a href="https://en.wikipedia.org/wiki/Fediverse">Fediverse</a></p>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 25 Feb 2026 15:00:00 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:14:"Nathan Wrigley";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:49;a:6:{s:4:"data";s:21:"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:64:"Open Channels FM: AI Sidekick Features for WooCommerce Merchants";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:34:"https://openchannels.fm/?p=1650257";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:71:"https://openchannels.fm/ai-sidekick-features-for-woocommerce-merchants/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:235:"Katie Keith asks about an AI assistant for WooCommerce like Shopify''s Sidekick. James LePage confirms upcoming features will simplify custom AI integration, enabling easier plugin installations and enhanced merchant management support.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 25 Feb 2026 12:32:05 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:8:"Bob Dunn";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:9:{s:6:"server";s:5:"nginx";s:4:"date";s:29:"Wed, 18 Mar 2026 03:07:39 GMT";s:12:"content-type";s:8:"text/xml";s:13:"last-modified";s:29:"Wed, 18 Mar 2026 03:00:21 GMT";s:4:"vary";s:15:"Accept-Encoding";s:15:"x-frame-options";s:10:"SAMEORIGIN";s:16:"content-encoding";s:4:"gzip";s:7:"alt-svc";s:19:"h3=":443"; ma=86400";s:4:"x-nc";s:9:"HIT ord 1";}s:5:"build";i:1764714897;s:21:"cache_expiration_time";i:1773846459;s:23:"__cache_expiration_time";i:1773846459;}', 'off');
INSERT INTO `wpf1_options` VALUES
(6278, '_transient_ekit_element_manager_compatibity', '1', 'on'),
(9500, '_site_transient_update_core', 'O:8:"stdClass":4:{s:7:"updates";a:1:{i:0;O:8:"stdClass":10:{s:8:"response";s:6:"latest";s:8:"download";s:59:"https://downloads.wordpress.org/release/wordpress-6.9.4.zip";s:6:"locale";s:2:"ar";s:8:"packages";O:8:"stdClass":5:{s:4:"full";s:59:"https://downloads.wordpress.org/release/wordpress-6.9.4.zip";s:10:"no_content";s:70:"https://downloads.wordpress.org/release/wordpress-6.9.4-no-content.zip";s:11:"new_bundled";s:71:"https://downloads.wordpress.org/release/wordpress-6.9.4-new-bundled.zip";s:7:"partial";s:0:"";s:8:"rollback";s:0:"";}s:7:"current";s:5:"6.9.4";s:7:"version";s:5:"6.9.4";s:11:"php_version";s:6:"7.2.24";s:13:"mysql_version";s:5:"5.5.5";s:11:"new_bundled";s:3:"6.7";s:15:"partial_version";s:0:"";}}s:12:"last_checked";i:1773817836;s:15:"version_checked";s:5:"6.9.4";s:12:"translations";a:0:{}}', 'off'),
(9505, 'elementor_atomic_cache_validity__component-styles-related-posts', 'a:2:{s:5:"state";b:0;s:8:"children";a:8:{i:444;a:2:{s:5:"state";b:1;s:4:"meta";a:0:{}}i:188;a:2:{s:5:"state";b:1;s:4:"meta";a:0:{}}i:218;a:2:{s:5:"state";b:1;s:4:"meta";a:0:{}}i:161;a:2:{s:5:"state";b:1;s:4:"meta";a:0:{}}i:237;a:2:{s:5:"state";b:1;s:4:"meta";a:0:{}}i:1;a:2:{s:5:"state";b:1;s:4:"meta";a:0:{}}i:61;a:2:{s:5:"state";b:1;s:4:"meta";a:0:{}}i:727;a:2:{s:5:"state";b:1;s:4:"meta";a:0:{}}}}', 'off'),
(9506, '_elementor_assets_data', 'a:1:{s:3:"svg";a:1:{s:9:"font-icon";a:19:{s:14:"eicon-menu-bar";a:2:{s:7:"content";a:4:{s:5:"width";i:1000;s:6:"height";i:1000;s:4:"path";s:279:"M104 333H896C929 333 958 304 958 271S929 208 896 208H104C71 208 42 237 42 271S71 333 104 333ZM104 583H896C929 583 958 554 958 521S929 458 896 458H104C71 458 42 487 42 521S71 583 104 583ZM104 833H896C929 833 958 804 958 771S929 708 896 708H104C71 708 42 737 42 771S71 833 104 833Z";s:3:"key";s:14:"eicon-menu-bar";}s:7:"version";s:6:"5.13.0";}s:11:"eicon-close";a:2:{s:7:"content";a:4:{s:5:"width";i:1000;s:6:"height";i:1000;s:4:"path";s:361:"M742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z";s:3:"key";s:11:"eicon-close";}s:7:"version";s:6:"5.13.0";}s:14:"fas-angle-down";a:2:{s:7:"content";a:4:{s:5:"width";i:320;s:6:"height";i:512;s:4:"path";s:190:"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z";s:3:"key";s:14:"fas-angle-down";}s:7:"version";s:6:"5.15.3";}s:10:"eicon-play";a:2:{s:7:"content";a:4:{s:5:"width";i:1000;s:6:"height";i:1000;s:4:"path";s:413:"M838 162C746 71 633 25 500 25 371 25 258 71 163 162 71 254 25 367 25 500 25 633 71 746 163 837 254 929 367 979 500 979 633 979 746 933 838 837 929 746 975 633 975 500 975 367 929 254 838 162M808 192C892 279 933 379 933 500 933 621 892 725 808 808 725 892 621 938 500 938 379 938 279 896 196 808 113 725 67 621 67 500 67 379 108 279 196 192 279 108 383 62 500 62 621 62 721 108 808 192M438 392V642L642 517 438 392Z";s:3:"key";s:10:"eicon-play";}s:7:"version";s:6:"5.13.0";}s:16:"fas-chevron-down";a:2:{s:7:"content";a:4:{s:5:"width";i:448;s:6:"height";i:512;s:4:"path";s:279:"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z";s:3:"key";s:16:"fas-chevron-down";}s:7:"version";s:6:"5.15.3";}s:14:"fas-chevron-up";a:2:{s:7:"content";a:4:{s:5:"width";i:448;s:6:"height";i:512;s:4:"path";s:284:"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z";s:3:"key";s:14:"fas-chevron-up";}s:7:"version";s:6:"5.15.3";}s:18:"fas-map-marker-alt";a:2:{s:7:"content";a:4:{s:5:"width";i:384;s:6:"height";i:512;s:4:"path";s:244:"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z";s:3:"key";s:18:"fas-map-marker-alt";}s:7:"version";s:6:"5.15.3";}s:12:"fab-facebook";a:2:{s:7:"content";a:4:{s:5:"width";i:512;s:6:"height";i:512;s:4:"path";s:264:"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z";s:3:"key";s:12:"fab-facebook";}s:7:"version";s:6:"5.15.3";}s:13:"fab-instagram";a:2:{s:7:"content";a:4:{s:5:"width";i:448;s:6:"height";i:512;s:4:"path";s:922:"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z";s:3:"key";s:13:"fab-instagram";}s:7:"version";s:6:"5.15.3";}s:16:"eicon-caret-down";a:2:{s:7:"content";a:4:{s:5:"width";d:571.4;s:6:"height";d:571.4;s:4:"path";s:118:"M571 393Q571 407 561 418L311 668Q300 679 286 679T261 668L11 418Q0 407 0 393T11 368 36 357H536Q550 357 561 368T571 393Z";s:3:"key";s:16:"eicon-caret-down";}s:7:"version";s:6:"5.13.0";}s:10:"fas-coffee";a:2:{s:7:"content";a:4:{s:5:"width";i:640;s:6:"height";i:512;s:4:"path";s:236:"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z";s:3:"key";s:10:"fas-coffee";}s:7:"version";s:6:"5.15.3";}s:8:"fas-pray";a:2:{s:7:"content";a:4:{s:5:"width";i:384;s:6:"height";i:512;s:4:"path";s:470:"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z";s:3:"key";s:8:"fas-pray";}s:7:"version";s:6:"5.15.3";}s:18:"fas-map-marked-alt";a:2:{s:7:"content";a:4:{s:5:"width";i:576;s:6:"height";i:512;s:4:"path";s:645:"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z";s:3:"key";s:18:"fas-map-marked-alt";}s:7:"version";s:6:"5.15.3";}s:18:"eicon-chevron-left";a:2:{s:7:"content";a:4:{s:5:"width";i:1000;s:6:"height";i:1000;s:4:"path";s:281:"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z";s:3:"key";s:18:"eicon-chevron-left";}s:7:"version";s:6:"5.13.0";}s:19:"eicon-chevron-right";a:2:{s:7:"content";a:4:{s:5:"width";i:1000;s:6:"height";i:1000;s:4:"path";s:281:"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z";s:3:"key";s:19:"eicon-chevron-right";}s:7:"version";s:6:"5.13.0";}s:12:"fab-whatsapp";a:2:{s:7:"content";a:4:{s:5:"width";i:448;s:6:"height";i:512;s:4:"path";s:886:"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z";s:3:"key";s:12:"fab-whatsapp";}s:7:"version";s:6:"5.15.3";}s:19:"fab-facebook-square";a:2:{s:7:"content";a:4:{s:5:"width";i:448;s:6:"height";i:512;s:4:"path";s:258:"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z";s:3:"key";s:19:"fab-facebook-square";}s:7:"version";s:6:"5.15.3";}s:17:"fab-app-store-ios";a:2:{s:7:"content";a:4:{s:5:"width";i:448;s:6:"height";i:512;s:4:"path";s:646:"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z";s:3:"key";s:17:"fab-app-store-ios";}s:7:"version";s:6:"5.15.3";}s:15:"fab-google-play";a:2:{s:7:"content";a:4:{s:5:"width";i:512;s:6:"height";i:512;s:4:"path";s:246:"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z";s:3:"key";s:15:"fab-google-play";}s:7:"version";s:6:"5.15.3";}}}}', 'auto'),
(9898, '_site_transient_timeout_wp_theme_files_patterns-77f36dedd4fc28c5b8cd9994bc4c939d', '1773805054', 'off'),
(9899, '_site_transient_wp_theme_files_patterns-77f36dedd4fc28c5b8cd9994bc4c939d', 'a:2:{s:7:"version";b:0;s:8:"patterns";a:0:{}}', 'off'),
(9900, '_site_transient_timeout_community-events-97f93d8dedc9196c45843f29fa90a2c1', '1773846459', 'off'),
(9901, '_site_transient_community-events-97f93d8dedc9196c45843f29fa90a2c1', 'a:4:{s:9:"sandboxed";b:0;s:5:"error";N;s:8:"location";a:1:{s:2:"ip";s:12:"203.123.67.0";}s:6:"events";a:0:{}}', 'off'),
(9902, '_site_transient_timeout_feed_9bbd59226dc36b9b26cd43f15694c5c3', '1773846459', 'off'),
(9903, '_site_transient_feed_9bbd59226dc36b9b26cd43f15694c5c3', 'a:6:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:3:"\n\n\n";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:52:"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\n \n	\n		\n		\n		\n		\n		\n		\n		\n		\n		\n	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:8:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:14:"WordPress News";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:26:"https://wordpress.org/news";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:59:"The latest news about WordPress and the WordPress community";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:13:"lastBuildDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 12 Mar 2026 16:23:38 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"language";a:1:{i:0;a:5:{s:4:"data";s:5:"en-US";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:9:"generator";a:1:{i:0;a:5:{s:4:"data";s:40:"https://wordpress.org/?v=7.0-beta5-62039";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:5:"image";a:1:{i:0;a:6:{s:4:"data";s:11:"\n	\n	\n	\n	\n	\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:5:{s:3:"url";a:1:{i:0;a:5:{s:4:"data";s:29:"https://s.w.org/favicon.ico?2";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:14:"WordPress News";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:26:"https://wordpress.org/news";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:5:"width";a:1:{i:0;a:5:{s:4:"data";s:2:"32";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:6:"height";a:1:{i:0;a:5:{s:4:"data";s:2:"32";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}s:4:"item";a:10:{i:0;a:6:{s:4:"data";s:72:"\n		\n		\n		\n		\n		\n				\n		\n		\n		\n		\n		\n		\n\n					\n										\n					\n		\n		\n			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:20:"WordPress 7.0 Beta 5";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"https://wordpress.org/news/2026/03/wordpress-7-0-beta-5/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 12 Mar 2026 15:49:14 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:6:{i:0;a:5:{s:4:"data";s:7:"General";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:3:"7-0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:4:"beta";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:11:"development";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:7:"release";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=20189";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:342:"WordPress 7.0 Beta 5 is ready for download and testing! This version of the WordPress software is still under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it’s recommended to test Beta 5 on a test server and site.WordPress 7.0 Beta 5 can be tested [&#8230;]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:18:"Ahmed Kabir Chaion";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:6719:"\n<p class="wp-block-paragraph">WordPress 7.0 Beta 5 is ready for download and testing!</p>\n\n\n\n<p class="wp-block-paragraph"><strong>This version of the WordPress software is still under development</strong>. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, it’s recommended to test Beta 5 on a test server and site.WordPress 7.0 Beta 5 can be tested using any of the following methods:</p>\n\n\n\n<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Plugin</strong></td><td>Install and activate the <a href="https://wordpress.org/plugins/wordpress-beta-tester/">WordPress Beta Tester</a> plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream.)</td></tr><tr><td><strong>Direct Download</strong></td><td>Download the <a href="https://wordpress.org/wordpress-7.0-beta5.zip">Beta 5 version (zip)</a> and install it on a WordPress website.</td></tr><tr><td><strong>Command Line</strong></td><td>Use this <a href="https://make.wordpress.org/cli/">WP-CLI</a> command:<br><code>wp core update --version=7.0-beta</code>5</td></tr><tr><td><strong>WordPress Playground</strong></td><td>Use the <a href="https://playground.wordpress.net/?php=8.0&amp;wp=beta&amp;networking=no&amp;language=&amp;multisite=no&amp;random=y4q1rn88xn">WordPress Playground instance</a> to test the software directly in your browser.  No setup is required – just click and go! </td></tr></tbody></table></figure>\n\n\n\n<p class="wp-block-paragraph">The scheduled final release date for WordPress 7.0 is still <strong>April 9, 2026</strong>. &nbsp;The full <a href="https://make.wordpress.org/core/2026/02/12/wordpress-7-0-release-party-schedule/">release schedule can be found here</a>. Your help testing Beta and RC versions is vital to making this release as stable and powerful as possible. Thank you to everyone who helps with testing!</p>\n\n\n\n<p class="wp-block-paragraph">Please continue checking the <a href="https://make.wordpress.org/core/">Make WordPress Core blog</a> for <a href="https://make.wordpress.org/core/tag/7-0">7.0-related posts</a> in the coming weeks for more information. <strong>What’s new in WordPress 7.0</strong>? Check out the <a href="https://wordpress.org/news/2026/02/wordpress-7-0-beta-1/">Beta 1</a>, <a href="https://wordpress.org/news/2026/02/wordpress-7-0-beta-2/">Beta 2</a>, <a href="https://wordpress.org/news/2026/03/wordpress-7-0-beta-3/">Beta 3</a> and <a href="https://wordpress.org/news/2026/03/wordpress-6-9-3-and-7-0-beta-4/">Beta 4</a> announcements for details and highlights.</p>\n\n\n\n<h2 class="wp-block-heading">How to test this release</h2>\n\n\n\n<p class="wp-block-paragraph">Your help testing the WordPress 7.0 Beta 5 version is key to ensuring everything in the release is the best it can be. While testing the upgrade process is essential, trying out new features is equally important. This <a href="https://make.wordpress.org/test/2026/02/20/help-test-wordpress-7-0/">detailed guide</a> will walk you through testing features in WordPress 7.0.</p>\n\n\n\n<p class="wp-block-paragraph">If you encounter an issue, please report it to the <a href="https://wordpress.org/support/forum/alphabeta/">Alpha/Beta area</a> of the support forums or directly to <a href="https://core.trac.wordpress.org/newticket">WordPress Trac</a> if you are comfortable writing a reproducible bug report. You can also check your issue against a list of <a href="https://core.trac.wordpress.org/tickets/major">known bugs</a>.Curious about testing releases in general? Follow along with the <a href="https://make.wordpress.org/test/">testing initiatives in Make Core</a> and join the <a href="https://wordpress.slack.com/messages/core-test/">#core-test channel</a> on <a href="https://wordpress.slack.com/">Making WordPress Slack</a>.</p>\n\n\n\n<h2 class="wp-block-heading">Beta 5 updates and highlights</h2>\n\n\n\n<p class="wp-block-paragraph">WordPress 7.0 Beta 5 contains more than 101 updates and fixes since the Beta 3 release.</p>\n\n\n\n<p class="wp-block-paragraph">Each beta cycle focuses on bug fixes, and more are on the way with your help through testing. You can browse the technical details for all issues addressed since Beta 3 using these links:</p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://github.com/WordPress/gutenberg/commits/wp/7.0?since=2026-03-05&amp;until=2026-03-12">GitHub commits</a> since March 5, 2026</li>\n\n\n\n<li><a href="https://core.trac.wordpress.org/query?status=closed&amp;changetime=03%2F05%2F2026..03%2F12%2F2026&amp;milestone=7.0&amp;group=component&amp;col=id&amp;col=milestone&amp;col=owner&amp;col=type&amp;col=priority&amp;order=id">Closed Trac tickets</a> since March 5, 2026</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph">Issues addressed since Beta 4:</p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://github.com/WordPress/gutenberg/commits/wp/7.0?since=2026-03-10&amp;until=2026-03-12">GitHub commits</a> since March 10, 2026</li>\n\n\n\n<li><a href="https://core.trac.wordpress.org/query?status=closed&amp;changetime=03%2F10%2F2026..03%2F12%2F2026&amp;milestone=7.0&amp;group=component&amp;col=id&amp;col=milestone&amp;col=owner&amp;col=type&amp;col=priority&amp;order=id">Closed Trac tickets</a> since March 10, 2026</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>WordPress 7.0 Beta 5 contains a new feature!</strong></p>\n\n\n\n<p class="wp-block-paragraph">Instantly access all the tools you need with a single click using the <strong>new Command Palette shortcut in the Omnibar</strong>! In 7.0 Beta 5, logged-in editors will see a field with a <code>⌘K</code> or <code>Ctrl+K</code> symbol in the upper admin bar that unfurls the command palette when clicked. The new command palette entry point streamlines navigation and customization, giving you full control from anywhere on your site &#8211; whether you’re editing, designing or just browsing plugins.</p>\n\n\n\n<h2 class="wp-block-heading">A Beta 5 haiku</h2>\n\n\n\n<p class="wp-block-paragraph"><em>A smooth melody</em></p>\n\n\n\n<p class="wp-block-paragraph"><em>Beta 5 plays on its strings.</em></p>\n\n\n\n<p class="wp-block-paragraph"><em>Seven brings good things.</em></p>\n\n\n\n<p class="has-text-align-right wp-block-paragraph"><em>Props to <a href=''https://profiles.wordpress.org/amykamala/'' class=''mention''><span class=''mentions-prefix''>@</span>amykamala</a>, <a href=''https://profiles.wordpress.org/annezazu/'' class=''mention''><span class=''mentions-prefix''>@</span>annezazu</a> and <a href=''https://profiles.wordpress.org/4thhubbard/'' class=''mention''><span class=''mentions-prefix''>@</span>4thhubbard</a> for proofreading and review.</em></p>\n\n\n\n<p class="wp-block-paragraph"></p>\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:7:"post-id";a:1:{i:0;a:5:{s:4:"data";s:5:"20189";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:63:"\n		\n		\n		\n		\n		\n				\n		\n		\n		\n\n					\n										\n					\n		\n		\n			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:23:"WordPress 6.9.4 Release";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:59:"https://wordpress.org/news/2026/03/wordpress-6-9-4-release/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 11 Mar 2026 15:34:58 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:3:{i:0;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:14:"minor-releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:8:"releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=20184";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:366:"WordPress 6.9.4 is now available WordPress 6.9.2 and WordPress 6.9.3 were released yesterday, addressing 10 security issues and a bug that affected template file loading on a limited number of sites. The WordPress Security Team has discovered that not all of the security fixes were fully applied, therefore 6.9.4 has been released containing the necessary [&#8230;]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"John Blackbourn";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:2240:"\n<h2 class="wp-block-heading">WordPress 6.9.4 is now available</h2>\n\n\n\n<p class="wp-block-paragraph"><a href="https://wordpress.org/news/2026/03/wordpress-6-9-2-release/">WordPress 6.9.2</a> and <a href="https://wordpress.org/news/2026/03/wordpress-6-9-3-and-7-0-beta-4/">WordPress 6.9.3</a> were released yesterday, addressing 10 security issues and a bug that affected template file loading on a limited number of sites.</p>\n\n\n\n<p class="wp-block-paragraph">The WordPress Security Team has discovered that not all of the security fixes were fully applied, therefore 6.9.4 has been released containing the necessary additional fixes.</p>\n\n\n\n<p class="wp-block-paragraph">Because this is a security release,<strong> it is recommended that you update your sites immediately</strong>.</p>\n\n\n\n<p class="wp-block-paragraph">You can <a href="https://wordpress.org/wordpress-6.9.4.zip">download WordPress 6.9.4 from WordPress.org</a>, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. If you have sites that support automatic background updates, the update process will begin automatically.</p>\n\n\n\n<p class="wp-block-paragraph">For more information on WordPress 6.9.4, please visit the <a href="https://wordpress.org/documentation/wordpress-version/version-6-9-4/">version page on the HelpHub site</a>.</p>\n\n\n\n<h2 class="wp-block-heading">Security updates included in this release</h2>\n\n\n\n<p class="wp-block-paragraph">The security team would like to thank the contributors who reported and investigated this issue, in particular <a href="https://profiles.wordpress.org/kraftner">Thomas Kräftner</a> for his responsible disclosure. The security issues that are resolved in 6.9.4 are:</p>\n\n\n\n<ul class="wp-block-list">\n<li>A PclZip path traversal issue reported independently by <a href="https://profiles.wordpress.org/francescocarlucci/">Francesco Carlucci</a> and <a href="https://profiles.wordpress.org/kaminuma/">kaminuma</a></li>\n\n\n\n<li>An authorization bypass on the Notes feature reported by <a href="https://profiles.wordpress.org/kaminuma/">kaminuma</a></li>\n\n\n\n<li>An XXE in the external getID3 library reported by <a href="https://profiles.wordpress.org/regex33/">Youssef Achtatal</a></li>\n</ul>\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:7:"post-id";a:1:{i:0;a:5:{s:4:"data";s:5:"20184";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:57:"\n		\n		\n		\n		\n		\n				\n		\n\n					\n										\n					\n		\n		\n			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:35:"Your Browser Becomes Your WordPress";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:59:"https://wordpress.org/news/2026/03/announcing-my-wordpress/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 11 Mar 2026 13:00:00 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:11:"Development";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=19831";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:341:"For nearly two decades, WordPress has been known for a simple, powerful idea: that anyone should be able to get online and start creating with minimal friction. The famous five-minute install captured that spirit for an earlier era of the web. Today, we’re introducing my.WordPress.net, a new take on that idea designed for a new [&#8230;]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:14:"Brandon Payton";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:15642:"\n<p class="wp-block-paragraph">For nearly two decades, WordPress has been known for a simple, powerful idea: that anyone should be able to get online and start creating with minimal friction. The famous five-minute install captured that spirit for an earlier era of the web. Today, we’re introducing <strong><a href="https://my.wordpress.net/">my.WordPress.net</a></strong>, a new take on that idea designed for a new generation of creators.</p>\n\n\n\n<figure class="wp-block-image size-large"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="1024" height="421" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image1-revised.png?resize=1024%2C421&#038;ssl=1" alt="" class="wp-image-20049" srcset="https://i0.wp.com/wordpress.org/news/files/2026/02/image1-revised.png?resize=1024%2C421&amp;ssl=1 1024w, https://i0.wp.com/wordpress.org/news/files/2026/02/image1-revised.png?resize=300%2C123&amp;ssl=1 300w, https://i0.wp.com/wordpress.org/news/files/2026/02/image1-revised.png?resize=768%2C316&amp;ssl=1 768w, https://i0.wp.com/wordpress.org/news/files/2026/02/image1-revised.png?resize=1536%2C632&amp;ssl=1 1536w, https://i0.wp.com/wordpress.org/news/files/2026/02/image1-revised.png?w=1999&amp;ssl=1 1999w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>\n\n\n\n<p class="wp-block-paragraph">With my.WordPress.net, WordPress runs entirely and persistently in your browser. There’s no sign-up, no hosting plan, and no domain decision standing between you and getting started. Built on <a href="https://wordpress.org/playground/">WordPress Playground</a>, my.WordPress.net takes the same technology that powers instant WordPress demos and turns it into something permanent and personal. This isn’t a temporary environment meant to be discarded. It’s a WordPress that stays with you.</p>\n\n\n\n<h2 class="wp-block-heading"><strong>New Ways to WordPress</strong></h2>\n\n\n\n<p class="wp-block-paragraph">When you open my.WordPress.net, you’re placed directly into a complete WordPress environment that runs entirely in your browser. What makes this approach meaningful is not just where WordPress runs, but how it changes the relationship between people and the software itself. By removing the need to sign up or make early decisions about hosting and visibility, my.WordPress.net reframes WordPress as a space you can enter and work within, rather than a service you have to configure before you begin.</p>\n\n\n\n<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">\n<p class="wp-block-paragraph">“This takes WordPress from being framed as something that is democratizing publishing to democratizing digital sovereignty.” &#8211; <a href="https://profiles.wordpress.org/akirk/">Alex Kirk</a></p>\n</blockquote>\n\n\n\n<p class="wp-block-paragraph">Seen through that lens, my.WordPress.net is not just about convenience. As you don’t need to choose a hosting provider, your WordPress belongs entirely to you. In a publishing environment, you’d briefly interact with WordPress as you prepare your next post. In a personal setting, it becomes a place you shape and return to. That change unlocks new ways of thinking about what WordPress can be.</p>\n\n\n\n<h2 class="wp-block-heading"><strong>Permanently and Privately Yours</strong></h2>\n\n\n\n<p class="wp-block-paragraph">Because sites on my.WordPress.net are private by default and not accessible from the public internet, they don’t behave like traditional websites. They aren’t optimized for traffic, discovery, or presentation, and they don’t need to be. Instead, WordPress becomes a personal environment where ideas can exist before they are ready to be shared, or where they may never be shared at all.</p>\n\n\n\n<p class="wp-block-paragraph">This changes how WordPress can be used day to day. It becomes a place to think, to draft, to organize, and to experiment without pressure, whether that means writing privately, collecting research, or building small tools for personal use. Learning also fits naturally into this model, since people can explore plugins, themes, and features inside a real WordPress environment where mistakes are expected and recoverable.</p>\n\n\n\n<p class="wp-block-paragraph">This turns WordPress into a personal workspace. It becomes a place for thinking, learning, prototyping, and tinkering, where exploration matters more than outcomes. In that role, WordPress shifts from being something you prepare for others to visit into something you actively work inside, adapting to how you want to create and learn over time.</p>\n\n\n\n<h2 class="wp-block-heading"><strong>Sparking Creativity with Apps</strong></h2>\n\n\n\n<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" width="1024" height="566" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image4-revised.png?resize=1024%2C566&#038;ssl=1" alt="" class="wp-image-20046" srcset="https://i0.wp.com/wordpress.org/news/files/2026/02/image4-revised.png?resize=1024%2C566&amp;ssl=1 1024w, https://i0.wp.com/wordpress.org/news/files/2026/02/image4-revised.png?resize=300%2C166&amp;ssl=1 300w, https://i0.wp.com/wordpress.org/news/files/2026/02/image4-revised.png?resize=768%2C425&amp;ssl=1 768w, https://i0.wp.com/wordpress.org/news/files/2026/02/image4-revised.png?resize=1536%2C849&amp;ssl=1 1536w, https://i0.wp.com/wordpress.org/news/files/2026/02/image4-revised.png?w=1999&amp;ssl=1 1999w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>\n\n\n\n<p class="wp-block-paragraph">To make these ideas concrete, my.WordPress.net includes an App Catalog with pre-configured experiences designed specifically for personal use, built with <a href="https://wordpress.org/plugins/">WordPress plugins</a>. These examples highlight how WordPress can function when it’s private, persistent, and easy to experiment with. Each app installs with a single click and configures itself automatically.</p>\n\n\n\n<h3 class="wp-block-heading"><strong>Personal CRM</strong></h3>\n\n\n\n<figure class="wp-block-image size-large"><img data-recalc-dims="1" decoding="async" width="1024" height="531" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image2-revised.png?resize=1024%2C531&#038;ssl=1" alt="" class="wp-image-20048" srcset="https://i0.wp.com/wordpress.org/news/files/2026/02/image2-revised.png?resize=1024%2C531&amp;ssl=1 1024w, https://i0.wp.com/wordpress.org/news/files/2026/02/image2-revised.png?resize=300%2C155&amp;ssl=1 300w, https://i0.wp.com/wordpress.org/news/files/2026/02/image2-revised.png?resize=768%2C398&amp;ssl=1 768w, https://i0.wp.com/wordpress.org/news/files/2026/02/image2-revised.png?resize=1536%2C796&amp;ssl=1 1536w, https://i0.wp.com/wordpress.org/news/files/2026/02/image2-revised.png?w=1999&amp;ssl=1 1999w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>\n\n\n\n<p class="wp-block-paragraph">A private relationship manager designed to help you stay in touch with people who matter to you. Contacts can be grouped, enriched with personal details, and paired with reminders to reconnect. In the demo, this extends to analyzing communication patterns using imported chat data, all stored locally inside WordPress.</p>\n\n\n\n<h3 class="wp-block-heading"><strong>Personal RSS Reader</strong></h3>\n\n\n\n<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="553" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image7-revised.png?resize=1024%2C553&#038;ssl=1" alt="" class="wp-image-20043" srcset="https://i0.wp.com/wordpress.org/news/files/2026/02/image7-revised.png?resize=1024%2C553&amp;ssl=1 1024w, https://i0.wp.com/wordpress.org/news/files/2026/02/image7-revised.png?resize=300%2C162&amp;ssl=1 300w, https://i0.wp.com/wordpress.org/news/files/2026/02/image7-revised.png?resize=768%2C415&amp;ssl=1 768w, https://i0.wp.com/wordpress.org/news/files/2026/02/image7-revised.png?resize=1536%2C829&amp;ssl=1 1536w, https://i0.wp.com/wordpress.org/news/files/2026/02/image7-revised.png?w=1999&amp;ssl=1 1999w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>\n\n\n\n<p class="wp-block-paragraph">Using the <a href="https://wordpress.org/plugins/friends/">Friends plugin</a>, WordPress becomes a quiet, personal feed reader. Instead of relying on external platforms, you can follow sites and creators inside your own WordPress and read at your own pace, free from algorithms or engagement pressure.</p>\n\n\n\n<h3 class="wp-block-heading"><strong>AI Workspace and Knowledge Base</strong></h3>\n\n\n\n<figure data-wp-context="{&quot;galleryId&quot;:&quot;69ba14fb612c8&quot;}" data-wp-interactive="core/gallery" class="wp-block-gallery has-nested-images columns-default wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">\n<figure data-wp-context="{&quot;imageId&quot;:&quot;69ba14fb6175b&quot;}" data-wp-interactive="core/image" data-wp-key="69ba14fb6175b" class="wp-block-image size-large wp-lightbox-container"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="540" 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" data-id="20045" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image5-revised.png?resize=1024%2C540&#038;ssl=1" alt="" class="wp-image-20045" srcset="https://i0.wp.com/wordpress.org/news/files/2026/02/image5-revised.png?resize=1024%2C540&amp;ssl=1 1024w, https://i0.wp.com/wordpress.org/news/files/2026/02/image5-revised.png?resize=300%2C158&amp;ssl=1 300w, https://i0.wp.com/wordpress.org/news/files/2026/02/image5-revised.png?resize=768%2C405&amp;ssl=1 768w, https://i0.wp.com/wordpress.org/news/files/2026/02/image5-revised.png?w=1348&amp;ssl=1 1348w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /><button\n			class="lightbox-trigger"\n			type="button"\n			aria-haspopup="dialog"\n			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"\n			data-wp-init="callbacks.initTriggerButton"\n			data-wp-on--click="actions.showLightbox"\n			data-wp-style--right="state.thisImage.buttonRight"\n			data-wp-style--top="state.thisImage.buttonTop"\n		>\n			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">\n				<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			</svg>\n		</button></figure>\n\n\n\n<figure data-wp-context="{&quot;imageId&quot;:&quot;69ba14fb61c68&quot;}" data-wp-interactive="core/image" data-wp-key="69ba14fb61c68" class="wp-block-image size-large wp-lightbox-container"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="539" 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" data-id="20044" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image6-revised.png?resize=1024%2C539&#038;ssl=1" alt="" class="wp-image-20044" srcset="https://i0.wp.com/wordpress.org/news/files/2026/02/image6-revised.png?resize=1024%2C539&amp;ssl=1 1024w, https://i0.wp.com/wordpress.org/news/files/2026/02/image6-revised.png?resize=300%2C158&amp;ssl=1 300w, https://i0.wp.com/wordpress.org/news/files/2026/02/image6-revised.png?resize=768%2C404&amp;ssl=1 768w, https://i0.wp.com/wordpress.org/news/files/2026/02/image6-revised.png?w=1350&amp;ssl=1 1350w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /><button\n			class="lightbox-trigger"\n			type="button"\n			aria-haspopup="dialog"\n			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"\n			data-wp-init="callbacks.initTriggerButton"\n			data-wp-on--click="actions.showLightbox"\n			data-wp-style--right="state.thisImage.buttonRight"\n			data-wp-style--top="state.thisImage.buttonTop"\n		>\n			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">\n				<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			</svg>\n		</button></figure>\n</figure>\n\n\n\n<p class="wp-block-paragraph">Because my.WordPress.net is powered by WordPress Playground, an AI assistant can safely modify it, empowering you to customize beyond what you&#8217;re used to. Ask it to modify a plugin to your liking, or create an entirely new one, featuring your desired block. Ask it about the data you have stored in your WordPress. The assistant remembers what it touches and makes it easy to share your changes with others. Over time, WordPress itself can become your personal knowledge base that the AI understands and works with.</p>\n\n\n\n<h2 class="wp-block-heading"><strong>Zero Barriers</strong></h2>\n\n\n\n<p class="wp-block-paragraph">my.WordPress.net lowers the barrier to getting started with WordPress to almost nothing. It offers a fast, commitment-free way to explore, learn, and build, whether the result is a long-term personal project or something that eventually moves elsewhere. In that sense, it updates the spirit of the <a href="https://developer.wordpress.org/advanced-administration/before-install/howto-install/">five-minute install</a> for a browser-first web.</p>\n\n\n\n<h3 class="wp-block-heading">What you should know</h3>\n\n\n\n<ul class="wp-block-list">\n<li>Storage starts at roughly 100 MB</li>\n\n\n\n<li>The first launch takes a little longer while WordPress downloads and initializes</li>\n\n\n\n<li>All data stays in your browser and is not uploaded anywhere</li>\n\n\n\n<li>Each device has its own separate installation</li>\n\n\n\n<li>Backups should be downloaded regularly</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading"><strong>Create and explore</strong></h2>\n\n\n\n<p class="wp-block-paragraph">WordPress has always grown through experimentation. People trying things, breaking things, and discovering new ways to use the platform have shaped what WordPress is today.</p>\n\n\n\n<p class="wp-block-paragraph">my.WordPress.net continues that tradition by making experimentation easier and more personal. It’s an invitation to create without pressure, to explore ideas that may never be published, and to use WordPress in ways that fit your life.</p>\n\n\n\n<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-3e41869c wp-block-buttons-is-layout-flex">\n<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://my.wordpress.net/">Start exploring at <strong>my.WordPress.net</strong></a></div>\n</div>\n\n\n\n<hr class="wp-block-separator has-alpha-channel-opacity" />\n\n\n\n<p class="wp-block-paragraph"><em><a href="https://my.wordpress.net/">my.WordPress.net</a> is built on WordPress Playground technology. Learn more at <a href="https://wordpress.org/playground/">WordPress.org/playground</a> or join the conversation in the #meta-playground channel on <a href="https://make.wordpress.org/chat/">WordPress Slack</a>.</em></p>\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:7:"post-id";a:1:{i:0;a:5:{s:4:"data";s:5:"19831";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:63:"\n		\n		\n		\n		\n		\n				\n		\n		\n		\n\n					\n										\n					\n		\n		\n			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:30:"WordPress 6.9.3 and 7.0 beta 4";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:66:"https://wordpress.org/news/2026/03/wordpress-6-9-3-and-7-0-beta-4/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 10 Mar 2026 23:41:33 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:3:{i:0;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:14:"minor-releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:8:"releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=20166";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:361:"WordPress 6.9.2 was released earlier today and addressed 10 security issues. A few users have subsequently reported an issue where the front end of their site was appearing blank after updating to 6.9.2. The issue has been narrowed down to some themes using an unusual approach to loading template files via &#8220;stringable objects&#8221; instead of [&#8230;]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"John Blackbourn";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:5985:"\n<p class="wp-block-paragraph"><a href="https://wordpress.org/news/2026/03/wordpress-6-9-2-release/">WordPress 6.9.2 was released earlier today</a> and addressed 10 security issues.</p>\n\n\n\n<p class="wp-block-paragraph">A few users have subsequently reported an issue where the front end of their site was appearing blank after updating to 6.9.2. The issue has been narrowed down to some themes using an unusual approach to loading template files via &#8220;stringable objects&#8221; instead of primitive strings for file paths.</p>\n\n\n\n<p class="wp-block-paragraph">Although this is is not an officially supported approach to loading template files in WordPress (the <code>template_include</code> filter only accepts a string), it nevertheless caused some sites to break. As a result, the Security Team has decided to address this in a fast follow 6.9.3 release.</p>\n\n\n\n<p class="wp-block-paragraph">As always,<strong> it is recommended that you update your sites to the latest version of WordPress immediately.</strong> This ensures your site is protected by all available security fixes in 6.9.2 and that you will not be affected by the bug fixed in 6.9.3.</p>\n\n\n\n<p class="wp-block-paragraph">Many thanks to those who reported the issue, assisted in narrowing down the problem, and helped with the fix, in particular <a href="https://profiles.wordpress.org/josklever/">Jos Klever</a> who assisted throughout the process.</p>\n\n\n\n<p class="wp-block-paragraph">You can&nbsp;<a href="https://wordpress.org/wordpress-6.9.3.zip">download WordPress 6.9.3 from WordPress.org</a>, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. If you have sites that support automatic background updates, the update process will begin shortly. You don&#8217;t have to do a thing!</p>\n\n\n\n<p class="wp-block-paragraph">For more information on WordPress 6.9.3, please visit the&nbsp;<a href="https://wordpress.org/documentation/wordpress-version/version-6-9-3/">version page on the HelpHub site</a>.</p>\n\n\n\n<h2 class="wp-block-heading">WordPress 7.0 beta 4</h2>\n\n\n\n<p class="wp-block-paragraph">The next major release of WordPress will be&nbsp;<a href="https://make.wordpress.org/core/7-0/">version 7.0</a>, which is planned for April 9, 2026. The Security Team has decided to package a new beta release (7.0 beta 4) to keep everyone protected from the patched vulnerabilities, including the dedicated members of the community focusing their time and effort on testing the upcoming release.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>This will be an additional beta release in the 7.0 release cycle.</strong> The schedule will remain the same going forward, but with five total beta releases instead of the previously planned four. The next 7.0 beta release is still scheduled for Thursday, March 12th.</p>\n\n\n\n<p class="wp-block-paragraph"><strong>This beta version of the WordPress software is still under development</strong>. Please do not install, run, or test WordPress 7.0 beta versions on production or mission-critical websites. Instead, you should evaluate Beta 4 on a test server and site.</p>\n\n\n\n<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Plugin</strong></td><td>Install and activate the <a href="https://wordpress.org/plugins/wordpress-beta-tester/">WordPress Beta Tester</a> plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream.)</td></tr><tr><td><strong>Direct Download</strong></td><td>Download the <a href="https://wordpress.org/wordpress-7.0-beta4.zip">Beta 4 version (zip)</a> and install it on a WordPress website.</td></tr><tr><td><strong>Command Line</strong></td><td>Use this <a href="https://make.wordpress.org/cli/">WP-CLI</a> command: <br><code>wp core update --version=7.0-beta</code>4</td></tr><tr><td><strong>WordPress Playground</strong></td><td>Use the <a href="https://playground.wordpress.net/?php=8.0&amp;wp=beta&amp;networking=no&amp;language=&amp;multisite=no&amp;random=y4q1rn88xn">WordPress Playground instance</a> to test the software directly in your browser.&nbsp; No setup is required – just click and go!&nbsp;</td></tr></tbody></table></figure>\n\n\n\n<h2 class="wp-block-heading">Beta 4 updates and highlights</h2>\n\n\n\n<p class="wp-block-paragraph">WordPress 7.0 Beta 4 contains the ten security patches shipped in WordPress 6.9.2, and more than 49 updates and fixes since the Beta 3 release, including 14 in the Editor and 35 in Core.&nbsp;</p>\n\n\n\n<p class="wp-block-paragraph">Each beta cycle focuses on bug fixes. More are on the way, thanks to your help with testing. You can browse the technical details for all issues addressed since Beta 3 at these links:</p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://github.com/WordPress/gutenberg/compare/f4d8a5803aa2fbe26e7d9af4d17e80a622b7bab8...9b8144036fa5faf75de43d4502ff9809fcf689ad">GitHub commits for 7.0 </a>&nbsp;since March 5, 2026</li>\n\n\n\n<li><a href="https://core.trac.wordpress.org/query?status=closed&amp;changetime=03%2F05%2F2026..03%2F10%2F2026&amp;milestone=7.0&amp;group=component&amp;col=id&amp;col=summary&amp;col=milestone&amp;col=owner&amp;col=type&amp;col=priority&amp;order=id">Closed Trac tickets for 7.0</a> since March 5, 2026</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph">As always, a successful release depends on your confirmation during testing. So please download and test!</p>\n\n\n\n<p class="has-text-align-right wp-block-paragraph"><em>Props <a href=''https://profiles.wordpress.org/peterwilson/'' class=''mention''><span class=''mentions-prefix''>@</span>peterwilson</a>, <a href=''https://profiles.wordpress.org/desrosj/'' class=''mention''><span class=''mentions-prefix''>@</span>desrosj</a>, <a href=''https://profiles.wordpress.org/marybaum/'' class=''mention''><span class=''mentions-prefix''>@</span>marybaum</a>, <a href=''https://profiles.wordpress.org/amykamala/'' class=''mention''><span class=''mentions-prefix''>@</span>amykamala</a> for peer reviewing.</em></p>\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:7:"post-id";a:1:{i:0;a:5:{s:4:"data";s:5:"20166";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:66:"\n		\n		\n		\n		\n		\n				\n		\n		\n		\n		\n\n					\n										\n					\n		\n		\n			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:23:"WordPress 6.9.2 Release";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:59:"https://wordpress.org/news/2026/03/wordpress-6-9-2-release/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 10 Mar 2026 15:43:19 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:4:{i:0;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:8:"Security";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:14:"minor-releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:8:"releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=20142";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:375:"WordPress 6.9.2 is now available This is a security release that features several fixes. Because this is a security release, it is recommended that you update your sites immediately. You can download WordPress 6.9.2 from WordPress.org, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. If you have sites that support automatic [&#8230;]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"John Blackbourn";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:4551:"\n<h2 class="wp-block-heading">WordPress 6.9.2 is now available</h2>\n\n\n\n<p class="wp-block-paragraph">This is a security release that features several fixes.</p>\n\n\n\n<p class="wp-block-paragraph">Because this is a security release,<strong> it is recommended that you update your sites immediately</strong>.</p>\n\n\n\n<p class="wp-block-paragraph">You can <a href="https://wordpress.org/wordpress-6.9.2.zip">download WordPress 6.9.2 from WordPress.org</a>, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. If you have sites that support automatic background updates, the update process will begin automatically.</p>\n\n\n\n<p class="wp-block-paragraph">For more information on WordPress 6.9.2, please visit the <a href="https://wordpress.org/documentation/wordpress-version/version-6-9-2/">version page on the HelpHub site</a>.</p>\n\n\n\n<h2 class="wp-block-heading">Security updates included in this release</h2>\n\n\n\n<p class="wp-block-paragraph">The security team would like to thank the following people for <a href="https://hackerone.com/wordpress?type=team">responsibly reporting vulnerabilities</a>, and allowing them to be fixed in this release:</p>\n\n\n\n<ul class="wp-block-list">\n<li>A Blind SSRF issue reported by <a href="https://hackerone.com/sibwtf">sibwtf</a>, and subsequently by several other researchers while the fix was being worked on</li>\n\n\n\n<li>A PoP-chain weakness in the HTML API and Block Registry reported by <a href="https://github.com/hackerlo2003">Phat RiO</a></li>\n\n\n\n<li>A regex DoS weakness in numeric character references reported by Dennis Snell of the WordPress Security Team</li>\n\n\n\n<li>A stored XSS in nav menus reported by <a href="https://x.com/Savphill">Phill Savage</a></li>\n\n\n\n<li>An AJAX <code>query-attachments</code> authorization bypass reported by <a href="https://www.vitalysim.com/">Vitaly Simonovich</a></li>\n\n\n\n<li>A stored XSS via the <code>data-wp-bind</code> directive reported by <a href="https://profiles.wordpress.org/kaminuma/">kaminuma</a></li>\n\n\n\n<li>An XSS that allows overridding client-side templates in the admin area reported by <a href="https://hackerone.com/amosec">Asaf Mozes</a></li>\n\n\n\n<li>A PclZip path traversal issue reported independently by <a href="https://profiles.wordpress.org/francescocarlucci/">Francesco Carlucci</a> and <a href="https://profiles.wordpress.org/kaminuma/">kaminuma</a></li>\n\n\n\n<li>An authorization bypass on the Notes feature reported by <a href="https://profiles.wordpress.org/kaminuma/">kaminuma</a></li>\n\n\n\n<li>An XXE in the external getID3 library reported by <a href="https://profiles.wordpress.org/regex33/">Youssef Achtatal</a></li>\n</ul>\n\n\n\n<p class="wp-block-paragraph">The WordPress security team have worked with the maintainer of the external getID3 library, James Heinrich, to coordinate a fix to getID3. A new version of getID3 <a href="https://github.com/JamesHeinrich/getID3/releases">is available here</a>.</p>\n\n\n\n<p class="wp-block-paragraph">As a courtesy, these fixes are being backported, where necessary, to all branches eligible to receive security fixes (currently through 4.7). As a reminder, <strong>only the most recent version of WordPress is actively supported</strong>. The backports are in progress and will ship as they become ready.</p>\n\n\n\n<h2 class="wp-block-heading">Thank you to these WordPress contributors</h2>\n\n\n\n<p class="wp-block-paragraph">This release was led by <a href="https://profiles.wordpress.org/johnbillion/">John Blackbourn</a>. In addition to the security researchers mentioned above, WordPress 6.9.2 would not have been possible without the contributions of the following people: <a href="https://profiles.wordpress.org/dmsnell/">Dennis Snell</a>, <a href="https://profiles.wordpress.org/xknown/" data-type="link" data-id="https://profiles.wordpress.org/johnbillion/">Alex Concha</a>, <a href="https://profiles.wordpress.org/jonsurrell/">Jon Surrell</a>, <a href="https://profiles.wordpress.org/isabel_brison/">Isabel Brison</a>, <a href="https://profiles.wordpress.org/peterwilsoncc/">Peter Wilson</a>, <a href="https://profiles.wordpress.org/desrosj/">Jonathan Desrosiers</a>, <a href="https://profiles.wordpress.org/audrasjb/">Jb Audras</a>, <a href="https://profiles.wordpress.org/luisherranz/">Luis Herranz</a>, <a href="https://profiles.wordpress.org/jorbin/">Aaron Jorbin</a>, <a href="https://profiles.wordpress.org/westonruter/">Weston Ruter</a>, and <a href="https://profiles.wordpress.org/ocean90/">Dominik Schilling</a>.</p>\n\n\n\n<p class="wp-block-paragraph"></p>\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:7:"post-id";a:1:{i:0;a:5:{s:4:"data";s:5:"20142";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:72:"\n		\n		\n		\n		\n		\n				\n		\n		\n		\n		\n		\n		\n\n					\n										\n					\n		\n		\n			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:20:"WordPress 7.0 Beta 3";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"https://wordpress.org/news/2026/03/wordpress-7-0-beta-3/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 05 Mar 2026 14:47:00 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:6:{i:0;a:5:{s:4:"data";s:11:"Development";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:3:"7-0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:4:"beta";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:11:"development";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:7:"release";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=20098";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:344:"WordPress 7.0 Beta 3 is available for download and testing! This beta version of the WordPress software is still under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, you should evaluate Beta 3 on a test server and site.WordPress 7.0 Beta 3 can be tested [&#8230;]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Amy Kamala";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:5895:"\n<p class="wp-block-paragraph">WordPress 7.0 Beta 3 is available for download and testing!</p>\n\n\n\n<p class="wp-block-paragraph"><strong>This beta version of the WordPress software is still under development</strong>. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, you should evaluate Beta 3 on a test server and site.WordPress 7.0 Beta 3 can be tested using any of the following methods:</p>\n\n\n\n<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Plugin</strong></td><td>Install and activate the <a href="https://wordpress.org/plugins/wordpress-beta-tester/">WordPress Beta Tester</a> plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream.)</td></tr><tr><td><strong>Direct Download</strong></td><td>Download the <a href="https://wordpress.org/wordpress-7.0-beta3.zip">Beta 3 version (zip)</a> and install it on a WordPress website.</td></tr><tr><td><strong>Command Line</strong></td><td>Use this <a href="https://make.wordpress.org/cli/">WP-CLI</a> command: <br><code>wp core update --version=7.0-beta</code>3</td></tr><tr><td><strong>WordPress Playground</strong></td><td>Use the <a href="https://playground.wordpress.net/?php=8.0&amp;wp=beta&amp;networking=no&amp;language=&amp;multisite=no&amp;random=y4q1rn88xn">WordPress Playground instance</a> to test the software directly in your browser.&nbsp; No setup is required – just click and go!&nbsp;</td></tr></tbody></table></figure>\n\n\n\n<p class="wp-block-paragraph">The scheduled final release date for WordPress 7.0 is <strong>April 9, 2026</strong>. &nbsp;The full <a href="https://make.wordpress.org/core/2026/02/12/wordpress-7-0-release-party-schedule/">release schedule can be found here</a>. Your help testing Beta and RC versions is vital to making this release as stable and powerful as possible. Please continue checking the <a href="https://make.wordpress.org/core/">Make WordPress Core blog</a> for <a href="https://make.wordpress.org/core/tag/7-0">7.0-related posts</a> in the coming weeks for more information. Thank you to everyone who is contributing with testing!</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Catch up on what’s new in WordPress 7.0</strong>: Read the <a href="https://wordpress.org/news/2026/02/wordpress-7-0-beta-2/">Beta 2 announcement</a> for details and highlights.</p>\n\n\n\n<h2 class="wp-block-heading">How to test this release</h2>\n\n\n\n<p class="wp-block-paragraph">Your help testing the WordPress 7.0 Beta 3 version is key to ensuring everything in the release is the best it can be. While testing the upgrade process is essential, trying out new features is equally important. This <a href="https://make.wordpress.org/test/2026/02/20/help-test-wordpress-7-0/">detailed guide</a> will walk you through testing features in WordPress 7.0.</p>\n\n\n\n<p class="wp-block-paragraph">If you encounter an issue, please report it to the <a href="https://wordpress.org/support/forum/alphabeta/">Alpha/Beta area</a> of the support forums or directly to <a href="https://core.trac.wordpress.org/newticket">WordPress Trac</a> if you are comfortable writing a reproducible bug report. You can also check your issue against a list of <a href="https://core.trac.wordpress.org/tickets/major">known bugs</a>.Curious about testing releases in general? Follow along with the <a href="https://make.wordpress.org/test/">testing initiatives in Make Core</a> and join the <a href="https://wordpress.slack.com/messages/core-test/">#core-test channel</a> on <a href="https://wordpress.slack.com/">Making WordPress Slack</a>.</p>\n\n\n\n<h2 class="wp-block-heading">Beta 3 updates and highlights</h2>\n\n\n\n<p class="wp-block-paragraph">WordPress 7.0 Beta 3 contains more than 148 updates and fixes since the Beta 2 release, including 70 in the Editor and 78 in Core. </p>\n\n\n\n<p class="wp-block-paragraph">Each beta cycle focuses on bug fixes, and more are on the way with your help through testing. You can browse the technical details for all issues addressed since Beta 2 using these links:</p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://github.com/WordPress/gutenberg/commits/wp/7.0?since=2026-02-26&amp;until=2026-03-05">GitHub commits for 7.0 </a>&nbsp;since February 26, 2026</li>\n\n\n\n<li><a href="https://core.trac.wordpress.org/query?status=closed&amp;changetime=02%2F26%2F2026..03%2F05%2F2026&amp;milestone=7.0&amp;col=id&amp;col=milestone&amp;col=owner&amp;col=type&amp;col=priority&amp;order=id">Closed Trac tickets for 7.0</a> since February 26, 2026</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph">Tapping into the power of AI is even easier in Beta 3! The WP AI Client Connectors screen now dynamically registers providers from the WP AI Client registry, in addition to the 3 default providers, giving users more flexibility and command over AI integrations.</p>\n\n\n\n<h2 class="wp-block-heading">A Beta 3 haiku</h2>\n\n\n\n<p class="wp-block-paragraph"><em>Through sun set and rise,</em></p>\n\n\n\n<p class="wp-block-paragraph"><em>Beta 3 takes off and flies.</em></p>\n\n\n\n<p class="wp-block-paragraph"><em>Seven soon arrives.</em></p>\n\n\n\n<p class="has-text-align-right wp-block-paragraph"><em>Props to <a href=''https://profiles.wordpress.org/annezazu/'' class=''mention''><span class=''mentions-prefix''>@</span>annezazu</a></em>, <em><a href=''https://profiles.wordpress.org/jeffpaul/'' class=''mention''><span class=''mentions-prefix''>@</span>jeffpaul</a></em>, <em><a href=''https://profiles.wordpress.org/chaion07/'' class=''mention''><span class=''mentions-prefix''>@</span>chaion07</a></em>,<em> <a href=''https://profiles.wordpress.org/audrasjb/'' class=''mention''><span class=''mentions-prefix''>@</span>audrasjb</a> and <a href=''https://profiles.wordpress.org/valentingrenier/'' class=''mention''><span class=''mentions-prefix''>@</span>valentingrenier</a> for proofreading and review.</em></p>\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:7:"post-id";a:1:{i:0;a:5:{s:4:"data";s:5:"20098";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:75:"\n		\n		\n		\n		\n		\n				\n		\n		\n		\n		\n		\n		\n		\n\n					\n										\n					\n		\n		\n			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:20:"WordPress 7.0 Beta 2";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"https://wordpress.org/news/2026/02/wordpress-7-0-beta-2/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 26 Feb 2026 16:32:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:7:{i:0;a:5:{s:4:"data";s:7:"General";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:3:"7-0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:3:"7.0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:4:"beta";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:6:"Beta 2";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:6;a:5:{s:4:"data";s:7:"release";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=20025";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:328:"WordPress 7.0 Beta 2 is now ready for testing! This beta version of the WordPress software is under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, you should evaluate Beta 2 on a test server and site. You can test WordPress 7.0 Beta 2 in [&#8230;]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Amy Kamala";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:6552:"\n<p class="wp-block-paragraph">WordPress 7.0 Beta 2 is now ready for testing!</p>\n\n\n\n<p class="wp-block-paragraph"><strong>This beta version of the WordPress software is under development</strong>. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, you should evaluate Beta 2 on a test server and site. You can test WordPress 7.0 Beta 2 in any of the following ways:</p>\n\n\n\n<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Plugin</strong></td><td>Install and activate the <a href="https://wordpress.org/plugins/wordpress-beta-tester/">WordPress Beta Tester</a> plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream.)</td></tr><tr><td><strong>Direct Download</strong></td><td>Download the <a href="https://wordpress.org/wordpress-7.0-beta2.zip">Beta 2 version (zip)</a> and install it on a WordPress website.</td></tr><tr><td><strong>Command Line</strong></td><td>Use this <a href="https://make.wordpress.org/cli/">WP-CLI</a> command: <br><code>wp core update --version=7.0-beta2</code></td></tr><tr><td><strong>WordPress Playground</strong></td><td>Use the <a href="https://playground.wordpress.net/?php=8.0&amp;wp=beta&amp;networking=no&amp;language=&amp;multisite=no&amp;random=y4q1rn88xn">WordPress Playground instance</a> to test the software directly in your browser.&nbsp; No setup required – just click and go!&nbsp;</td></tr></tbody></table></figure>\n\n\n\n<p class="wp-block-paragraph">The scheduled final release date for WordPress 7.0 is <strong>April 9, 2026</strong>. The full <a href="https://make.wordpress.org/core/2026/02/12/wordpress-7-0-release-party-schedule/">release schedule can be found here</a>. Your help testing Beta and RC versions is vital to making this release as stable and powerful as possible. Make sure to check the <a href="https://make.wordpress.org/core/">Make WordPress Core blog</a> for <a href="https://make.wordpress.org/core/tag/7-0">7.0-related posts</a> in the coming weeks for more information. Thank you to everyone who contributes by testing!</p>\n\n\n\n<p class="wp-block-paragraph"><strong>Catch up on what’s new in WordPress 7.0</strong>: Read the <a href="https://wordpress.org/news/2026/02/wordpress-7-0-beta-1/">Beta 1 announcement</a> for details and highlights.</p>\n\n\n\n<h2 class="wp-block-heading">How to test this release</h2>\n\n\n\n<p class="wp-block-paragraph">Your help testing WordPress 7.0 Beta 2 is key to ensuring everything in the release is the best it can be. While testing the upgrade process is essential, trying out new features is equally important.&nbsp;This <a href="https://make.wordpress.org/test/2026/02/20/help-test-wordpress-7-0/">guide on what to test in WordPress 7.0</a> will walk you through testing features in WordPress 7.0.</p>\n\n\n\n<p class="wp-block-paragraph">If you encounter an issue, please report it to the <a href="https://wordpress.org/support/forum/alphabeta/">Alpha/Beta area</a> of the support forums or directly to <a href="https://core.trac.wordpress.org/newticket">WordPress Trac</a> if you are comfortable writing a reproducible bug report. You can also check your issue against a list of <a href="https://core.trac.wordpress.org/tickets/major">known bugs</a>. Curious about testing releases in general? Follow along with the <a href="https://make.wordpress.org/test/">testing initiatives in Make Core</a> and join the <a href="https://wordpress.slack.com/messages/core-test/">#core-test channel</a> on <a href="https://wordpress.slack.com/">Making WordPress Slack</a>.</p>\n\n\n\n<h2 class="wp-block-heading">Beta 2 updates and highlights</h2>\n\n\n\n<p class="wp-block-paragraph">WordPress 7.0 Beta 2 contains more than 70 updates and fixes across the Editor and Core since the Beta 1 release.&nbsp;</p>\n\n\n\n<p class="wp-block-paragraph">Each beta cycle focuses on bug fixes; and more are on the way with your help through testing. You can browse the technical details for all issues addressed since Beta 1 using these links:</p>\n\n\n\n<ul class="wp-block-list">\n<li><a href="https://github.com/WordPress/gutenberg/commits/wp/7.0?since=2026-02-20&amp;until=2026-02-26">GitHub commits for 7.0</a>&nbsp;since February 20, 2026</li>\n\n\n\n<li><a href="https://core.trac.wordpress.org/query?status=closed&amp;changetime=02%2F20%2F2026..02%2F26%2F2026&amp;milestone=7.0&amp;col=id&amp;col=milestone&amp;col=owner&amp;col=type&amp;col=priority&amp;order=id">Closed Trac tickets for 7.0</a> since February 20, 2026</li>\n</ul>\n\n\n\n<p class="wp-block-paragraph"><strong>Beta 2 also contains a new feature</strong>!</p>\n\n\n\n<p class="wp-block-paragraph">AI provider management is more intuitive in 7.0 Beta 2 with a new Connectors UI dashboard page. WordPress users can now manage external AI connections in a central place in wp-admin, under Settings &gt; Connectors. The new UI enables users to add, delete, and update external connections. It is powered by an extensible, route-based architecture that allows plugins and themes to hook into the page and expand its functionality. The new Connectors page builds on PHP-based script and menu infrastructure, and adds route components powered by <code>@wordpress/components</code> and <code>@wordpress/admin-ui</code>. A new <code>connections-wp-admin-init</code> hook and registration APIs allow plugins to integrate cleanly. This makes managing external connections easier while giving developers a clearer path to extend the experience.</p>\n\n\n\n<h2 class="wp-block-heading">A Beta 2 haiku</h2>\n\n\n\n<p class="wp-block-paragraph"><em>New, and fresh as dew</em></p>\n\n\n\n<p class="wp-block-paragraph"><em>Crafted and refined for you:</em></p>\n\n\n\n<p class="wp-block-paragraph"><em>Beta 2 breaks through.</em></p>\n\n\n\n<p class="has-text-align-right wp-block-paragraph"><em>Props to <a href=''https://profiles.wordpress.org/4thhubbard/'' class=''mention''><span class=''mentions-prefix''>@</span>4thhubbard</a>, <a href=''https://profiles.wordpress.org/annezazu/'' class=''mention''><span class=''mentions-prefix''>@</span>annezazu</a></em>, <em><a href=''https://profiles.wordpress.org/audrasjb/'' class=''mention''><span class=''mentions-prefix''>@</span>audrasjb</a>, <a href=''https://profiles.wordpress.org/mukesh27/'' class=''mention''><span class=''mentions-prefix''>@</span>mukesh27</a>, and <a href=''https://profiles.wordpress.org/chaion07/'' class=''mention''><span class=''mentions-prefix''>@</span>chaion07</a></em> <em>for collaboration, proofreading and review.</em></p>\n\n\n\n<p class="wp-block-paragraph"></p>\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:7:"post-id";a:1:{i:0;a:5:{s:4:"data";s:5:"20025";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:75:"\n		\n		\n		\n		\n		\n				\n		\n		\n		\n		\n		\n		\n		\n\n					\n										\n					\n		\n		\n			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:20:"WordPress 7.0 Beta 1";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"https://wordpress.org/news/2026/02/wordpress-7-0-beta-1/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 20 Feb 2026 15:39:10 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:7:{i:0;a:5:{s:4:"data";s:7:"General";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:3:"7-0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:3:"7.0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:4:"beta";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:11:"development";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:6;a:5:{s:4:"data";s:7:"release";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=19908";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:341:"WordPress 7.0 Beta 1 is ready for download and testing! This beta release is intended for testing and development only. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, use a test environment or local site to explore the new features. How to Test WordPress 7.0 Beta [&#8230;]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Amy Kamala";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:15437:"\n<p class="wp-block-paragraph">WordPress 7.0 Beta 1 is ready for download and testing! <strong>This beta release is intended for testing and development</strong> only. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, use a test environment or local site to explore the new features.</p>\n\n\n\n<h2 class="wp-block-heading">How to Test WordPress 7.0 Beta 1</h2>\n\n\n\n<p class="wp-block-paragraph">You can test WordPress 7.0 Beta 1 in any of the following ways:</p>\n\n\n\n<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Plugin</strong></td><td>Install and activate the <a href="https://wordpress.org/plugins/wordpress-beta-tester/">WordPress Beta Tester</a> plugin on a WordPress install. (Select the “Bleeding edge” channel and “Beta/RC Only” stream.)</td></tr><tr><td><strong>Direct Download</strong></td><td>Download the <a href="https://wordpress.org/wordpress-7.0-beta1.zip">Beta 1 version (zip)</a> and install it on a WordPress website.</td></tr><tr><td><strong>Command Line</strong></td><td>Use this <a href="https://make.wordpress.org/cli/">WP-CLI</a> command: <code>wp core update --version=7.0-beta1</code></td></tr><tr><td><strong>WordPress Playground</strong></td><td>Use a <a href="https://playground.wordpress.net/?php=8.3&amp;wp=beta&amp;networking=no&amp;language=&amp;multisite=no&amp;random=r8nny4q18x">7.0 Beta 1 WordPress Playground instance</a> to test the software directly in your browser. No setup required &#8211; just click and go!</td></tr></tbody></table></figure>\n\n\n\n<p class="wp-block-paragraph">The scheduled final release date for WordPress 7.0 is <strong>April 9, 2026</strong>. The full <a href="https://make.wordpress.org/core/2026/02/12/wordpress-7-0-release-party-schedule/">release schedule can be found here</a>. Your help testing Beta and RC versions is vital to making this release as stable and powerful as possible. Thank you to everyone who contributes by testing!</p>\n\n\n\n<h2 class="wp-block-heading">How important is your testing?</h2>\n\n\n\n<p class="wp-block-paragraph">Testing for issues is a critical part of developing any software, and it’s a meaningful way for anyone to contribute &#8211; whether or not you have experience. <a href="https://make.wordpress.org/test/2026/02/20/help-test-wordpress-7-0/">Details on what to test in WordPress 7.0 are available here</a>.</p>\n\n\n\n<p class="wp-block-paragraph">If you encounter an issue, please share it in the <a href="https://wordpress.org/support/forum/alphabeta/">Alpha/Beta area</a> of the support forums. If you are comfortable submitting a reproducible bug report, you can do so <a href="https://core.trac.wordpress.org/newticket">via WordPress Trac</a>. You can also check your issue against this list of <a href="https://core.trac.wordpress.org/tickets/major">known bugs</a>.</p>\n\n\n\n<p class="wp-block-paragraph">Curious about testing releases in general and how to get started? Follow along with the <a href="https://make.wordpress.org/test/">testing initiatives in Make Core</a> and join the <a href="https://wordpress.slack.com/messages/core-test/">#core-test channel</a> on <a href="https://wordpress.slack.com/">Making WordPress Slack</a>. WordPress 7.0 will include new features that were previously only available in the Gutenberg plugin. Learn more about Gutenberg updates since WordPress 6.9 in the <a href="https://make.wordpress.org/core/tag/gutenberg-new/">What’s New in Gutenberg</a> posts for versions <a href="https://make.wordpress.org/core/2025/11/05/whats-new-in-gutenberg-22-0-05-november/">22.0</a>, <a href="https://make.wordpress.org/core/2025/11/20/whats-new-in-gutenberg-22-1-18-november-2025/">22.1</a>, <a href="https://make.wordpress.org/core/2025/12/03/whats-new-in-gutenberg-22-2-dec3/">22.2</a>, <a href="https://make.wordpress.org/core/2025/12/17/gutenberg-22-3-december-17/">22.3</a>, <a href="https://make.wordpress.org/core/2026/01/22/whats-new-in-gutenberg-22-4-20-january/">22.4</a>, <a href="https://make.wordpress.org/core/2026/02/04/whats-new-in-gutenberg-22-5-04-february/">22.5</a> &amp; 22.6.</p>\n\n\n\n<h2 class="wp-block-heading">What’s new in WordPress 7.0?</h2>\n\n\n\n<p class="wp-block-paragraph">WordPress 7.0 boasts numerous upgrades in the editing and admin experience, delivering enhanced real time collaboration, refined customizability, new dashboard styles, and an expanded developer toolbox for people who create, design, and build with WordPress every day.</p>\n\n\n\n<p class="wp-block-paragraph">Working as a team just got easier with the ability for multiple users to edit together in real time, while visual revisions allow a visual comparison between page versions, adding agility to the creation and review process. Working with patterns has been simplified, making layout updates and content changes more intuitive, while view transitions smoothly move you from screen to screen as you click.</p>\n\n\n\n<p class="wp-block-paragraph">New and improved blocks and design features in 7.0 make sites more customizable, with video embed backgrounds in the Cover block, a responsive-enabled Grid block, and new Icons, Breadcrumbs and Heading blocks. An updated Navigation block makes menu changes easier and more reliable in fewer steps. Responsive, mobile-friendly controls in 7.0 allow you to hide or reveal blocks based on screen size, while client-side media handling speeds up media processing. The Font Library screen for managing installed fonts is now enabled for all themes, so site editors are always able to browse, install, and organize fonts.&nbsp;</p>\n\n\n\n<p class="wp-block-paragraph">For developers, it’s now easier to build modern experiences while staying aligned with Core principles. The new WP AI Client in WordPress 7.0 brings a layer into Core that allows leveraging of AI models from any provider within the WordPress framework. This means plugins and themes can tap into any AI model to expound on its endless options. 7.0 offers even more versatility with the Client Side Abilities API that introduces a standardized way to register and run “abilities” in the browser, supporting richer, more consistent workflows. Additionally, 7.0 introduces PHP-only block registration with auto-generated inspector controls, adding a new dimension to block creation, while Block Bindings updates for pattern overrides expands support to custom dynamic blocks, giving block creators more options.</p>\n\n\n\n<p class="wp-block-paragraph">Needless to say, this release offers a wide range of flexibility to creators, teams and developers, while bringing a visual refresh to the admin experience you know and love with a fresh default style.</p>\n\n\n\n<h2 class="wp-block-heading">Work together in real time</h2>\n\n\n\n<p class="wp-block-paragraph">Building on the momentum started in WordPress 6.9, the ability for teams to create and edit together is more refined and robust in 7.0. With this version of WordPress multiple users can edit and collaborate on the same post or page in real time, with data syncing and stabilized notes for smoother teamwork and a more streamlined editing and review process.</p>\n\n\n\n<ul class="wp-block-list">\n<li>Real Time Collaboration: Teams can now edit posts and pages together live from multiple locations, with offline editing and data syncing enabled, and a new default HTTP polling sync provider with options for plugins or hosts to include websocket support. With this collaborative content creation workflow, teams can brainstorm more effectively and boost productivity. For the beta period, real-time collaboration is opt-in in order to get broader feedback and testing.</li>\n\n\n\n<li>Notes: 7.0 introduces real time syncing of notes that helps facilitate collaboration, a keyboard shortcut for new notes, and a series of quality-focused fixes that bring more stability to the Notes feature.</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading">A Refined Admin Experience</h2>\n\n\n\n<p class="wp-block-paragraph">WordPress 7.0 gives the wp-admin experience a boost with a fresh default color scheme, and a cleaner, more modern looking dashboard, while keeping the interface familiar. The upgraded dashboard enhances the editing experience with new visual revision comparisons, and smooth transitioning between screens.</p>\n\n\n\n<ul class="wp-block-list">\n<li>Visual Revisions: Working with revisions is even better in 7.0 with the added ability to make visual comparisons to revision versions within the editor.</li>\n\n\n\n<li>View transitions: Cross-document view transitions in the dashboard offer visual continuity with seamless movement from screen to screen.</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading">Customizing content with ease</h2>\n\n\n\n<p class="wp-block-paragraph">Creators have more flexibility in 7.0 with new tools for content and design, enhanced editing controls, and attention to mobile friendliness.&nbsp;</p>\n\n\n\n<ul class="wp-block-list">\n<li>Responsive Editing Mode: Block visibility is now more responsive and mobile-friendly, with the ability for blocks to be displayed or hidden based on screen size.&nbsp;</li>\n\n\n\n<li>Pattern Editing and contentOnly interactivity: WordPress 7.0 introduces pattern-level editing modes, a tree view for buttons and list blocks, and the ability to opt out of the default content only mode. The new Spotlight mode helps you isolate content in patterns and notes, while the Isolated Editor mode can be used for editing symbols and reusable pieces like synced patterns, template parts, or navigation.&nbsp;</li>\n\n\n\n<li>Block supports and design tools: 7.0 includes text line indent support, text column support, aspect ratios for wide and full images, dimension width and height support, and dimension presets, tools and controls.</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading">New blocks and design options at your fingertips</h2>\n\n\n\n<p class="wp-block-paragraph">7.0 delivers a series of new and improved blocks and block features, a streamlined navigation workflow, and more versatile design options like video embeds as section backgrounds.</p>\n\n\n\n<ul class="wp-block-list">\n<li>Navigation Block: Navigation workflow is now more intuitive and clear, with improved editing and presentation. 7.0 introduces customizable navigation overlays as template parts, including mobile version overlays that can be hidden or revealed based on custom breakpoint settings.&nbsp;</li>\n\n\n\n<li>Heading Block: Heading levels are now available as block variations, giving more control over page hierarchy and design.</li>\n\n\n\n<li>New blocks: 7.0 makes building pages more diverse with new Breadcrumbs and Icons blocks.</li>\n\n\n\n<li>Cover block embedded videos: Video embeds can now be used as a background in the cover block, opening up opportunities for sleeker and more creative designs.</li>\n\n\n\n<li>The Grid block is now responsive-enabled allowing grid-based layouts to adapt more smoothly across screen sizes.</li>\n\n\n\n<li>The Gallery block now has lightbox support that lets the user click through and view each gallery image.</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading">Developer&#8217;s toolbox</h2>\n\n\n\n<p class="wp-block-paragraph">Working with WordPress on the backend is now more robust for developers, with new and enhanced API features that support flexibility and lay a foundation for future advancements. The Client Side Abilities API provides a client-side registry for WordPress capabilities that allows you to tap into new and innovative website options. WordPress 7.0 offers even more by introducing the Web Client AI API to Core, enabling access to generative AI models in one central interface.</p>\n\n\n\n<ul class="wp-block-list">\n<li>Web Client AI API: The new AI client and API acts as a command center for accessing and communicating with generative AI models, with providers remaining external to WordPress Core, and Abilities API integration.</li>\n\n\n\n<li>Abilities and Workflows API: With the new client side abilities package users have access to new and hybrid abilities, filter and search functionality for abilities, and an improved command palette and UI.</li>\n\n\n\n<li>Blocks and patterns created on the server: WordPress 7.0 boasts the ability for PHP-only blocks and patterns to be generated server-side and auto-registered with the Block API.</li>\n\n\n\n<li>DataForm: Introducing a new details layout, new controls (combobox, adaptiveSelect), and updated trigger for panel layout (dedicated edit button). Additionally, the initial iteration for validation is complete: all controls have support, and all layouts display error messages.</li>\n\n\n\n<li>DataViews: DataViews has a new activity layout, and a foundation has been laid to be able to register 3rd party types in future releases.</li>\n\n\n\n<li>CodeMirror update: CodeMirror has been updated to version 5.65.40, aiding more flexible extensibility and library options.</li>\n</ul>\n\n\n\n<h2 class="wp-block-heading">Media processing in the browser</h2>\n\n\n\n<p class="wp-block-paragraph">WordPress 7.0 introduces Client-side media processing, leveraging the browser&#8217;s capabilities to handle tasks, like image resizing and compression, for smoother image processing. This enables the use of more advanced image formats and compression techniques, and reduces demand on the web server; providing a more efficient media handling process for both new and existing content, and supporting smoother media workflows.</p>\n\n\n\n<p class="wp-block-paragraph">With so many options and enhancements in WordPress 7.0 Beta 1, this is still only the beginning. You can expect future releases to be even better.</p>\n\n\n\n<h2 class="wp-block-heading">Just for you: a Beta 1 haiku:</h2>\n\n\n\n<p class="wp-block-paragraph"><em>As sun kisses moon</em>,</p>\n\n\n\n<p class="wp-block-paragraph"><em>Beta 1 ignites in bloom</em>&#8230;</p>\n\n\n\n<p class="wp-block-paragraph"><em>Seven-oh lands soon</em>.</p>\n\n\n\n<p class="has-text-align-right wp-block-paragraph"><em>Props to <a href=''https://profiles.wordpress.org/ellatrix/'' class=''mention''><span class=''mentions-prefix''>@</span>ellatrix</a>, <a href=''https://profiles.wordpress.org/jeffpaul/'' class=''mention''><span class=''mentions-prefix''>@</span>jeffpaul</a>, <a href=''https://profiles.wordpress.org/annezazu/'' class=''mention''><span class=''mentions-prefix''>@</span>annezazu</a>, <a href=''https://profiles.wordpress.org/chaion07/'' class=''mention''><span class=''mentions-prefix''>@</span>chaion07</a>, <a href=''https://profiles.wordpress.org/zunaid321/'' class=''mention''><span class=''mentions-prefix''>@</span>zunaid321</a>, <a href=''https://profiles.wordpress.org/audrasjb/'' class=''mention''><span class=''mentions-prefix''>@</span>audrasjb</a>, <a href=''https://profiles.wordpress.org/mukesh27/'' class=''mention''><span class=''mentions-prefix''>@</span>mukesh27</a>, <a href=''https://profiles.wordpress.org/ankit-k-gupta/'' class=''mention''><span class=''mentions-prefix''>@</span>ankit-k-gupta</a></em>, <em><a href=''https://profiles.wordpress.org/oandregal/'' class=''mention''><span class=''mentions-prefix''>@</span>oandregal</a>, <a href=''https://profiles.wordpress.org/westonruter/'' class=''mention''><span class=''mentions-prefix''>@</span>westonruter</a>, <a href=''https://profiles.wordpress.org/karmatosed/'' class=''mention''><span class=''mentions-prefix''>@</span>karmatosed</a>, <a href=''https://profiles.wordpress.org/bph/'' class=''mention''><span class=''mentions-prefix''>@</span>bph</a> for reviewing and collaborating on this post!</em></p>\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:7:"post-id";a:1:{i:0;a:5:{s:4:"data";s:5:"19908";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:8;a:6:{s:4:"data";s:63:"\n		\n		\n		\n		\n		\n				\n		\n		\n		\n\n					\n										\n					\n		\n		\n			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:40:"Piloting the AI Leaders Micro-Credential";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"https://wordpress.org/news/2026/02/ai-leaders-credential/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 04 Feb 2026 19:03:18 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:3:{i:0;a:5:{s:4:"data";s:9:"Education";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:7:"Updates";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:2:"AI";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=19874";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:396:"Today, we are happy to announce our first WordPress-focused micro-credential, designed to help students build practical AI skills, earn a recognized credential, and connect more directly to job opportunities. The program, AI Leaders, is a workforce-oriented credential rooted in WordPress and open source contributions. Students are paid for their time, work on real WordPress projects, [&#8230;]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:12:"Mary Hubbard";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:4145:"\n<p class="wp-block-paragraph">Today, we are happy to announce our first WordPress-focused micro-credential, designed to help students build practical AI skills, earn a recognized credential, and connect more directly to job opportunities.</p>\n\n\n\n<p class="wp-block-paragraph">The program, <a href="https://ai-leaders.org/">AI Leaders</a>, is a workforce-oriented credential rooted in WordPress and open source contributions. Students are paid for their time, work on real WordPress projects, and gain hands-on experience applying AI in ways that are directly relevant to the WordPress ecosystem. This pilot represents a meaningful step forward in how the project supports learning, contribution, and career pathways.</p>\n\n\n\n<p class="wp-block-paragraph">Beginning in March 2026, AI Leaders launches its first cohort of 80 students from Illinois and Louisiana, with <a href="https://today.uic.edu/uic-and-wordpress-foundation-launch-workforce-focused-ai-literacy-course/">University of Illinois Chicago</a> (UIC) students given priority to apply before enrollment expands to the public. Enrollees begin with an orientation covering generative AI tools and AI literacy. From there, 40 participants are selected for the full course experience. Ultimately, the program leads to the AI Leader WordPress Micro-Credential and an opportunity to pursue living-wage job pathways. Learners who complete the course also earn $1,000 (USD).</p>\n\n\n\n<p class="wp-block-paragraph">This pilot is the result of collaboration across several organizations, each playing a distinct role. The program is funded through the UIC Tech Solutions Open Source Fund, with support from the University of Illinois Chicago and <a href="https://automattic.com/2026/02/03/uic-tech-solutions-open-source-fund/">Automattic</a>. That funding supports program delivery, participant compensation, and the institutional infrastructure needed to run the pilot. Alongside that funding, the WordPress project and the WordPress Foundation will contribute to the development of the credential itself. This includes shaping the curriculum, grounding the work in real WordPress AI use cases, and ensuring alignment with open source values and public benefit.</p>\n\n\n\n<div class="wp-block-group has-off-white-2-background-color has-background is-layout-constrained wp-container-core-group-is-layout-2431c55b wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--edge-space);padding-right:var(--wp--preset--spacing--edge-space);padding-bottom:var(--wp--preset--spacing--edge-space);padding-left:var(--wp--preset--spacing--edge-space)">\n<p class="has-text-align-center wp-block-paragraph">Visit the AI Leaders site to learn more and apply.</p>\n\n\n\n<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-3e41869c wp-block-buttons-is-layout-flex">\n<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://ai-leaders.org/">Start Your Application</a></div>\n</div>\n</div>\n\n\n\n<p class="wp-block-paragraph">This is the first WordPress Foundation-backed micro-credential, and it is intentionally being run as a pilot. We are exploring how the Foundation could support additional credentials over time, across different skill areas and partners, while maintaining clear governance, openness, and alignment with the WordPress project. It represents a step toward a future where WordPress contributors can more easily translate their skills into credentials, careers, and long-term opportunities.</p>\n\n\n\n<hr class="wp-block-separator has-text-color has-dark-strokes-grey-color has-alpha-channel-opacity has-dark-strokes-grey-background-color has-background" />\n\n\n\n<p class="wp-block-paragraph"><em>WordPress offers a wide range of educational opportunities for people at every stage, from first steps to advanced contribution. Explore workshops, lesson plans, and community-created resources designed to help you build practical skills while connecting with others who are learning and contributing at <a href="https://wordpress.org/education/">WordPress.org/education/</a>.</em></p>\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:7:"post-id";a:1:{i:0;a:5:{s:4:"data";s:5:"19874";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:9;a:6:{s:4:"data";s:57:"\n		\n		\n		\n		\n		\n				\n		\n\n					\n										\n					\n		\n		\n			";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:4:{s:0:"";a:6:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:35:"WordPress 6.9.1 Maintenance Release";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:71:"https://wordpress.org/news/2026/02/wordpress-6-9-1-maintenance-release/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 03 Feb 2026 18:07:31 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=19862";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:373:"WordPress 6.9.1 is now available! This minor release includes fixes for 49 bugs throughout Core and the Block Editor, addressing issues affecting multiple areas of WordPress including the block editor, mail, and classic themes. For a full list of bug fixes, please refer to the release candidate announcement. WordPress 6.9.1 is a short-cycle maintenance release. [&#8230;]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:12:"Aaron Jorbin";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:9409:"\n<p class="wp-block-paragraph"><strong>WordPress 6.9.1 is now available!</strong></p>\n\n\n\n<p class="wp-block-paragraph">This minor release includes fixes for 49 bugs <a href="https://core.trac.wordpress.org/query?resolution=fixed&amp;milestone=6.9.1&amp;group=component&amp;col=id&amp;col=summary&amp;col=milestone&amp;col=owner&amp;col=type&amp;col=status&amp;col=priority&amp;order=priority">throughout Core</a> and <a href="https://github.com/WordPress/gutenberg/pull/74806">the Block Editor</a>, addressing issues affecting multiple areas of WordPress including the block editor, mail, and classic themes. For a full list of bug fixes, please refer to the <a href="https://make.wordpress.org/core/2026/01/30/wordpress-6-9-1-rc1-is-now-available/">release candidate announcement.</a></p>\n\n\n\n<p class="wp-block-paragraph">WordPress 6.9.1 is a short-cycle maintenance release. The next major version of WordPress will be 7.0; it is scheduled for release on 9 April 2026 at <a href="https://asia.wordcamp.org/2026/">WordCamp Asia</a>.</p>\n\n\n\n<p class="wp-block-paragraph">If you have sites that support automatic background updates, the update process will begin automatically.</p>\n\n\n\n<p class="wp-block-paragraph">You can <a href="https://wordpress.org/wordpress-6.9.1.zip">download WordPress 6.9.1 from WordPress.org</a>, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. For more information on this release, please <a href="https://wordpress.org/support/wordpress-version/version-6-9-1">visit the HelpHub site</a>.</p>\n\n\n\n<h2 class="wp-block-heading">Thank you to these WordPress contributors</h2>\n\n\n\n<p class="wp-block-paragraph">This release was led by <a href="https://profiles.wordpress.org/jorbin/">Aaron Jorbin</a> and <a href="https://profiles.wordpress.org/wildworks">Aki Hamano.</a></p>\n\n\n\n<p class="wp-block-paragraph">WordPress 6.9.1 would not have been possible without the contributions of the following people. Their asynchronous coordination to deliver maintenance fixes into a stable release is a testament to the power and capability of the WordPress community.</p>\n\n\n\n<p class="is-style-wporg-props-medium wp-block-paragraph"><a href="https://profiles.wordpress.org/jorbin">Aaron Jorbin</a>, <a href="https://profiles.wordpress.org/aaronrobertshaw">Aaron Robertshaw</a>, <a href="https://profiles.wordpress.org/acmoifr">acmoifr</a>, <a href="https://profiles.wordpress.org/adamsilverstein">Adam Silverstein</a>, <a href="https://profiles.wordpress.org/oztaser">Adil Öztaşer</a>, <a href="https://profiles.wordpress.org/wildworks">Aki Hamano</a>, <a href="https://profiles.wordpress.org/albigdd">Alexander Bigga</a>, <a href="https://profiles.wordpress.org/amanandhishoe">amanandhishoe</a>, <a href="https://profiles.wordpress.org/andrewserong">Andrew Serong</a>, <a href="https://profiles.wordpress.org/bernhard-reiter">Bernie Reiter</a>, <a href="https://profiles.wordpress.org/brumack">brumack</a>, <a href="https://profiles.wordpress.org/darerodz">David Arenas</a>, <a href="https://profiles.wordpress.org/davidbaumwald">David Baumwald</a>, <a href="https://profiles.wordpress.org/raftaar1191">Deepak Gupta</a>, <a href="https://profiles.wordpress.org/deepakprajapati">Deepak Prajapati</a>, <a href="https://profiles.wordpress.org/dmsnell">Dennis Snell</a>, <a href="https://profiles.wordpress.org/digitalblanket">digitalblanket</a>, <a href="https://profiles.wordpress.org/ellatrix">Ella Van Durpe</a>, <a href="https://profiles.wordpress.org/fabiankaegy">Fabian Kaegy</a>, <a href="https://profiles.wordpress.org/mamaduka">George Mamadashvili</a>, <a href="https://profiles.wordpress.org/hbhalodia">Hit Bhalodia</a>, <a href="https://profiles.wordpress.org/iflairwebtechnologies">iflairwebtechnologies</a>, <a href="https://profiles.wordpress.org/isabel_brison">Isabel Brison</a>, <a href="https://profiles.wordpress.org/jdeep">Jaydeep Das</a>, <a href="https://profiles.wordpress.org/audrasjb">Jb Audras</a>, <a href="https://profiles.wordpress.org/maverick3x6">Jeff Golenski</a>, <a href="https://profiles.wordpress.org/jeffpaul">Jeffrey Paul</a>, <a href="https://profiles.wordpress.org/jhtjards">jhtjards</a>, <a href="https://profiles.wordpress.org/joedolson">Joe Dolson</a>, <a href="https://profiles.wordpress.org/johnbillion">John Blackbourn</a>, <a href="https://profiles.wordpress.org/jonsurrell">Jon Surrell</a>, <a href="https://profiles.wordpress.org/desrosj">Jonathan Desrosiers</a>, <a href="https://profiles.wordpress.org/jorgefilipecosta">Jorge Costa</a>, <a href="https://profiles.wordpress.org/greenshady">Justin Tadlock</a>, <a href="https://profiles.wordpress.org/karthickmurugan">Karthick</a>, <a href="https://profiles.wordpress.org/solankisoftware">Kirtikumar Solanki</a>, <a href="https://profiles.wordpress.org/0mirka00">Lena Morita</a>, <a href="https://profiles.wordpress.org/luisherranz">luisherranz</a>, <a href="https://profiles.wordpress.org/madhavishah01">Madhavi Shah</a>, <a href="https://profiles.wordpress.org/sirlouen">Manuel Camargo</a>, <a href="https://profiles.wordpress.org/jillro">Maud Royer</a>, <a href="https://profiles.wordpress.org/mehrazmorshed">Mehraz Morshed</a>, <a href="https://profiles.wordpress.org/monarobase">Monarobase</a>, <a href="https://profiles.wordpress.org/mrwweb">mrwweb</a>, <a href="https://profiles.wordpress.org/mukesh27">Mukesh Panchal</a>, <a href="https://profiles.wordpress.org/muryam">Muryam Sultana</a>, <a href="https://profiles.wordpress.org/mydesign78">mydesign78</a>, <a href="https://profiles.wordpress.org/narenin">Narendra Sishodiya</a>, <a href="https://profiles.wordpress.org/ntsekouras">Nik Tsekouras</a>, <a href="https://profiles.wordpress.org/ninos-ego">Ninos</a>, <a href="https://profiles.wordpress.org/noruzzaman">Noruzzaman</a>, <a href="https://profiles.wordpress.org/oglekler">Olga Gleckler</a>, <a href="https://profiles.wordpress.org/gabertronic">Ophelia Rose</a>, <a href="https://profiles.wordpress.org/ov3rfly">Ov3rfly</a>, <a href="https://profiles.wordpress.org/ozgursar">Ozgur Sar</a>, <a href="https://profiles.wordpress.org/paragoninitiativeenterprises">Paragon Initiative Enterprises</a>, <a href="https://profiles.wordpress.org/swissspidy">Pascal Birchler</a>, <a href="https://profiles.wordpress.org/vybiral">Pavel Vybíral</a>, <a href="https://profiles.wordpress.org/peterwilsoncc">Peter Wilson</a>, <a href="https://profiles.wordpress.org/pmbs">pmbs</a>, <a href="https://profiles.wordpress.org/presskopp">Presskopp</a>, <a href="https://profiles.wordpress.org/r1k0">r1k0</a>, <a href="https://profiles.wordpress.org/ramonopoly">ramonopoly</a>, <a href="https://profiles.wordpress.org/youknowriad">Riad Benguella</a>, <a href="https://profiles.wordpress.org/ricjcs">Ricardo S.</a>, <a href="https://profiles.wordpress.org/rollybueno">Rolly Bueno</a>, <a href="https://profiles.wordpress.org/mikachan">Sarah Norris</a>, <a href="https://profiles.wordpress.org/coffee2code/">Scott Reilly</a>, <a href="https://profiles.wordpress.org/sergeybiryukov">Sergey Biryukov</a>, <a href="https://profiles.wordpress.org/sajib1223">Shazzad Hossain Khan</a>, <a href="https://profiles.wordpress.org/siliconforks">siliconforks</a>, <a href="https://profiles.wordpress.org/soyebsalar01">Soyeb Salar</a>, <a href="https://profiles.wordpress.org/spielers">spielers</a>, <a href="https://profiles.wordpress.org/sabernhardt">Stephen Bernhardt</a>, <a href="https://profiles.wordpress.org/studiomondiale">studio_m</a>, <a href="https://profiles.wordpress.org/iamtakashi">Takashi Irie</a>, <a href="https://profiles.wordpress.org/inc2734">Takashi Kitajima</a>, <a href="https://profiles.wordpress.org/threadi">threadi</a>, <a href="https://profiles.wordpress.org/tobiasbg">Tobias Bäthge</a>, <a href="https://profiles.wordpress.org/shimotomoki">Tomoki Shimomura</a>, <a href="https://profiles.wordpress.org/umeshsinghin">Umesh Singh</a>, <a href="https://profiles.wordpress.org/twvania">Vania</a>, <a href="https://profiles.wordpress.org/westonruter">Weston Ruter</a>, <a href="https://profiles.wordpress.org/wfmattr">WFMattR</a>, <a href="https://profiles.wordpress.org/wolf45">wolf45</a>, <a href="https://profiles.wordpress.org/zoe20">zoe20</a></p>\n\n\n\n<h2 class="wp-block-heading">How to contribute</h2>\n\n\n\n<p class="wp-block-paragraph">To get involved in WordPress core development, head over to Trac, <a href="https://core.trac.wordpress.org/report/6">pick a ticket</a>, and join the conversation in the <a href="https://wordpress.slack.com/archives/C02RQBWTW">#core</a> channel. Need help? Check out the <a href="https://make.wordpress.org/core/handbook/">Core Contributor Handbook</a>.</p>\n\n\n\n<p class="has-text-align-right wp-block-paragraph"><em>Props to </em><a href=''https://profiles.wordpress.org/audrasjb/'' class=''mention''><span class=''mentions-prefix''>@</span>audrasjb</a>, <a href=''https://profiles.wordpress.org/davidbaumwald/'' class=''mention''><span class=''mentions-prefix''>@</span>davidbaumwald</a>, <a href=''https://profiles.wordpress.org/westonruter/'' class=''mention''><span class=''mentions-prefix''>@</span>westonruter</a>, <a href=''https://profiles.wordpress.org/jeffpaul/'' class=''mention''><span class=''mentions-prefix''>@</span>jeffpaul</a>, <a href=''https://profiles.wordpress.org/presskopp/'' class=''mention''><span class=''mentions-prefix''>@</span>presskopp</a><em> for proofreading.</em></p>\n\n\n\n<p class="wp-block-paragraph"></p>\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:7:"post-id";a:1:{i:0;a:5:{s:4:"data";s:5:"19862";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}s:27:"http://www.w3.org/2005/Atom";a:1:{s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:3:{s:4:"href";s:32:"https://wordpress.org/news/feed/";s:3:"rel";s:4:"self";s:4:"type";s:19:"application/rss+xml";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:44:"http://purl.org/rss/1.0/modules/syndication/";a:2:{s:12:"updatePeriod";a:1:{i:0;a:5:{s:4:"data";s:9:"\n	hourly	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:15:"updateFrequency";a:1:{i:0;a:5:{s:4:"data";s:4:"\n	1	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:30:"com-wordpress:feed-additions:1";a:1:{s:4:"site";a:1:{i:0;a:5:{s:4:"data";s:8:"14607090";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:12:{s:6:"server";s:5:"nginx";s:4:"date";s:29:"Wed, 18 Mar 2026 03:07:39 GMT";s:12:"content-type";s:34:"application/rss+xml; charset=UTF-8";s:4:"vary";s:37:"Accept-Encoding, accept, content-type";s:25:"strict-transport-security";s:12:"max-age=3600";s:6:"x-olaf";s:3:"⛄";s:13:"last-modified";s:29:"Thu, 12 Mar 2026 16:23:38 GMT";s:4:"link";s:63:"<https://wordpress.org/news/wp-json/>; rel="https://api.w.org/"";s:15:"x-frame-options";s:10:"SAMEORIGIN";s:16:"content-encoding";s:4:"gzip";s:7:"alt-svc";s:19:"h3=":443"; ma=86400";s:4:"x-nc";s:9:"HIT ord 1";}s:5:"build";i:1764714897;s:21:"cache_expiration_time";i:1773846459;s:23:"__cache_expiration_time";i:1773846459;}', 'off');
INSERT INTO `wpf1_options` VALUES
(6291, '_transient_googlesitekit_verification_meta_tags', 'a:0:{}', 'on'),
(6296, 'googlesitekit_active_modules', 'a:3:{i:0;s:18:"pagespeed-insights";i:1;s:11:"analytics-4";i:2;s:10:"tagmanager";}', 'auto'),
(6297, 'googlesitekit_credentials', '6gLRD3ZQBK36VVvn6ESD/0Z1dlFLemkwU1lYeFBFVXdNOWpKYzd4VnJlWFlueEpxbjBqdVhkRVZ3Y0o0cHhqWklrekZkU1k4L1hrTWJka2RvVWVkUG5jdzhtQ3BQdGVvelpsTjdXajgyTnhYL00yQWFGeDNWdDZySURMT0lEWUEzd0lXcFZucG1QdFBjbk1ndHJ0NVRjc0kxOWxQOEdhN1BLaDQ5Y3ViR2xTRTFaajJaMkoyM2pIMkh2empXVjFYWXV1TUdTNzdOUGZlWjVsYU50YkRMOTIyZmlIQXQwaDNqS2plajVmQlBLZHcvL2krbS9aU0I0ZWRJai9EZTdpVXBRY1p1dHA1ZG1kSDNWR3JzMlVIckxCWnMrMFk5L0kxbC82WENEN081QnQrUFpZNWdaT0NVMXdMQmVJMU41OGJmb1ZNVEIyWlBRPT0=', 'auto'),
(6298, 'googlesitekitpersistent_remote_features', 'a:28:{s:18:"adBlockerDetection";a:1:{s:7:"enabled";b:1;}s:9:"adsModule";a:1:{s:7:"enabled";b:1;}s:6:"adsPax";a:1:{s:7:"enabled";b:1;}s:14:"adsenseSetupV2";a:1:{s:7:"enabled";b:1;}s:20:"audienceSegmentation";a:1:{s:7:"enabled";b:1;}s:15:"conversionInfra";a:1:{s:7:"enabled";b:1;}s:19:"conversionReporting";a:1:{s:7:"enabled";b:1;}s:16:"dashboardSharing";a:1:{s:7:"enabled";b:1;}s:19:"enhancedMeasurement";a:1:{s:7:"enabled";b:1;}s:19:"ga4ActivationBanner";a:1:{s:7:"enabled";b:0;}s:12:"ga4Reporting";a:1:{s:7:"enabled";b:1;}s:8:"ga4setup";a:1:{s:7:"enabled";b:1;}s:16:"googleTagGateway";a:1:{s:7:"enabled";b:0;}s:10:"gteSupport";a:1:{s:7:"enabled";b:1;}s:14:"helpVisibility";a:1:{s:7:"enabled";b:1;}s:13:"ideaHubModule";a:1:{s:7:"enabled";b:0;}s:10:"keyMetrics";a:1:{s:7:"enabled";b:1;}s:9:"rrmModule";a:1:{s:7:"enabled";b:1;}s:14:"serviceSetupV2";a:1:{s:7:"enabled";b:1;}s:16:"setupFlowRefresh";a:1:{s:7:"enabled";b:0;}s:22:"signInWithGoogleModule";a:1:{s:7:"enabled";b:1;}s:16:"unifiedDashboard";a:1:{s:7:"enabled";b:1;}s:12:"userFeedback";a:1:{s:7:"enabled";b:1;}s:17:"widgets.dashboard";a:1:{s:7:"enabled";b:1;}s:21:"widgets.pageDashboard";a:1:{s:7:"enabled";b:1;}s:16:"yoastIntegration";a:1:{s:7:"enabled";b:1;}s:14:"zeroDataStates";a:1:{s:7:"enabled";b:1;}s:15:"last_updated_at";i:1773817319;}', 'auto'),
(6299, 'googlesitekit_connected_proxy_url', 'https://bl3arabi.com/', 'auto'),
(6300, 'googlesitekit_search-console_settings', 'a:2:{s:10:"propertyID";s:21:"https://bl3arabi.com/";s:7:"ownerID";i:1;}', 'auto'),
(6301, 'googlesitekit_owner_id', '1', 'auto'),
(6307, 'googlesitekit_analytics-4_settings', 'a:23:{s:7:"ownerID";i:1;s:9:"accountID";s:9:"377668636";s:15:"adsConversionID";s:0:"";s:10:"propertyID";s:9:"516392598";s:15:"webDataStreamID";s:11:"13136205051";s:13:"measurementID";s:12:"G-X3HTV49RS4";s:16:"trackingDisabled";a:1:{i:0;s:13:"loggedinUsers";}s:10:"useSnippet";b:1;s:11:"googleTagID";s:11:"GT-P8RL9GLQ";s:18:"googleTagAccountID";s:10:"6328562806";s:20:"googleTagContainerID";s:9:"237739966";s:32:"googleTagContainerDestinationIDs";a:1:{i:0;s:12:"G-X3HTV49RS4";}s:23:"googleTagLastSyncedAtMs";i:1765696082676;s:25:"availableCustomDimensions";N;s:18:"propertyCreateTime";i:1765695119978;s:13:"adSenseLinked";b:0;s:25:"adSenseLinkedLastSyncedAt";i:0;s:27:"adsConversionIDMigratedAtMs";i:0;s:9:"adsLinked";b:0;s:21:"adsLinkedLastSyncedAt";i:1766302066;s:14:"detectedEvents";a:0:{}s:31:"newConversionEventsLastUpdateAt";i:0;s:32:"lostConversionEventsLastUpdateAt";i:0;}', 'auto'),
(6308, '_transient_googlesitekit_conversion_reporting_skip_new_badge_events', '1', 'on'),
(6309, 'googlesitekit_conversion_tracking', 'a:1:{s:7:"enabled";b:1;}', 'auto'),
(1327, 'elementor_unfiltered_files_upload', '1', 'auto'),
(10208, '_site_transient_wp_theme_files_patterns-c54de596a5181d7eeca16c97ba231d3c', 'a:2:{s:7:"version";s:5:"3.4.6";s:8:"patterns";a:0:{}}', 'off'),
(9589, '_site_transient_timeout_php_check_e1575808cef126e0bfb4325cceefee7d', '1774046401', 'off'),
(9590, '_site_transient_php_check_e1575808cef126e0bfb4325cceefee7d', 'a:5:{s:19:"recommended_version";s:3:"8.3";s:15:"minimum_version";s:6:"7.2.24";s:12:"is_supported";b:0;s:9:"is_secure";b:1;s:13:"is_acceptable";b:1;}', 'off'),
(10102, '_site_transient_update_themes', 'O:8:"stdClass":5:{s:12:"last_checked";i:1773817836;s:7:"checked";a:4:{s:15:"hello-elementor";s:5:"3.4.6";s:16:"twentytwentyfive";s:3:"1.4";s:16:"twentytwentyfour";s:3:"1.4";s:17:"twentytwentythree";s:3:"1.6";}s:8:"response";a:1:{s:15:"hello-elementor";a:6:{s:5:"theme";s:15:"hello-elementor";s:11:"new_version";s:5:"3.4.7";s:3:"url";s:45:"https://wordpress.org/themes/hello-elementor/";s:7:"package";s:63:"https://downloads.wordpress.org/theme/hello-elementor.3.4.7.zip";s:8:"requires";s:3:"6.0";s:12:"requires_php";s:3:"7.4";}}s:9:"no_update";a:3:{s:16:"twentytwentyfive";a:6:{s:5:"theme";s:16:"twentytwentyfive";s:11:"new_version";s:3:"1.4";s:3:"url";s:46:"https://wordpress.org/themes/twentytwentyfive/";s:7:"package";s:62:"https://downloads.wordpress.org/theme/twentytwentyfive.1.4.zip";s:8:"requires";s:3:"6.7";s:12:"requires_php";s:3:"7.2";}s:16:"twentytwentyfour";a:6:{s:5:"theme";s:16:"twentytwentyfour";s:11:"new_version";s:3:"1.4";s:3:"url";s:46:"https://wordpress.org/themes/twentytwentyfour/";s:7:"package";s:62:"https://downloads.wordpress.org/theme/twentytwentyfour.1.4.zip";s:8:"requires";s:3:"6.4";s:12:"requires_php";s:3:"7.0";}s:17:"twentytwentythree";a:6:{s:5:"theme";s:17:"twentytwentythree";s:11:"new_version";s:3:"1.6";s:3:"url";s:47:"https://wordpress.org/themes/twentytwentythree/";s:7:"package";s:63:"https://downloads.wordpress.org/theme/twentytwentythree.1.6.zip";s:8:"requires";s:3:"6.1";s:12:"requires_php";s:3:"5.6";}}s:12:"translations";a:0:{}}', 'off'),
(10207, '_site_transient_timeout_wp_theme_files_patterns-c54de596a5181d7eeca16c97ba231d3c', '1773835244', 'off');

-- --------------------------------------------------------

--
