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:"


";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:112:"
	
	
	
	







































































































";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:5:"title";a:1:{i:0;a:5:{s:4:"data";s:16:"WordPress Planet";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:28:"http://planet.wordpress.org/";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:2:"en";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:47:"WordPress Planet - http://planet.wordpress.org/";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:50:{i:0;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:26:"Matt: WordPress Everywhere";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=151433";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:43:"https://ma.tt/2026/03/wordpress-everywhere/";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:6742:"<p class="wp-block-paragraph">As we <a href="https://wordpress.org/news/2026/03/announcing-my-wordpress/">announced</a> and <a href="https://techcrunch.com/2026/03/11/wordpress-debuts-a-private-workspace-that-runs-in-your-browser-via-a-new-service-my-wordpress-net/">TechCrunch covered</a>, <a href="https://my.wordpress.net/">my.wordpress.net</a> has soft-launched.</p>



<p class="wp-block-paragraph">What this means is you need to fundamentally shift how you think about WordPress. </p>



<p class="wp-block-paragraph">From the beginning, WordPress has always been open source, giving you freedom, liberty, autonomy, and digital sovereignty. <a href="https://automattic.com/creed/">Open source is the most powerful idea of our generation</a>.</p>



<p class="wp-block-paragraph">For the past few decades, WordPress was software you got from a cloud provider or web host, such as <a href="https://wordpress.com/">WordPress.com</a>, <a href="https://www.bluehost.com/">Bluehost</a>, <a href="https://www.hostinger.com/">Hostinger</a>, or <a href="https://pressable.com/">Pressable</a> (the currently <a href="https://wordpress.org/hosting/">recommended WordPress hosts</a>). You could self-host it on a Raspberry Pi or home server, but few people did.</p>



<p class="wp-block-paragraph">The experience of <a href="https://wordpress.org/download/">downloading WordPress</a>, as my Mom did, is that it unzips a bunch of PHP and various code files onto your desktop. Very confusing!</p>



<p class="wp-block-paragraph">But now, thanks to incredible advances in <span style="margin: 0px; padding: 0px;"><a href="https://webassembly.org/" target="_blank">WebAssembly (WASM)</a>, we can spin up a web server, a database (SQLite or MariaDB), and a full WordPress installation</span> inside your browser in about 30 seconds. Instantly. No server needed. <a href="https://youtu.be/VeigCZuxnfY?t=2914">I introduced Playground at State of the Word in 2022</a>.</p>



<p class="wp-block-paragraph">You can even use it to cross-publish apps to the web, desktop, and iOS, like <a href="https://wptavern.com/blocknotes-app-runs-wordpress-natively-on-ios-now-in-public-beta">Blocknotes did in 2023</a>. You <a href="https://blocknotes.org/">can get the latest Blocknotes at Blocknotes.org</a>. One codebase, multiple platforms.</p>



<p class="wp-block-paragraph">These <a href="https://wordpress.org/playground/">WordPress Playground </a>containers are fully composable and atomic. You can track and roll back any change. Undo for everything. Stop thinking of WordPress as just on a web host and worrying about maintenance and management, and more as a self-contained unit of open source goodness, a fun little package where you own and control the code and data and can run it however you like.</p>



<p class="wp-block-paragraph">How perfect is that for AI to work with? <a href="https://wordpress.org/playground/">Playground</a> makes WordPress local, fast, and trivial to spin up multiple instances, test code changes, and save them.</p>



<p class="wp-block-paragraph">Next up, we&#8217;re going to add peer-to-peer sync, version control integration, and cloud publishing so other people can access it.</p>



<p class="wp-block-paragraph">I believe this will take us <a href="https://w3techs.com/technologies/history_overview/content_management/all/y">from millions of WordPresses</a> in the world to billions. Hosting isn&#8217;t going away; in fact, I think demand for cloud syncing will increase drastically as we radically open up what people can build on top of WordPress.</p>



<p class="wp-block-paragraph">In an AI age where it&#8217;s trivial to spin up software from scratch, consumers will have to give much more thought to brands they trust to be in it for the long term. We&#8217;ve been relentlessly iterating on WordPress since 2003. I plan to work on it the rest of my life, and there&#8217;s a broad community of hundreds of thousands, if not millions, of people who make their living on top of WordPress. </p>



<p class="wp-block-paragraph">On WordPress.com we offer <a href="https://wordpress.com/100-year/">100-year plans</a> and <a href="https://wordpress.com/100-year-domain/">100-year domains</a>, and I believe we&#8217;re one of the few companies where that&#8217;s credible. It&#8217;s led by Zander Rose, who ran the <a href="https://longnow.org/">Long Now Foundation</a> (one of my favorite non-profits) from 1997 to 2023, a quarter century.</p>



<p class="wp-block-paragraph">In core WordPress, we are <em>obsessed</em> with backwards compatibility. You can run plugins and themes written 20 years ago on today&#8217;s WordPress. I&#8217;ve stumbled on decade-old installs, and the built-in auto-upgrade took everything to the newest version.</p>



<p class="wp-block-paragraph">At <a href="https://automattic.com/">Automattic</a>, for better and worse, <a href="https://killedbygoogle.com/">unlike Google</a>, we almost never shut things down. We obsess about <a href="https://blog.archive.org/2026/02/04/inside-the-new-wayback-machine-plugin-for-wordpress/">maintaining or redirecting permalinks</a>. We make it easy not just to get your data in, but take it out too. We build businesses that lower churn not by locking you in (<a href="https://support.wix.com/en/article/exporting-or-embedding-your-wix-site-elsewhere">Wix famously has no export</a>) but by making it easy for you to leave. <a href="https://www.youtube.com/watch?v=LSGl3d4KOMk">If you love somebody, set them free</a>.</p>



<p class="wp-block-paragraph">In the next few years, there will be a <a href="https://en.wikipedia.org/wiki/Cambrian_explosion">Cambrian explosion</a> of software and services. You&#8217;re going to have a lot of choices about where to put your most precious data and software. You should demand open source and bet on those who are clearly in it for the long-term.</p>



<p class="wp-block-paragraph">Today, everyone gets a phone number and email when they grow up. That will expand in the future, everyone will have <a href="https://wordpress.com/domains/">a domain</a> and a WordPress. A part of the internet that you own.</p>



<p class="wp-block-paragraph">Technology is best when it brings people together. Technology is best when it puts you in control, gives you ownership, digital autonomy, freedom, and liberty. That&#8217;s open source. It&#8217;s so exciting to see how AI is supercharging open source.</p>



<p class="wp-block-paragraph"><a href="http://make.wordpress.org/">Join the WordPress community</a>. It&#8217;s fun! We have cookies that don&#8217;t track you. <img alt="😉" class="wp-smiley" src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" style="height: 1em;" /></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, 12 Mar 2026 02:07: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: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:1;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:43:"WordPress.org blog: 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:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=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:"";}}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:11:"description";a:1:{i:0;a:5:{s:4:"data";s:2239:"<h2 class="wp-block-heading">WordPress 6.9.4 is now available!</h2>



<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>



<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>



<p class="wp-block-paragraph">Because this is a security release,<strong> it is recommended that you update your sites immediately</strong>.</p>



<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>



<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>



<h2 class="wp-block-heading">Security updates included in this release</h2>



<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>



<ul class="wp-block-list">
<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>



<li>An authorization bypass on the Notes feature reported by <a href="https://profiles.wordpress.org/kaminuma/">kaminuma</a></li>



<li>An XXE in the external getID3 library reported by <a href="https://profiles.wordpress.org/regex33/">Youssef Achtatal</a></li>
</ul>";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: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:"";}}}}}i:2;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:63:"WPTavern: #208 – Behind the Scenes at the CloudFest Hackathon";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=203053";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:77:"https://wptavern.com/podcast/208-behind-the-scenes-at-the-cloudfest-hackathon";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:34011:"<details>Transcript<div>
<p class="wp-block-paragraph">[00:00:00] <strong>Nathan Wrigley:</strong> Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.</p>



<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 a firsthand look at the CloudFest Hackathon.</p>



<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>



<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>



<p class="wp-block-paragraph">So on the podcast today, we have something different. Usually it&#8217;s me, Nathan Wrigley, chatting with a guest about something related to WordPress, whether that&#8217;s a plugin, Core updates, or perhaps an aspect of the WordPress community.</p>



<p class="wp-block-paragraph">This time around, it&#8217;s me, and later on, a bunch of guests talking about an event. The event in question has already taken place, but the next iteration of it is just around the corner. And if you read the title of this episode, you&#8217;ll already know that I&#8217;m talking about CloudFest.</p>



<p class="wp-block-paragraph">CloudFest is an unusual event. The most obvious indicator of this fact is that it takes place in Europa Park in Rust, Germany. It&#8217;s one of the world&#8217;s premier theme parks.</p>



<p class="wp-block-paragraph">CloudFest is at its heart, a tech conference, but every year, just before the main CloudFest conference begins, a very different event takes place. It&#8217;s called the CloudFest Hackathon. So whilst the rollercoasters are testing the laws of physics outside, inside a group of developers, UX designers and system architects are testing the limits of the modern internet.</p>



<p class="wp-block-paragraph">Dozens of the world&#8217;s most talented engineers strip away the corporate sales pitches and set themselves a variety of collaborative challenges to be completed in just three days. Now we see hackathons all the time. Usually they&#8217;re sponsored by a single company trying to get people to use their specific API, or their high pressure competitions, to build a disruptive startup in 48 hours. But the CloudFest Hackathon isn&#8217;t like this. It&#8217;s professional, it&#8217;s non-commercial, and its primary intention isn&#8217;t necessarily to build a product, it&#8217;s to maintain the ecosystem.</p>



<p class="wp-block-paragraph">So let&#8217;s hear from somebody who knows all about the CloudFest Hackathon, and that person, is Carole Olinger.</p>



<p class="wp-block-paragraph">[00:03:04] <strong>Carole Olinger:</strong> My name is Carole, and I am the head of CloudFest Hackathon. I&#8217;m very excited about my role here and to be able to connect so many awesome people and talent around the world.</p>



<p class="wp-block-paragraph">So I think there are multiple definitions for a hackathon. In this case I would probably define it as a gathering of open source enthusiasts who are going to be working and coding and designing a lot of exciting projects together. They haven&#8217;t met before in many cases, and they are put in the same room for three days being fed, being caffeinated and trying to improve the open web.</p>



<p class="wp-block-paragraph">[00:03:42] <strong>Nathan Wrigley:</strong> Who&#8217;s on the organizing team?</p>



<p class="wp-block-paragraph">[00:03:44] <strong>Carole Olinger:</strong> So basically, I am leading the whole operation in my role for CloudFest and the World Hosting Days. And I have the most amazing supporting team around me that anyone could ever imagine. So it is Lucas Ratke from Automattic, Alain Schlesser from Yoast, and Thierry Muller from Google, who are on the project support team, and making sure that we have all these really valuable projects in our event. And that project leads are prepared in the best possible way.</p>



<p class="wp-block-paragraph">And for the first time we also have a volunteer that is helping during the event. And is specifically helping me wrangling the 110 amazing sheep around me, and to make sure that there are accommodations are covered. That all the catering is being done. And that is a Simon Kraft from Group One.</p>



<p class="wp-block-paragraph">[00:04:36] <strong>Nathan Wrigley:</strong> I show up to an event like this, all the jigsaw pieces are in place you think, oh, it just happens, but of course it doesn&#8217;t just happen. How long have you spent working on this event? How long have you been wrangling this whole thing into existence?</p>



<p class="wp-block-paragraph">[00:04:49] <strong>Carole Olinger:</strong> Usually we start in September. And then it&#8217;s more okay, what are our objectives? What are our goals for this edition? We are really trying to take as much feedback as possible from previous year&#8217;s attendees, to make sure that we have improvements in place and new additions to the event for the following edition. So that happens in September. Creating the team, making sure that we have specific objectives and goals and those are manageable.</p>



<p class="wp-block-paragraph">And then the actual work starts in October, and then becoming more and more intense over the upcoming months. And I would say January is probably the most crazy month. I barely slept.</p>



<p class="wp-block-paragraph">[00:05:31] <strong>Nathan Wrigley:</strong> So the idea really is that you put. In this case, 10 projects in a room. You&#8217;ve got 10 project leads and, in some cases there&#8217;s multiple people leading a project. And then you add into that mix over a hundred people, many of whom appear to be developers, and you stir that pot up a bit, and hope that things come out the end that are useful, that have been enjoyable to work on.</p>



<p class="wp-block-paragraph">How do you decide what the 10, in this case, projects were? And are you oversubscribed with people wishing to be a part of it? And so how do you decide what makes it? How do you decide which projects are interesting to CloudFest Hackathon each year?</p>



<p class="wp-block-paragraph">[00:06:10] <strong>Carole Olinger:</strong> So this has been evolving over the years. So I remember additions, three or four years ago, or previous to the pandemic. Where our project team was pulling projects out of the different CMS communities, open source project communities. So we had ideas about what we wanted to tackle, and some projects came out of the communities. So we were like hunting ideas, and also planting ideas inside communities.</p>



<p class="wp-block-paragraph">This year is the first year where we didn&#8217;t have to do any of that. We had 22 pitches from different CMS communities and other open source projects that were pitching their ideas to us. So it was like a kind of a hard choice to determine which ones are going to make it.</p>



<p class="wp-block-paragraph">So usually we are trying to take into consideration what the theme of the main event CloudFest is, and obviously as everyone is excited about AI these days, that is something we wanted to cover. So we made sure we had some projects that had AI involvement. And then what is really important to my heart, and to the team&#8217;s heart, is that we are having cross CMS collaborations.</p>



<p class="wp-block-paragraph">So we are trying to have WordPress people here, which is obviously the community that I am mostly connected with. But also TYPO3. TYPO3 is one of our, the W3 Association is one of our top level sponsors. We since years we have Joomla people, Drupal people joining us. We are trying to find a good mix to empower those cross CMS collaborations and also cross-project collaborations. So even within one platform, just to name WordPress as an example, we try to make sure that we have projects that could eventually benefit from each other.</p>



<p class="wp-block-paragraph">[00:07:54] <strong>Nathan Wrigley:</strong> I&#8217;m guessing also, there&#8217;s a component of trying to work out projects that if you put a hundred people in a room, there&#8217;s not a hundred replicas of the same person. Each of them are different. That there are 10 different places where they can land. Because one thing that I didn&#8217;t realize and was really curious to me, is when the Hackathon started, apart from the project leads, nobody&#8217;s assigned a place to go. They listen to a little speech at the beginning. It&#8217;s like a promotional thing. Two minutes, this is what we want to do, the pitch. And then the people make a decision. And for 10 minutes or something, there&#8217;s this sort of chaotic moving of people around, and then it all settles down.</p>



<p class="wp-block-paragraph">So presumably you have a wide array of project pitches, so that those a hundred plus people can decide, they&#8217;re not all surrounding the one table and there&#8217;s a table over there that&#8217;s empty, I guess that fits in the jigsaw as well.</p>



<p class="wp-block-paragraph">[00:08:44] <strong>Carole Olinger:</strong> So we are taking very much care about the selection process of applicants. So when we know what our projects are going to look like, we are trying to match their needs in terms of skills that attendees are going to present to us during their application.</p>



<p class="wp-block-paragraph">So usually we have between 300 and 400 applications for the Hackathon, and we have 110 slots. But, and this is important to understand, our partners are bringing team members within these 110 attendees. And our partners this year have been super actively involved, which I love. So they were not only giving us money to make this event possible, to be able to invite open source contributors to this place, including their hotel, accommodation and food. They were bringing, people resources. I hate the term, but you know what I mean. So they were sending their crew to lead, to participate in these open source ideas and projects. So in the end we had 60 available spots for open source contributors. And then we made sure that we are matching the skills that they were sharing with us in their applications with the needs that the projects will have on the table.</p>



<p class="wp-block-paragraph">So we have a pretty good understanding already about who&#8217;s going to be at what table. And obviously we are monitoring that. So we give them some time to make the decisions. And if we see that there are skills missing at a certain table, or if there&#8217;s another table that is going to be too full and too complicated to manage by the project lead, we are kindly convincing, and reassigning people, to participate in different projects.</p>



<p class="wp-block-paragraph">[00:10:19] <strong>Nathan Wrigley:</strong> So that&#8217;s interesting. So it&#8217;s not just a free for all? The idea is to maximize the output of the projects, the 10 different projects at the end, and you will, like you said, politely, ask people to move over if you believe that the thing that they have said that they&#8217;re good at, is, matching. And there&#8217;s a, I don&#8217;t know, a hole in one particular project.</p>



<p class="wp-block-paragraph">That brings me to this question then. Is the intention that these projects have a life after this event has finished? Or is it just a case of, okay, we&#8217;ve all had a nice time, the event has closed, let&#8217;s all move on with our lives.</p>



<p class="wp-block-paragraph">[00:10:48] <strong>Carole Olinger:</strong> This is becoming more and more important to us. As I said earlier, we are trying to improve something every year like, like focusing on something when we are fixing our goals that we can do better every year. And what we can definitely do better is spreading the word about what amazing achievements the teams have been building during the event, and make sure that this project&#8217;s become more sustainable. So that the world knows that there&#8217;s potential in the outcomes of CloudFest Hackathon project, and to potentially unlock support and resources for these projects to continue.</p>



<p class="wp-block-paragraph">I would love to spread the word, making it possible to unlock these resources. And then also inside our team, building more and more resources to follow up with this project leads from our end.</p>



<p class="wp-block-paragraph">[00:11:33] <strong>Nathan Wrigley:</strong> There&#8217;s an element of, how to describe it? There&#8217;s this time pressure in the whole event. So that the thing is basically three days long, from inception until final judging, three days. So the pressure is on, and I can feel at the moment the pressure is increasing slightly. You can sense that people are getting quite into the project they&#8217;re working on.</p>



<p class="wp-block-paragraph">I noticed last night, long after the event had officially closed down, there was quite a lot of people still sitting there. They&#8217;re were obviously wedded to what they&#8217;re doing. There is this sort of like Shark Tank element where there&#8217;s going to be a judgment at the end and somebody&#8217;s going to win.</p>



<p class="wp-block-paragraph">How does that work? Who gets to decide who&#8217;s the winner?</p>



<p class="wp-block-paragraph">[00:12:06] <strong>Carole Olinger:</strong> So we do have a jury, and the jury is composed of representatives of our top tier partners. And they send one representative to the jury. Then we do have one representatives from the Groundbreaker Talents charity project. Because, on a side note, all these awards are being sponsored by companies, and everything that we are collecting in terms of sponsorships is going to the Groundbreak Talents initiative. And then we have the project support team, and myself being on the juries. And it&#8217;s an uneven number. So we have nine people, which is always good to have on a jury. And after the presentation of results on the last day of the hackathon, the jury is going to deliberate.</p>



<p class="wp-block-paragraph">And then we are going to listen to the project support team, who has been working the room and connecting with the project tables during the three days in terms of technical achievements, challenges they have seen. So they&#8217;re going to give us some impression on that. And that is mostly important for the Tech Visionary Award. And then, all of us have had the chance to obviously see the presentations, which is important for the Pitch Perfect Award. Who has the most appealing presentation of results? We do have the Social Media Master Award, that is fully being tracked.</p>



<p class="wp-block-paragraph">So Simon and I, we are going to give the jury some insights on who has created the most boss on social media. . And, then we do have the Breaking Barriers Award, which is a new one. So this is about using inclusive technologies, and getting some outputs that are going to be helpful for a diverse set of users, and connecting people on the user base, but also how the people have been working together in terms of having diverse skills and perspectives on the table.</p>



<p class="wp-block-paragraph">So these are some of the awards, and there&#8217;s going to be an overall winner. We have five categories, and an overall winner. And the overall winner is, the one that has the most points.</p>



<p class="wp-block-paragraph">Thanks to Carole for that comprehensive introduction to the CloudFest Hackathon. Now, let&#8217;s look at the why. Why do people travel from 30 plus different countries around the world to do all of this?</p>



<p class="wp-block-paragraph">In our industry, we talk a lot about the cloud, but we often forget that the cloud is just a massive collection of interconnected open source projects. You have WordPress powering 40 plus percent of the web, you have the Linux kernel, you&#8217;ve got PHP and Python communities, and then you have the hosting providers and hardware manufacturers. Normally, these groups live in silos. They communicate via GitHub issues or formal API documentation. Well, the intention of the hackathon is to create what might be called the human API. It&#8217;s about taking a person who might maintain a security plugin, and sitting them at the same table as an engineer who manages millions of servers for a global host.</p>



<p class="wp-block-paragraph">When you remove the barrier of the screen, the friction of the internet disappears. Problems that have been sitting in a backlog for six months get solved over a coffee, or a shared meal because the right people are finally in the same physical space.</p>



<p class="wp-block-paragraph">Although, as Carole mentioned, there is a winner, this isn&#8217;t really about winning a prize. In fact, the prizes are almost secondary to the real goal, which is contributing back to open source projects, some of which already exist, some of which are new. The intention is all free and open source software or FOSS for short.</p>



<p class="wp-block-paragraph">These contributors aren&#8217;t there to build something proprietary and closed. They&#8217;re there to ensure the plumbing of the internet stays robust, secure, and interoperable. Oh, and to have some fun collaborating at the same time.</p>



<p class="wp-block-paragraph">Speaking of contributors, let&#8217;s hear from some of them now and get a little taste of what their project was all about.</p>



<p class="wp-block-paragraph">The room as you will hear was a little noisy.</p>



<p class="wp-block-paragraph">[00:15:52] <strong>Javier Casares:</strong> I am Javier Casares and I am one of the co-leads from for the CMS Cloud Manager Project.</p>



<p class="wp-block-paragraph">[00:15:58] <strong>Nathan Wrigley:</strong> What does this project hope to achieve?</p>



<p class="wp-block-paragraph">[00:16:00] <strong>Javier Casares:</strong> Usually when you have a cPanel or Plesk or some kind of panel, you can install a WordPress, for example, with one click, but the server is not configured.</p>



<p class="wp-block-paragraph">So in this project, we want to configure not only the CMS, but also the server where the CMS is going to be</p>



<p class="wp-block-paragraph">[00:16:20] <strong>Nathan Wrigley:</strong> And how&#8217;s it going so far?</p>



<p class="wp-block-paragraph">[00:16:22] <strong>Javier Casares:</strong> It&#8217;s fine. We have the public part because we want to have a website so you can configure things and prepare everything. And then we have this software, the real software that creates everything. And more or less it&#8217;s, fine, at this moment. So I think we can achieve everything for the hackathon, for the finals.</p>



<p class="wp-block-paragraph">[00:16:46] <strong>Mattias Pfefferle:</strong> I&#8217;m Mathias. I am working on Activity Pub and the Fediverse.</p>



<p class="wp-block-paragraph">[00:16:51] <strong>Nathan Wrigley:</strong> And what&#8217;s the project that you&#8217;re working on at CloudFest, the Hackathon?</p>



<p class="wp-block-paragraph">[00:16:55] <strong>Mattias Pfefferle:</strong> We are working on federated events. So it&#8217;s very much a special case of the Fediverse.</p>



<p class="wp-block-paragraph">[00:17:02] <strong>Nathan Wrigley:</strong> And what is the intention of the project? What are you hoping to get out of it?</p>



<p class="wp-block-paragraph">[00:17:05] <strong>Mattias Pfefferle:</strong> We try to build a decentralized, alternative to the big social networks around events, so that people does not have to rely on something they do not have control over. So we would hope to get an alternative to meetup.com, maybe, or any other big closed proprietary social network, around events.</p>



<p class="wp-block-paragraph">[00:17:29] <strong>Nathan Wrigley:</strong> And how&#8217;s it going so far?</p>



<p class="wp-block-paragraph">[00:17:30] <strong>Mattias Pfefferle:</strong> It&#8217;s mixed, because even if it&#8217;s a standard, there are different variations of using the standard. So we filed a lot of bug reports, and tried to work on a standard that better describes the standard , if that makes sense? And we&#8217;re trying to make federation happen using WordPress and some other platforms that are built by people that are part of the Hackathon team.</p>



<p class="wp-block-paragraph">[00:17:58] <strong>Milana Cap:</strong> My name is Milana Cap, and I&#8217;m on a project WPCLI as MCP. MCP stands for Milana Cap pro. No, it doesn&#8217;t</p>



<p class="wp-block-paragraph">[00:18:09] <strong>Nathan Wrigley:</strong> What is the intention of this project then?</p>



<p class="wp-block-paragraph">[00:18:11] <strong>Milana Cap:</strong> We are introducing AI into WPCLI. So, you could use AI in different aspects of WordPress, like content creation and all of that. But it was missing in development process, especially in local instances. So now we have that, and it&#8217;s actually a lot of fun. Much more fun than I thought.</p>



<p class="wp-block-paragraph">[00:18:32] <strong>Nathan Wrigley:</strong> And how&#8217;s it going so far?</p>



<p class="wp-block-paragraph">[00:18:34] <strong>Milana Cap:</strong> So far we build a spam machine, and that&#8217;s official name. And we actually had a MVP on first day. It&#8217;s really fun. Yeah. And we are just learning how this AI is behaving by itself in our locals.</p>



<p class="wp-block-paragraph">[00:18:52] <strong>Patricia BT:</strong> Hello, Nathan. I&#8217;m Patricia BT. I&#8217;m living in Geneva, Switzerland. I speak French, and I am my own boss, . And I came, with that pitch, as a project for the Hackathon because for me it&#8217;s very important to own your data and preserve what exists on the web, and not lose anything.</p>



<p class="wp-block-paragraph">[00:19:11] <strong>Nathan Wrigley:</strong> And what&#8217;s the name of your project?</p>



<p class="wp-block-paragraph">[00:19:13] <strong>Patricia BT:</strong> CMS Freedom.</p>



<p class="wp-block-paragraph">[00:19:14] <strong>Nathan Wrigley:</strong> And how&#8217;s it going so far?</p>



<p class="wp-block-paragraph">[00:19:16] <strong>Patricia BT:</strong> It&#8217;s going very well. We have, tech people here, engineer, who are doing amazing work with, especially LLMs. So we are using AI to grab any HTML content and discover the format, the elements, and then later be able to import that into WordPress block theme.</p>



<p class="wp-block-paragraph">For now it&#8217;s WordPress block theme and content. And later the hope is that people from other CMSs, other system, can just modify that last bit and import what the tool extracts, and import to their own system. So we can move from any HTML, render any page on the web and create that for your CMS.</p>



<p class="wp-block-paragraph">[00:19:59] <strong>Nemanja Cimbaljevic:</strong> Hi, I am Nemanja. I come from Serbia and currently I&#8217;m with GoDaddy as a software engineer.</p>



<p class="wp-block-paragraph">[00:20:05] <strong>Nathan Wrigley:</strong> And what&#8217;s the name of your project?</p>



<p class="wp-block-paragraph">[00:20:07] <strong>Nemanja Cimbaljevic:</strong> I will not break my tongue. We will call it AI Accessibility Content Updater.</p>



<p class="wp-block-paragraph">[00:20:12] <strong>Nathan Wrigley:</strong> And what is the intention? What are you hoping to achieve over these three days?</p>



<p class="wp-block-paragraph">[00:20:16] <strong>Nemanja Cimbaljevic:</strong> We will try to make a proof of concept that will allow us to move on in the future where the AI is capable to help with accessibility of the websites that can be improved? Not all of them.</p>



<p class="wp-block-paragraph">[00:20:29] <strong>Nathan Wrigley:</strong> Are there any constraints around what it is that you are hoping to be able to do? Or is it literally all the accessibility?</p>



<p class="wp-block-paragraph">[00:20:35] <strong>Nemanja Cimbaljevic:</strong> It&#8217;s all about accessibility, and yes, we will see where we will go. It was announced as a trial and error. So we will see if there is any trial or just error.</p>



<p class="wp-block-paragraph">[00:20:48] <strong>Anne-Mieke Bovelett:</strong> Hi, I&#8217;m Anne Bovelett.</p>



<p class="wp-block-paragraph">[00:20:50] <strong>Nathan Wrigley:</strong> And what&#8217;s the name of the project you&#8217;ve got at CloudFest Hackathon?</p>



<p class="wp-block-paragraph">[00:20:54] <strong>Anne-Mieke Bovelett:</strong> It&#8217;s called Accessible Infographics.</p>



<p class="wp-block-paragraph">[00:20:56] <strong>Nathan Wrigley:</strong> And what is the intention? What are you hoping to achieve in these three days?</p>



<p class="wp-block-paragraph">[00:21:01] <strong>Anne-Mieke Bovelett:</strong> Right now we&#8217;re creating a plugin for WordPress. . And when you have infographics on your site because you produce medicine, or machines, or you have statistics on your site. You can use our WordPress block, and upload an image through that, and then it will help you to make it accessible by creating extra information under the hood.</p>



<p class="wp-block-paragraph">And the best thing of this is it&#8217;s not just going to be for WordPress, because we&#8217;re conceptualizing that for others so they can easily recreate this in other open source CMSs. And it will save millions and millions of people from sitting in the dark with very important information on websites.</p>



<p class="wp-block-paragraph">What it actually means is that, also when we manage to move on with this project in the next phase, we&#8217;re gonna try and do this in bulk. To do it backwards for companies that already have a lot of infographics on their website, and understand that they have to do it either by law, or because they&#8217;re smart and want higher converting web shops, for example.</p>



<p class="wp-block-paragraph">And then the possibility will come that they can do that backwards in bulk, and it will save them thousands and thousands in money that they have to invest in making this happen.</p>



<p class="wp-block-paragraph">[00:22:20] <strong>Wesley Stessens:</strong> Yes. My name is Wesley Stessens, and I&#8217;m from Belgium, and we work on the Peer-to-peer Federated RAG Framework with, our team.</p>



<p class="wp-block-paragraph">[00:22:30] <strong>Nathan Wrigley:</strong> And can I ask, what is the intention of that project over the three days? What are you hoping to achieve?</p>



<p class="wp-block-paragraph">[00:22:35] <strong>Wesley Stessens:</strong> We are hoping to achieve something that hasn&#8217;t been done before in the, in the RAG space.</p>



<p class="wp-block-paragraph">So basically RAG, or Retrieval Augmented Generation is way how you can augment an LLM and AI with extra data. And we want to allow everyone to create their own databases. And anyone can just join our network with their own knowledge.</p>



<p class="wp-block-paragraph">For example, someone who knows a lot about beers, they can join our network and have like a library full of all information about very specific niche beers, maybe beers they brew themselves or whatever. And then any other node in the network can ask a specific question. And then our purpose is to route that question to the best matching node in a decentralized way. So there&#8217;s no servers or big companies. In between everything is done in a peer to peer way. So they get back the best matching documents from other people&#8217;s libraries, so to speak.</p>



<p class="wp-block-paragraph">And then we use that to ask an LLM, or an AI a question with the context that we got from other people&#8217;s databases that matched best. And now we show the results to the user, or we create like a chat interface maybe around that. That&#8217;s the end result that we hope to achieve.</p>



<p class="wp-block-paragraph">[00:23:49] <strong>Tadas Pukas:</strong> I&#8217;m Tadas.</p>



<p class="wp-block-paragraph">[00:23:50] <strong>Nathan Wrigley:</strong> And what is the name of the project?</p>



<p class="wp-block-paragraph">[00:23:52] <strong>Tadas Pukas:</strong> It&#8217;s WordPress Staging Environment Manager. It&#8217;s a bit complex to understand, but it does very simple thing.</p>



<p class="wp-block-paragraph">[00:23:59] <strong>Nathan Wrigley:</strong> And what&#8217;s the intention at the end of these three days? What would you ideally like to be shipping? Have finished?</p>



<p class="wp-block-paragraph">[00:24:05] <strong>Tadas Pukas:</strong> Yeah, so we want to have open source plugin, and actually we have it almost, so it&#8217;s the final touches.</p>



<p class="wp-block-paragraph">And this will be distributed. It&#8217;s already in the public GitHub repo. So people will be able to download zip file, install a plugin, and create staging environments. Not only create but sync changes from staging to live. Actually, our name of the plugin is Staging to Live, so it&#8217;s, yeah, almost done.</p>



<p class="wp-block-paragraph">Almost ready.</p>



<p class="wp-block-paragraph">[00:24:29] <strong>Nathan Wrigley:</strong> Okay. I hope that you enjoyed this different style of podcast. Hopefully you learned something about CloudFest and the CloudFest Hackathon.</p>



<p class="wp-block-paragraph">You certainly got to hear from a wide variety of contributors, and got to peel back the curtain about what a hackathon is, and the different projects people work on. There&#8217;s a great energy at events like this, and maybe this will convince you to explore hackathons in the future.</p>



<p class="wp-block-paragraph">You don&#8217;t need to be a coder. Each project needs a wide array of talents from coders to marketers, designers, to project wranglers.</p>



<p class="wp-block-paragraph">Like I said, at the top of the show, CloudFest 2026 is just around the corner. There&#8217;s an annual event both in the US and the one discussed here in Germany.</p>



<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.</p>



<p class="wp-block-paragraph">And we&#8217;ll be back next week with more from CloudFest and the CloudFest Hackathon.</p>
</div></details>



<p class="wp-block-paragraph">On the podcast today we have something different.</p>



<p class="wp-block-paragraph">Usually it’s me, Nathan Wrigley, chatting with a guest about something related to WordPress, whether that’s a plugin, Core updates or perhaps an aspect of the WordPress community. </p>



<p class="wp-block-paragraph">This time around it’s me, and later on a bunch of guests talking about an event. The event in question has already taken place, but the next iteration of it is just around the corner, and if you read the title of the episode, you’ll already know that I’m talking about <a href="https://www.cloudfest.com">CloudFest</a>.</p>



<p class="wp-block-paragraph">CloudFest is an unusual event; the most obvious indicator of this is the fact that it takes place in Europa-Park in Rust, Germany. It’s one of the world’s premier theme parks.</p>



<p class="wp-block-paragraph">CloudFest is at its heart a tech conference, but every year, just before the main CloudFest conference begins, a very different event takes place. It’s called the <a href="https://hackathon.cloudfest.com">CloudFest Hackathon</a>. So, whilst the roller coasters are testing the laws of physics outside, inside, a group of developers, UX designers, and system architects are testing the limits of the modern internet.</p>



<p class="wp-block-paragraph">Dozens of the world’s most talented engineers, strip away the corporate sales pitches, and set themselves a variety of collaborative challenges, to be completed in just three days.</p>



<p class="wp-block-paragraph">Now, we see &#8220;hackathons&#8221; all the time. Usually, they’re sponsored by a single company trying to get people to use their specific API, or they’re high-pressure competitions to build a &#8220;disruptive&#8221; startup in 48 hours. But the CloudFest Hackathon is not like this. It’s professional, it’s non-commercial, and its primary intention isn&#8217;t to build a product, it’s to maintain the ecosystem.</p>



<p class="wp-block-paragraph">Today we&#8217;re going to be hearing from a variety of people who were involved in the 2025 event. The 2026 event is just around the corner.</p>



<p class="wp-block-paragraph">You&#8217;ll hear from:</p>



<ul class="wp-block-list">
<li>Carole Olinger (the Hackathon lead)</li>



<li>Javier Casares</li>



<li>Mattias Pfefferle</li>



<li>Milana Cap</li>



<li>Patricia BT</li>



<li>Nemanja Cimbaljevic</li>



<li>Anne-Mieke Bovelett</li>



<li>Wesley Stessens</li>



<li>Tadas Pukas</li>
</ul>



<p class="wp-block-paragraph">They&#8217;re a tiny sample of who was present at the event, but hopefully they will give you a flavour of what the CloudFest Hackathon is, why people attend, and what kinds of projects they&#8217;re involved in.</p>



<h2 class="wp-block-heading">Useful links</h2>



<p class="wp-block-paragraph"><a href="https://www.cloudfest.com/blog/cloudfest-hackathon-2025-review">CloudFest Hackathon 2025 Recap</a></p>



<p class="wp-block-paragraph"><a href="https://www.cloudfest.com">CloudFest</a></p>



<p class="wp-block-paragraph"><a href="https://hackathon.cloudfest.com">CloudFest Hackathon</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, 11 Mar 2026 14: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:3;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:55:"WordPress.org blog: 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:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=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:"";}}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:11:"description";a:1:{i:0;a:5:{s:4:"data";s:10343:"<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>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-20049" height="421" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image1-revised.png?resize=1024%2C421&#038;ssl=1" width="1024" /></figure>



<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>



<h2 class="wp-block-heading"><strong>New Ways to WordPress</strong></h2>



<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>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<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>
</blockquote>



<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>



<h2 class="wp-block-heading"><strong>Permanently and Privately Yours</strong></h2>



<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>



<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>



<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>



<h2 class="wp-block-heading"><strong>Sparking Creativity with Apps</strong></h2>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-20046" height="566" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image4-revised.png?resize=1024%2C566&#038;ssl=1" width="1024" /></figure>



<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>



<h3 class="wp-block-heading"><strong>Personal CRM</strong></h3>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-20048" height="531" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image2-revised.png?resize=1024%2C531&#038;ssl=1" width="1024" /></figure>



<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>



<h3 class="wp-block-heading"><strong>Personal RSS Reader</strong></h3>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-20043" height="553" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image7-revised.png?resize=1024%2C553&#038;ssl=1" width="1024" /></figure>



<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>



<h3 class="wp-block-heading"><strong>AI Workspace and Knowledge Base</strong></h3>



<figure class="wp-block-gallery has-nested-images columns-default wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large wp-lightbox-container"><img alt="" class="wp-image-20045" height="540" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image5-revised.png?resize=1024%2C540&#038;ssl=1" width="1024" /><button class="lightbox-trigger" type="button">
			<svg fill="none" height="12" viewBox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg">
				<path 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" fill="#fff">
			</svg>
		</button></figure>



<figure class="wp-block-image size-large wp-lightbox-container"><img alt="" class="wp-image-20044" height="539" src="https://i0.wp.com/wordpress.org/news/files/2026/02/image6-revised.png?resize=1024%2C539&#038;ssl=1" width="1024" /><button class="lightbox-trigger" type="button">
			<svg fill="none" height="12" viewBox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg">
				<path 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" fill="#fff">
			</svg>
		</button></figure>
</figure>



<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>



<h2 class="wp-block-heading"><strong>Zero Barriers</strong></h2>



<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>



<h3 class="wp-block-heading">What you should know</h3>



<ul class="wp-block-list">
<li>Storage starts at roughly 100 MB</li>



<li>The first launch takes a little longer while WordPress downloads and initializes</li>



<li>All data stays in your browser and is not uploaded anywhere</li>



<li>Each device has its own separate installation</li>



<li>Backups should be downloaded regularly</li>
</ul>



<h2 class="wp-block-heading"><strong>Create and explore</strong></h2>



<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>



<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>



<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">
<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>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<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>";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: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:"";}}}}}i:4;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:95:"Open Channels FM: WordPress Takes the Stage at CloudFest with the WP Business and Agency Summit";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=2551041";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:102:"https://openchannels.fm/wordpress-takes-the-stage-at-cloudfest-with-the-wp-business-and-agency-summit/";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:220:"WordPress is making waves at CloudFest with the WP Business &#038; Agency Summit on March 23 in Germany. It’s all about growth, partnerships, and innovation, connecting agencies and cloud services for great networking.";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 10: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: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:5;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:"HeroPress: WordPress: the untapped treasure for leverage.";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:56:"https://heropress.com/?post_type=heropress-essays&p=8462";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:162:"https://heropress.com/essays/wordpress-the-untapped-treasure-for-leverage/#utm_source=rss&utm_medium=rss&utm_campaign=wordpress-the-untapped-treasure-for-leverage";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:9009:"<img alt="Pull quote: WordPress gave me my very first major client as an aspiring developer." class="attachment-large size-large wp-post-image" height="512" src="https://heropress.com/wp-content/uploads/3026/03/031026.webp" width="1024" /><p>Unpopular opinion has it that the most popular cms is just an internet toy for websites. Well… it has managed to sustain more than 40% of the websites on the web, if the internet was a stock option by websites, WordPress has a sheer size plus a special place in my heart [insert_white_heart_emoji].<br /><br />Welcome to follow along on my WordPress journey. Let me be your captain. Let’s go.</p>



<h3 class="wp-block-heading" id="h-in-the-beginning">In the beginning:</h3>



<p>My early days in WordPress were influenced by a friend, <a href="https://www.linkedin.com/in/danielemeka/">Emeka Daniel</a>, who at the time worked on a handful of WordPress projects. We were both undergraduates, so it was easy to see how quickly he could spin up a full website with little or no coding. At the time, I already had my web development starter pack (HTML, CSS, JavaScript) fitted in, so the idea of building any type of website from scratch at any whim was almost a default approach.</p>



<h3 class="wp-block-heading" id="h-the-rest-they-say-its-history">The rest they say its history:</h3>



<p>Fast forward to some days later in 2019, someone contacted me to build a journal library website with an ecommerce feature and more. In the multitude of counsel from one person, who happened to be Daniel, I opted to build the project with WordPress, and the rest, they say, is history.</p>



<p>Over the years, across my six years (as of the time of writing this) of website development, I have dabbled with several tools in the PHP ecosystem. Fortunately, WordPress is one of them. From my first drag and drop experiment to building a WordPress theme or tinkering with WordPress plugin development, that tinkering across these sides of WordPress did pay off.</p>



<h3 class="wp-block-heading" id="h-community-writing-and-memorable-moments">Community, Writing and Memorable Moments:</h3>



<h5 class="wp-block-heading" id="h-given-back-to-the-community">Given back to the Community:</h5>



<p>WordPress is a community driven, the number of WordCamps is a testament to that. That said, my friend shared the light with me, and I felt I should share the same with people in my space. In 2022, during my time in the mandatory national one year paramilitary service, I organized a three week program where I demonstrated to my colleagues the possibilities with WordPress and the benefits that abound for them.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large wp-lightbox-container"><img alt="Chidiebere standing at a speaking table." class="wp-image-8465" height="576" src="https://heropress.com/wp-content/uploads/3026/03/WhatsApp-Image-2026-02-01-at-12.38.15-1024x576.webp" width="1024" /><button class="lightbox-trigger" type="button">
			
				
			
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><a href="https://heropress.com/wp-content/uploads/3026/03/WhatsApp-Image-2026-02-01-at-12.38.16.webp"><img alt="Chidiebere walking to a speaking table" class="wp-image-8468" height="576" src="https://heropress.com/wp-content/uploads/3026/03/WhatsApp-Image-2026-02-01-at-12.38.16-1024x576.webp" width="1024" /></a></figure>
</div>
</div>



<p><em>“Yeap! That’s me.” You are NOT wondering how I came there ? Courtesy of WordPress</em></p>



<p>For a three week stretch, I had a wonderful audience who had businesses and services and felt I would show them how to take those into the online space. They were curious. Rapt with attention. Engaged and interested.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img alt="Chidiebere at the front of a classroom, teaching" class="wp-image-8471" height="1020" src="https://heropress.com/wp-content/uploads/3026/03/WhatsApp-Image-2026-02-01-at-12.37.42.webp" width="574" /></figure>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-8474" height="576" src="https://heropress.com/wp-content/uploads/3026/03/WhatsApp-Image-2026-02-01-at-12.37.50-1024x576.webp" width="1024" /></figure>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-8475" height="576" src="https://heropress.com/wp-content/uploads/3026/03/WhatsApp-Image-2026-02-01-at-12.38.07-1024x576.webp" width="1024" /></figure>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-8476" height="576" src="https://heropress.com/wp-content/uploads/3026/03/WhatsApp-Image-2026-02-01-at-12.38.20-1024x576.webp" width="1024" /></figure>
</figure>



<p><br />We started with an introduction to websites and website development, then went through the basics of WordPress while demonstrating an Elementor walk-through.</p>



<figure class="wp-block-image aligncenter size-large"><a href="https://heropress.com/wp-content/uploads/3026/03/dlcf-wordpress.webp"><img alt="Poster for a WordPress workshop" class="wp-image-8478" height="1024" src="https://heropress.com/wp-content/uploads/3026/03/dlcf-wordpress-724x1024.webp" width="724" /></a></figure>



<p>The rewarding feeling is getting to see people feel powerful enough to build their first website, dismiss the phobia or perception that it is difficult, and give them a launch pad to go and “ship.”</p>



<h5 class="wp-block-heading" id="h-writing">Writing:</h5>



<p>Lots of experimentation has happened in my WordPress world and space. One of them was a website migration that I did. It involved migrating a WordPress site from WordPress.com to WordPress.org. I had to write down <a href="https://chidiebere.me/2022/02/15/fastest-way-to-migrate-your-site-from-wordpress-com-to-wordpress-org/">my process</a>. It was an expository one for me. One of the memorable moments was that migration. It was an exposition to not just about WordPress but how powerful WordPress works in the terminal.</p>



<p>In 2025, I was privileged to be a guest speaker for a <a href="https://youtu.be/s5VRBGrILUw?si=G-Ium00-WSxLGNSO">Google Developer Event.</a> And as you guess, the topic was how WordPress could be coupled with AI (Gemini).</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img alt="" class="wp-image-8483" height="525" src="https://heropress.com/wp-content/uploads/3026/03/wordpressss_hangout-1024x525.webp" width="1024" /></figure>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-8482" height="941" src="https://heropress.com/wp-content/uploads/3026/03/devfest_banner-1024x941.webp" width="1024" /></figure>
</figure>



<p>Personally for me, in a broader scope, this event opened quite some handful perspective as to the future of WordPress and how it could scale with AI</p>



<p><br />Of many other things that has happened, I have managed to keep a heads-up on the WordPress community, how it positions itself to join the AI race and I am optimistic about the future of WordPress and the WordPress community.</p>



<h3 class="wp-block-heading" id="h-closing">Closing:</h3>



<p>WordPress (WP) gave me the material to ship fast right before “shipping fast” became a trend. WordPress gave me my very first major client as an aspiring developer. While WP sits as the most popular CMS, it definitely deserves a sit at the front table of my software engineering journey.</p>



<div class="wp-block-group has-background is-vertical is-nowrap is-layout-flex wp-container-core-group-is-layout-fc43baa9 wp-block-group-is-layout-flex" id="desktop">
<h2 class="kt-adv-heading8462_0a5715-23 wp-block-kadence-advancedheading" id="work-environment">Chidiebere&#8217;s Work Environment</h2>



<p>We asked Chidiebere for a view into his development life and this is what he sent!</p>


	<div class="hotspots-image-container">
		<img alt="Chidiebere Chukwudi desk" class="hotspots-image skip-lazy" height="2048" src="https://heropress.com/wp-content/uploads/2026/03/chidiebere_worskpace.webp" width="1796" />
	</div>




<p class="has--font-size">HeroPress would like to thank <a href="https://wpdrawattention.com/">Draw Attention</a> for their donation of the plugin to make this interactive image!</p>
</div>
<p>The post <a href="https://heropress.com/essays/wordpress-the-untapped-treasure-for-leverage/">WordPress: the untapped treasure for leverage.</a> appeared first on <a href="https://heropress.com">HeroPress</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, 11 Mar 2026 09: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:19:"Chidiebere Chukwudi";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:21:"
	
	
	
	
	
	
	
	
	
	
";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:50:"WordPress.org blog: 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:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=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:"";}}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:11:"description";a:1:{i:0;a:5:{s:4:"data";s:5836:"<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>



<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>



<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>



<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>



<p class="wp-block-paragraph">Many thanks to those who reported the issue, assisted in narrowing down the problem, and helped with the fix.</p>



<p class="wp-block-paragraph">You can <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>



<p class="wp-block-paragraph">For more information on WordPress 6.9.3, please visit the <a href="https://wordpress.org/documentation/wordpress-version/version-6-9-3/">version page on the HelpHub site</a>.</p>



<h2 class="wp-block-heading">WordPress 7.0 beta 4</h2>



<p class="wp-block-paragraph">The next major release of WordPress will be <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>



<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>



<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>



<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.  No setup is required – just click and go! </td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Beta 4 updates and highlights</h2>



<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. </p>



<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>



<ul class="wp-block-list">
<li><a href="https://github.com/WordPress/gutenberg/compare/f4d8a5803aa2fbe26e7d9af4d17e80a622b7bab8...9b8144036fa5faf75de43d4502ff9809fcf689ad">GitHub commits for 7.0 </a> since March 5, 2026</li>



<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>
</ul>



<p class="wp-block-paragraph">As always, a successful release depends on your confirmation during testing. So please download and test!</p>



<p class="has-text-align-right wp-block-paragraph"><em>Props <a class="mention" href="https://profiles.wordpress.org/peterwilson/"><span class="mentions-prefix">@</span>peterwilson</a>, <a class="mention" href="https://profiles.wordpress.org/desrosj/"><span class="mentions-prefix">@</span>desrosj</a>, <a class="mention" href="https://profiles.wordpress.org/marybaum/"><span class="mentions-prefix">@</span>marybaum</a>, <a class="mention" href="https://profiles.wordpress.org/amykamala/"><span class="mentions-prefix">@</span>amykamala</a> for peer reviewing.</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:"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: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:"";}}}}}i:7;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:43:"WordPress.org blog: 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:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=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:"";}}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:11:"description";a:1:{i:0;a:5:{s:4:"data";s:4649:"<h2 class="wp-block-heading">WordPress 6.9.2 is now available!</h2>



<p class="wp-block-paragraph">This is a security release that features several fixes.</p>



<p class="wp-block-paragraph">Because this is a security release,<strong> it is recommended that you update your sites immediately</strong>.</p>



<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>



<p class="wp-block-paragraph">The next major release will be <a href="https://make.wordpress.org/core/7-0/">version 7.0</a>, which is planned for April 9th, 2026.</p>



<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>



<h2 class="wp-block-heading">Security updates included in this release</h2>



<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>



<ul class="wp-block-list">
<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>



<li>A PoP-chain weakness in the HTML API and Block Registry reported by <a href="https://github.com/hackerlo2003">Phat RiO</a></li>



<li>A regex DoS weakness in numeric character references reported by Dennis Snell of the WordPress Security Team</li>



<li>A stored XSS in nav menus reported by <a href="https://x.com/Savphill">Phill Savage</a></li>



<li>An AJAX <code>query-attachments</code> authorization bypass reported by <a href="https://www.vitalysim.com/">Vitaly Simonovich</a></li>



<li>A stored XSS via the <code>data-wp-bind</code> directive reported by <a href="https://profiles.wordpress.org/kaminuma/">kaminuma</a></li>



<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>



<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>



<li>An authorization bypass on the Notes feature reported by <a href="https://profiles.wordpress.org/kaminuma/">kaminuma</a></li>



<li>An XXE in the external getID3 library reported by <a href="https://profiles.wordpress.org/regex33/">Youssef Achtatal</a></li>
</ul>



<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>



<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>



<h2 class="wp-block-heading">Thank you to these WordPress contributors</h2>



<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/">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>



<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:"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: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:"";}}}}}i:8;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:114:"Open Channels FM: Behind the Scenes at CloudFest Europe’s Playground for Cloud, Security, and Hosting Innovation";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=2550972";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:116:"https://openchannels.fm/behind-the-scenes-at-cloudfest-europes-playground-for-cloud-security-and-hosting-innovation/";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:183:"In this episode Soeren, Myles and Robert discuss CloudFest 2026, highlighting its unique amusement park setting, various networking opportunities, and some new features for attendees.";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 09:10: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:9;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:30:"Matt: Gone (Almost) Phishin’";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=151341";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:42:"https://ma.tt/2026/03/gone-almost-phishin/";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:4817:"<p class="wp-block-paragraph">This is a little embarrassing to share, but I&#8217;d rather someone else be able to spot a dangerous scam before they fall for it. So, here goes.</p>



<p class="wp-block-paragraph">One evening last month, my Apple Watch, iPhone, and Mac all lit up with a message prompting me to reset my password<em>.</em> This came out of nowhere; I hadn&#8217;t done anything to elicit it. I even had <a href="https://support.apple.com/en-us/105120">Lockdown Mode</a> running on all my devices. It didn’t matter. Someone was spamming Apple&#8217;s legitimate password reset flow against my account—a technique<a href="https://krebsonsecurity.com/2024/03/recent-mfa-bombing-attacks-targeting-apple-users/"> Krebs documented back in 2024</a>. I dismissed the prompts, but the stage was set.</p>



<p class="wp-block-paragraph">What made the attack impressive was the next move: The scammers actually contacted Apple Support themselves, pretending to be me, and opened a real case claiming I&#8217;d lost my phone and needed to update my number. That generated a real case ID, and triggered real Apple emails to my inbox,<em> properly signed</em>, from Apple&#8217;s actual servers. These were legitimate; no filter on earth could have caught them.</p>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-151420" height="587" src="https://i0.wp.com/ma.tt/files/2026/03/CleanShot-2026-02-07-at-19.36.31%402x-1-1024x996.png?resize=604%2C587&#038;quality=80&#038;ssl=1" width="604" /></figure>



<p class="wp-block-paragraph">Then &#8220;Alexander from Apple Support&#8221; called. He was calm, knowledgeable, and <em>careful</em>. His first moves were solid security advice: check your account, verify nothing&#8217;s changed, consider updating your password. He was so good that I actually thanked him for being excellent at his job.</p>



<p class="wp-block-paragraph">That, of course, was when he moved into the next phase of the attack.</p>



<p class="wp-block-paragraph">He texted me a link to review and cancel the &#8220;pending request.&#8221; The site, audit-apple.com, was a pixel-perfect Apple replica, and displayed the exact case ID from the real emails I&#8217;d just received. There was even a fake chat transcript of the scammers&#8217; actual conversation with Apple, presented back to me as evidence of the attack against my account. At the bottom of the page was a Sign in with Apple button that he told me to use.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img alt="" class="wp-image-151411" height="395" src="https://i0.wp.com/ma.tt/files/2026/03/CleanShot-2026-02-07-at-18.14.37%402x-1024x670.png?resize=604%2C395&#038;quality=80&#038;ssl=1" width="604" /></figure>



<figure class="wp-block-image size-large"><img alt="" class="wp-image-151412" height="418" src="https://i0.wp.com/ma.tt/files/2026/03/CleanShot-2026-02-07-at-18.08.36%402x-1024x708.png?resize=604%2C418&#038;quality=80&#038;ssl=1" width="604" /></figure>
</figure>



<p class="wp-block-paragraph">I started poking at the page and noticed I could enter any case ID and get the same result. Nothing was being validated. It was all theater.</p>



<p class="wp-block-paragraph">&#8220;This is really good,&#8221; I told Alexander. &#8220;This is obviously phishing. So tell me about the scam.&#8221;</p>



<p class="wp-block-paragraph">Silence. *Click*.</p>



<p class="wp-block-paragraph">Once I’d suspected what was happening, I’d started recording the call, so I was able to save a good chunk of it, which Jamie Marsland used to make a video about the encounter. You can hear for yourself exactly how convincing “Alexander” was.</p>



<p class="wp-block-paragraph">So let my almost-disaster help you avoid your own. Remember these rules.</p>



<ul class="wp-block-list">
<li><strong>Don’t approve any password-reset prompts</strong>—those are the first part of the attack. Do not pass Go, just head directly to your Apple ID settings. </li>



<li><strong>Apple will </strong><strong><em>never</em></strong><strong> call you first.</strong> </li>



<li>When you get an email from Apple—or, really, anyone telling you to complete a digital security measure—<strong>check the URL</strong> they’re trying to send you to. Apple Support lives on apple.com and getsupport.apple.com, nowhere else.</li>
</ul>



<p class="wp-block-paragraph">After all, the best protection is knowing what this looks like before it happens.</p>



<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">

</div></figure>";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:"Mon, 09 Mar 2026 15:11:29 +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:10;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:101:"Gutenberg Times: PHP-only blocks, WordCamp Asia, Dev Notes for WordPress 7.0 — Weekend Edition #360";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=44585";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:105:"https://gutenbergtimes.com/php-only-blocks-wordcamp-asia-dev-notes-for-wordpress-7-0-weekend-edition-360/";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:24117:"<p class="wp-block-paragraph">Hi there,</p>



<p class="wp-block-paragraph">I held my first walk-through of WordPress 7.0 with friends at the Santa Clarita WordPress Meetup. The group was really excited about all the big new features and the small quality-of-life (QoL) improvements.</p>



<p class="wp-block-paragraph">Jessica Lyschik and I also discussed many features coming to WordPress 7.0 on our latest podcast episode. Listen in if you are curious. </p>



<p class="wp-block-paragraph">Below you also find the links to the first set of Dev Notes for WordPress 7.0. Beta 4 will come out next week (3/12). Release candidate 1 is scheduled for March 19. It is now time to <a href="https://make.wordpress.org/test/2026/02/20/help-test-wordpress-7-0/">help test WordPress 7.0</a></p>



<p class="wp-block-paragraph">Enjoy your weekend and these notes. </p>



<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>





<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />





<p class="wp-block-paragraph">WordCamp Asia heads to Mumbai on April 10–11, and I shared <a href="https://gutenbergtimes.com/schedule-of-wordcamp-asia-birgits-selected-sessions/"><strong>my personally curated session picks</strong></a> — leaning heavily into block editor, themes, and AI. Highlights include Ryan Welcher on the Interactivity API, a Playground + AI testing pipelines talk by Fellyph Cintra, and a closing keynote from Matt Mullenweg. I will also be leading a Contributor Day workshop on building a block theme from scratch. <a href="https://asia.wordcamp.org/2026/schedule/">The schedule</a> still has several TBD slots, so it&#8217;s worth checking back. </p>



<figure class="wp-block-image size-large"><a href="https://asia.wordcamp.org/2026/schedule/"><img alt="Networking at WordCamp Asia" class="wp-image-44578" height="364" src="https://i0.wp.com/gutenbergtimes.com/wp-content/uploads/2026/03/WordCamp-Asia-Schedule-2026.jpg?resize=652%2C364&#038;ssl=1" width="652" /></a></figure>



<p class="wp-block-paragraph"><em><a href="https://asia.wordcamp.org/2026/event-pass/?refresh=true#get-your-pass">Get your WordCamp Asia 2026 event pass</a> and join the WordPress community in Mumbai on April 9–11!</em></p>



<h2 class="wp-block-heading" id="0-word-press-release-information">Developing Gutenberg and WordPress</h2>



<p class="wp-block-paragraph"><a href="https://wordpress.org/news/2026/03/wordpress-7-0-beta-3/"><strong>WordPress 7.0 Beta 3 </strong></a>is now available for testing. The final release is coming closer. It&#8217;s the time of the release cycle when <strong>Developer Notes</strong> are published ahead of Release Candidate 1.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<p class="wp-block-paragraph">For the <strong><a href="https://make.wordpress.org/core/2026/03/04/breadcrumb-block-filters/">new Breadcrumbs block</a></strong>, <strong>Nik Tsekouras</strong> documents the two PHP filters developers will want to know. <code>block_core_breadcrumbs_items</code> lets you modify, add, or remove items just before rendering — handy for prepending a custom &#8220;Shop&#8221; crumb in WooCommerce. <code>block_core_breadcrumbs_post_type_settings</code> gives you control over which taxonomy and term appear in the trail, with sensible fallback behavior when your preferred term isn&#8217;t assigned. Props to Karol Manijak for the implementation.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<p class="wp-block-paragraph"><strong>Dave Smith</strong> details one of the more exciting 7.0 additions for theme developers: <strong><a href="https://make.wordpress.org/core/2026/03/04/customisable-navigation-overlays-in-wordpress-7-0/">Customisable Navigation Overlays</a>.</strong> Mobile hamburger menus were previously locked to a fixed default design — now you can build your overlay from any blocks and patterns directly in the Site Editor. Themes can bundle overlays as template parts registered with a new <code>navigation-overlay</code> area in <code>theme.json</code>. The feature is opt-in currently full-screen only, and props go to <strong>Mike McAlister</strong>, whose <a href="https://wordpress.org/plugins/ollie-menu-designer/">Ollie Menu Designer plugin</a> helped validate the community demand.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<p class="wp-block-paragraph"><strong>Luis Herranz</strong> outlines key updates in the <a href="https://make.wordpress.org/core/2026/03/04/changes-to-the-interactivity-api-in-wordpress-7-0/"><strong>Interactivity API changes in WordPress 7.0</strong></a>. The main highlight is the new <code>watch()</code> function, which helps developers to track state changes outside the DOM for tasks like logging and analytics. Additionally, <code>state.url</code> in <code>core/router</code> will now be filled by the server, improving navigation tracking. Note that the <code>state.navigation</code> properties are outdated and will be removed in a future version.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<p class="wp-block-paragraph"><strong>André Maneiro</strong> rounds up <strong><a href="https://make.wordpress.org/core/2026/03/04/dataviews-dataform-et-al-in-wordpress-7-0/">166 contributions from 35 authors landing in the DataViews space for WordPress 7.0</a>.</strong> Highlights include a new <code>activity</code> timeline layout, expanded field validation rules, a <code>combobox</code> control for large datasets, and a <code>groupBy</code> object replacing the old <code>groupByField</code> string — a breaking change worth noting. DataForm gains a new <code>details</code> layout and collapsible card controls. A lot here for plugin developers building data-rich admin interfaces.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<p class="wp-block-paragraph"><strong>Miguel Fonseca</strong> documents one of the most warmly received 7.0 additions: <strong><a href="https://make.wordpress.org/core/2026/03/03/php-only-block-registration/">PHP-only block registration</a>.</strong> Pass <code>'autoRegister' =&gt; true</code> in the <code>supports</code> array alongside a <code>render_callback</code>, and your block appears in the editor without a single line of JavaScript. WordPress automatically generates Inspector Controls for supported attribute types — string, integer, boolean, and enum. Implemented by Ricky Pena, the comments section alone tells you how long PHP-first developers have been waiting for this one.</p>



<p class="wp-block-paragraph"><strong>Ryan Welcher</strong> and <strong>Ciprian Popescu</strong> went deeper on this topic and provided you with examples and explanations on their personal blogs. (See links below.)  </p>



<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">
<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>



<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>


<div class="wp-block-newsletterglue-showhide ng-block" width="100%">
<figure class="wp-block-embed is-type-rich is-provider-pocket-casts wp-block-embed-pocket-casts"><div class="wp-block-embed__wrapper">

</div></figure>
</div></div></div>



<p class="wp-block-paragraph">In the video, <a href="https://www.youtube.com/watch?v=znVzVZ0jM9g"><strong>7.0 Beta, Gutenberg 22.5, Studio &amp; AI: WordPress for Developers in February</strong></a> <strong>Ryan Welcher</strong> walks you through the February edition of the round-up series What&#8217;s new for Developers. You&#8217;ll get the highlights from Gutenberg 22.4 and 22.5: per-instance custom CSS, viewport-based block visibility, anchor support for dynamic blocks, and the long-awaited removal of extra editor wrapper divs. The iFrame enforcement planned for 7.0 has been delayed — more breathing room, but time to prepare is now.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<p class="wp-block-paragraph">WordPress lead developer <strong>Dion Hulse</strong> has shipped something quietly useful: <strong><a href="https://www.therepository.email/wordpress-org-now-serves-markdown-output-for-ai-agents-and-developers">WordPress.org now serves clean Markdown output</a> </strong>for every page, built on Dennis Snell&#8217;s html-to-md plugin. You can access it by appending <code>?output_format=md</code> to any URL or sending an <code>Accept: text/markdown</code> header. The efficiency gains are real — one developer reported a WordPress docs page shrinking from 68k tokens to 11k. It&#8217;s a direct response to Mullenweg&#8217;s push to make WordPress.org a canonical knowledge source for AI agents. <em>Ray Morey reporting for The Repository</em></p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<p class="wp-block-paragraph">In this brief video, <strong>Jonathan Bossenger</strong> demonstrates <a href="https://www.youtube.com/watch?v=OAYyx-qEpVY"><strong>WordPress 7.0 Beta 2&#8217;s new WP AI Client and Connectors</strong> settings page</a>, explaining how connectors can install plugins and how developers can create AI features without tying users to a specific provider. A live CLI demo showcases this approach. Bossenger also discusses connector discovery UX and areas where core improvements are needed before 7.0 is released.</p>


<div class="wp-block-newsletterglue-showhide ng-block" width="100%">
<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">

</div></figure>
</div>


<h2 class="wp-block-heading" id="0-p">Plugins, Themes, and Tools for #nocode site builders and owners</h2>



<p class="wp-block-paragraph">WordPress contributor <strong>Nick Hamze </strong>has quietly improved <strong><a href="https://www.therepository.email/the-wordpress-featured-plugins-tab-is-now-rotating-hidden-gems-every-two-weeks">the Featured Plugins tab in wp-admin</a>,</strong> replacing a list that hadn&#8217;t changed in eight years with a rotating selection of eight lesser-known plugins, refreshed every two weeks. The goal, as <strong>Matt Cromwell</strong> reports for The Repository, is to surface genuinely promising newcomers — &#8220;not the giants, not the household names&#8221; — that you&#8217;d never stumble across through search or popularity rankings. Early results are striking; Ollie Menu Designer tripled its biggest download day within hours of appearing in the tab.</p>



<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>



<p class="wp-block-paragraph"><strong>Marko Ivanovic</strong> and <strong>Noam Almosnino</strong> shared their <a href="https://automattic.design/2026/03/03/telex-experiments/"><strong>Telex experiments on the Automattic Design blog</strong></a>, showcasing what happens when designers get to build WordPress blocks by simply describing an idea. Telex, Automattic&#8217;s AI-powered tool, handles the technical wiring so you can focus on creative exploration. The pair built a text-scrambling interaction inspired by Flash-era pioneer Yugop and an image carousel—all without writing block code themselves. It&#8217;s a compelling glimpse at how your design-to-block workflow could change.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<p class="wp-block-paragraph"><strong>Derek Hanson</strong> shares how he shipped <a href="https://derekhanson.blog/tufte-blocks/"><strong>Tufte Blocks</strong></a>, a WordPress block theme he couldn&#8217;t build a year ago, drawing on Edward Tufte&#8217;s typography-first aesthetic. After two failed attempts, the right combination — <em><a href="https://github.com/WordPress/agent-skills">WordPress Agent Skills</a></em> and <strong>Shaun Andrews</strong>&#8216; <a href="https://shaunandrews.com/2026/02/teaching-ai-to-design/">design-system-first</a> approach — finally unlocked it. You don&#8217;t need to be a designer or developer; Hanson&#8217;s project management and rhetoric background turned out to be exactly the right skills for directing AI through a complete, polished theme. Does it sound attractive to you? <a href="https://github.com/dhanson-wp/tufte-blocks"><strong>Download it from GitHub</strong></a></p>


<div class="ng-block-3c9c1755116444f0 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-98d2b62b5c4d80b3 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>

<div class="ng-block-a2a29c37793ecfaa 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>


<h2 class="wp-block-heading" id="3-building-themes-for-fse-and-word-press">Building Blocks and Tools for the Block editor.</h2>



<p class="wp-block-paragraph"><strong>Ciprian Popescu </strong>walks you through <a href="https://getbutterfly.com/php-only-block-registration-in-wordpress/"><strong>PHP-only block registration in WordPress</strong></a>, the new approach landing in 7.0 that lets you build Gutenberg blocks without JavaScript build tools. By setting <code>autoRegister</code> to true in the supports array, WordPress auto-generates inspector controls from your attributes and uses ServerSideRender for previews. You&#8217;ll find practical guidance on block supports, asset enqueueing caveats, and where this approach fits best—think author boxes, CTA banners, and theme-specific components rather than richly interactive blocks.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<p class="wp-block-paragraph"><strong>Ryan Welcher</strong> also explains how <a href="https://ryanwelcher.com/2026/03/04/php-only-block-registration-in-wordpress-7-0/"><strong>PHP-only block registration in WordPress 7.0</strong></a> lets you skip <code>block.json</code> entirely and define block metadata directly in your <code>register_block_type()</code> call. You&#8217;ll see how to enable it with the <code>autoRegister</code> support flag, define attributes that auto-generate inspector controls, and wire up render callbacks with <code>get_block_wrapper_attributes()</code>. The tutorial covers asset registration via handle arrays and helps you streamline your workflow for server-rendered blocks ahead of the April 9 release.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<p class="wp-block-paragraph"><strong>Paulo Carvajal</strong>&#8216;s guide on <a href="https://wp-block-editor.com/mastering-event-handling-and-dom-interactions/"><strong>mastering event handling and DOM interactions with the Interactivity API</strong></a> takes you through the <code>data-wp-on</code> directive for declarative event management. You&#8217;ll learn how to handle mouse, keyboard, form, and touch events while connecting them to store actions that update state reactively. The piece covers <code>withSyncEvent()</code> for synchronous access, automatic event delegation, and performance patterns like debouncing and throttling, wrapping up with a complete to-do app that ties it all together.</p>



<h2 class="wp-block-heading" id="ai-and-wordpress">AI and WordPress </h2>



<p class="wp-block-paragraph">If you use Cursor for WordPress block development, <strong>JuanMa Garrido</strong> explains <a href="https://juanma.codes/2026/02/24/how-to-enable-json-schema-validation-in-cursor/"><strong>how to enable JSON schema validation in Cursor</strong></a>, which is disabled by default due to a security vulnerability where the AI agent could trigger outbound requests via <code>$schema</code> fields. You&#8217;ll need to add <code>json.schemaDownload.enable</code> to your settings—ideally at the project level in <code>.vscode/settings.json</code> to limit exposure. A quick fix that restores autocompletion and validation for your <code>block.json</code> and <code>theme.json</code> files.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />


<div class="ng-block-1b5691868e64c1d8 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-5d0325bae2d4fe47 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>

<div class="ng-block-9a2ebefacff0b392 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>

<div class="ng-block-76125738ada1fdef 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>


<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<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>


<div class="ng-block-f6fdda1970c04672 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>

<div class="wp-block-newsletterglue-showhide ng-block" width="100%"><div class="ng-block-64e91ea78da0ccea wp-block-newsletterglue-text ng-block" style="color: #666666;" width="100%"><div><div><div align="none" class="ng-block-td" style="font-size: 14px; font-family: Helvetica; line-height: 0.2; font-weight: normal; padding-top: 8px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; text-align: none; color: #666666;"><p><strong>Featured Image: </strong></p></div></div></div></div></div>




<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:"Sun, 08 Mar 2026 09:53:07 +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:11;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:37:"Matt: Declaration of the Independence";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=151384";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:34:"https://ma.tt/2026/03/declaration/";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:639:"<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Governments of the Industrial World, you weary giants of flesh and steel, I come from Cyberspace, the new home of Mind. On behalf of the future, I ask you of the past to leave us alone. You are not welcome among us. You have no sovereignty where we gather.</p>
</blockquote>



<p class="wp-block-paragraph">30 years a 1 month later, it seems like an apt time to revisit <a href="https://www.eff.org/cyberspace-independence">John Perry Barlow&#8217;s Declaration of the Independence of Cyberspace</a>. The poetry is amazing.</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, 08 Mar 2026 07:57:11 +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:12;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:47:"Open Channels FM: Open Channels FM v7.1 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:34:"https://openchannels.fm/?p=1650246";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:54:"https://openchannels.fm/open-channels-fm-v7-1-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:11:"description";a:1:{i:0;a:5:{s:4:"data";s:53:"Changes for 7.1 You can view our full changelog here.";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, 06 Mar 2026 08:40: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: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:13;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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 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:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"https://wordpress.org/news/?p=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:"";}}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:11:"description";a:1:{i:0;a:5:{s:4:"data";s:5875:"<p class="wp-block-paragraph">WordPress 7.0 Beta 3 is available for download and testing!</p>



<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>



<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.  No setup is required – just click and go! </td></tr></tbody></table></figure>



<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. 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>



<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>



<h2 class="wp-block-heading">How to test this release</h2>



<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>



<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>



<h2 class="wp-block-heading">Beta 3 updates and highlights</h2>



<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>



<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>



<ul class="wp-block-list">
<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> since February 26, 2026</li>



<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>
</ul>



<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>



<h2 class="wp-block-heading">A Beta 3 haiku</h2>



<p class="wp-block-paragraph"><em>Through sun set and rise,</em></p>



<p class="wp-block-paragraph"><em>Beta 3 takes off and flies.</em></p>



<p class="wp-block-paragraph"><em>Seven soon arrives.</em></p>



<p class="has-text-align-right wp-block-paragraph"><em>Props to <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/jeffpaul/"><span class="mentions-prefix">@</span>jeffpaul</a></em>, <em><a class="mention" href="https://profiles.wordpress.org/chaion07/"><span class="mentions-prefix">@</span>chaion07</a></em>,<em> <a class="mention" href="https://profiles.wordpress.org/audrasjb/"><span class="mentions-prefix">@</span>audrasjb</a> and <a class="mention" href="https://profiles.wordpress.org/valentingrenier/"><span class="mentions-prefix">@</span>valentingrenier</a> for proofreading and review.</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:"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: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:14;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:65:"Open Channels FM: Why Design Systems Matter for Brand Consistency";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=1650119";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:72:"https://openchannels.fm/why-design-systems-matter-for-brand-consistency/";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:145:"Consistency in digital branding through design systems fosters user trust, ensures quality, and supports scalable growth and clear communication.";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 13:59: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: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:15;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:78:"Open Channels FM: Navigating the Future of Partnerships and AI in the Open Web";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=1650459";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:85:"https://openchannels.fm/navigating-the-future-of-partnerships-and-ai-in-the-open-web/";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:232:"Zach Stepek and Carl Alexander discuss the changing landscape of partnerships and web development communities, emphasizing the importance of collaboration, genuine support, and the impact of AI on sustainable business relationships.";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 11:49: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:16;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:73:"WPTavern: #207 – Rob Ruiz on WP Rig and the Future of Theme 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:48:"https://wptavern.com/?post_type=podcast&p=202950";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:87:"https://wptavern.com/podcast/207-rob-ruiz-on-wp-rig-and-the-future-of-theme-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:11:"description";a:1:{i:0;a:5:{s:4:"data";s:61064:"<details>Transcript<div>
<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>



<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 the future of theme development.</p>



<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>



<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>



<p class="wp-block-paragraph">So on the podcast today, we have Rob Ruiz. Rob has been involved in the WordPress ecosystem since around 2010. He began as a designer, but over the years WordPress has helped him transition into a developer, software engineer, and now an architect. Currently, he&#8217;s working full-time at an agency whilst taking on side projects independently.</p>



<p class="wp-block-paragraph">The main topic for today&#8217;s conversation, centers around themes, a subject that hasn&#8217;t been covered in depth on the podcast for quite some time. You see, Rob is the current custodian of WP Rig, a free and open source toolkit for WordPress theme development. WP Rig offers a modern, minimal, and best practice driven starting point for developers who want to build custom themes. Providing tools like Composer and Node integration to streamline workflows, enforce coding standards, and enable the use of future facing CSS features, right now.</p>



<p class="wp-block-paragraph">We start the episode with Rob sharing what attracted him to WP Rig, and his journey from user to Project Maintainer. We talk about who WP Rig is for, from experienced developers, to those just starting to dip their toes into theme building and code customization.</p>



<p class="wp-block-paragraph">The discussion moves on to talking about what a theme development framework actually is, and why this approach might suit people wanting more control, and education, in their WordPress journey. Rob describes the learning curve, the workflow, and the satisfaction of creating your own theme from scratch, while highlighting tools and guardrails built into WP RIG that make professional standards and best practices accessible to all.</p>



<p class="wp-block-paragraph">We also get into how WP Rig fits into the changing WordPress ecosystem. With the advent of full site editing and block-based themes, Rob explains how WP Rig has evolved to stay relevant, supporting classic, hybrid, and block-based paradigms, even enabling block development at the theme level.</p>



<p class="wp-block-paragraph">Towards the end, we discuss the community behind WP Rig, how you can get involved, and the many educational resources available for those who want to learn theme development, or even become contributors themselves.</p>



<p class="wp-block-paragraph">If you&#8217;re interested in building custom WordPress themes, want to understand the nuts and bolts of theme frameworks, or are simply looking for a modern and educational starting point for WordPress tinkering, this episode is for you.</p>



<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>



<p class="wp-block-paragraph">And so without further delay, I bring you, Rob Ruiz.</p>



<p class="wp-block-paragraph">I am joined on the podcast by Rob Ruiz. Hello, Rob.</p>



<p class="wp-block-paragraph">[00:03:56] <strong>Rob Ruiz:</strong> Hi. How are you, Nathan?</p>



<p class="wp-block-paragraph">[00:03:57] <strong>Nathan Wrigley:</strong> Rob&#8217;s joining me today to talk primarily about themes, which I confess is a subject that we haven&#8217;t touched in a good long while. So before we get into that, Rob, would you just mind spending a minute just letting the listeners know who you are? If we are on a WordPress podcast, probably better to align that with what your journey is in the WordPress space, if that&#8217;s okay.</p>



<p class="wp-block-paragraph">[00:04:17] <strong>Rob Ruiz:</strong> Certainly. Yeah. So my name is Rob Ruiz. I&#8217;ve been leveraging WordPress since about 2010 ish, although my web development experience goes prior to that. And so I&#8217;ve been tinkering and getting more and more into it as I go along.</p>



<p class="wp-block-paragraph">I started off as mostly a designer back in the early two thousands, I guess. And WordPress has facilitated my journey from being a designer to more of a developer, software engineer, today, architect. And so yeah, it&#8217;s been a very fun journey. I&#8217;ve learned so much over the years, so I&#8217;m very grateful to WordPress for helping me do that at my own pace.</p>



<p class="wp-block-paragraph">[00:04:58] <strong>Nathan Wrigley:</strong> Do you work for yourself? Are you perhaps engaged in an agency or something like that?</p>



<p class="wp-block-paragraph">[00:05:02] <strong>Rob Ruiz:</strong> So currently, right now I work full-time at an agency, but I do also do work for myself as well. So it&#8217;s kind of a hybrid situation.</p>



<p class="wp-block-paragraph">[00:05:09] <strong>Nathan Wrigley:</strong> Okay, so the reason that Rob is on the podcast today, well, there&#8217;s a variety of reasons. Most of it will bind itself to the subject of themes, as I said right at the start. But we&#8217;re also going to be talking, maybe towards the end a little bit about AI and things like that.</p>



<p class="wp-block-paragraph">However, Rob is now the custodian. I didn&#8217;t realise he was now the custodian. We&#8217;ll get into that in a minute. But Rob is the custodian at the moment of a project called WP Rig. And you can find this, it&#8217;s a really quick URL to type in, it&#8217;s WP Rig, so WPRIG .io.</p>



<p class="wp-block-paragraph">Completely free to download, completely unencumbered by a pricing page or anything like that. There&#8217;s a GitHub repo I think. Yes, that&#8217;s right. So do you just want to give us the elevator pitch for what WP Rig is. And just because it makes me happy, can you tell us how you got involved? Because that&#8217;s lovely too.</p>



<p class="wp-block-paragraph">[00:06:00] <strong>Rob Ruiz:</strong> Yeah. Yeah, for sure. So WP Rig is a theme development toolkit or framework, but it&#8217;s also a starter theme as well. So you could think of it as kind of like underscores but with a whole modern development toolkit situation built into it, meaning there&#8217;s a bunch of composer dependencies, Node dependencies, and other kind of developer tools baked into it to prepare developers for the best developer experience possible when developing themes for WordPress.</p>



<p class="wp-block-paragraph">How I got involved with it essentially is I was, first off, I was looking for a theme development framework. I had gone on a journey to explore many. And during that journey, I came across WP Rig, and kind of fell in love with it. It was really, really cool. I liked it a lot. I liked a lot of the opinions. I liked how well aligned it was with Core WordPress itself. I like the WordPress best practices that it enforces, you know, automatically. You don&#8217;t even have to like go look them up and think about it. You could just run a tool that&#8217;s built into it and it&#8217;ll check all your code for said best practices.</p>



<p class="wp-block-paragraph">And so that was very interesting to me. I was like, I&#8217;m going to start using this. And so I did. I did start using it. And then, shortly thereafter, I had been browsing my favorite WordPress news site, WP Tavern, and noticed an interesting article about the project that I had just recently fell in love with out of sheer coincidence, I suppose. Out of sheer coincidence, it just so happens this project is now looking for new maintainers, and that they were having a Zoom call in the near future where anybody interested in maintaining the project could join the Zoom call.</p>



<p class="wp-block-paragraph">And so I did. I joined the Zoom call and I got to meet the previous maintainers, or maintainer rather, and ended up having ongoing conversations with him after the call. And one thing led to another, and now the project is basically managed solely by me with a handful of other light contributors.</p>



<p class="wp-block-paragraph">[00:08:04] <strong>Nathan Wrigley:</strong> So that&#8217;s really nice. I love the fact that there&#8217;s some sort of combination of WP Tavern and WP Rig out there. That&#8217;s lovely. So I appreciate that. The audience for this podcast is pretty varied. So there&#8217;ll be developers with a longstanding history with WordPress, you know, deep in the code. Will go to WP Rig and immediately everything will connect, and they&#8217;ll be like, yep, I get this. I understand what this is. It&#8217;s for me. It&#8217;s not for me, yada, yada.</p>



<p class="wp-block-paragraph">However, we also have quite a lot of people listening to this who are brand new to WordPress. They&#8217;ve got no experience with code. They may be living inside of a page builder or something like that where everything is point, click, drag, drop, save, that kind of an environment. It just occurred to me that they very well might not know what even a theme development framework is. So can we begin there? What is the point of a thing like this? What&#8217;s the problem you&#8217;re trying to solve? Let&#8217;s start there.</p>



<p class="wp-block-paragraph">[00:08:53] <strong>Rob Ruiz:</strong> Yeah, that&#8217;s a great question. So like anything in WordPress, because it&#8217;s open source and so beautifully designed, might I add, from an architectural standpoint, there are lots of ways to extend WordPress beyond its base functionality.</p>



<p class="wp-block-paragraph">Two of the most common ways to do this is via the plugin system, and via the theme system. And so we can add custom plugins to extend the functionality of WordPress, but we can also add custom themes to alter the way our website looks and feels aesthetically.</p>



<p class="wp-block-paragraph">So if you&#8217;re somebody who&#8217;s more of a designer maybe, or you appreciate aesthetics and perhaps you&#8217;ve dabbled in some CSS, you might be more inclined, if you&#8217;re looking to go beyond just what Core WordPress provides to you in terms of a site building experience, I would encourage those people to look at themes and possibly creating your own custom theme. Or altering an existing theme using a concept called child theming where you can take any theme that you get from anywhere, whether you buy it or find it on the wordpress.org theme repository. You can extend themes using child themes, or you can just build your own themes from scratch.</p>



<p class="wp-block-paragraph">So that does include some work outside of the WordPress admin area. So once you get into developing themes for WordPress, the concept here is you&#8217;re kind of straying away from the WordPress admin experience, and you&#8217;re now like in the code editor realm, right? Because under the hood, WordPress is all just a bunch of code, PHP, JavaScript, CSS. There&#8217;s a lot going on, the React now. There&#8217;s a lot of things kind of built into WordPress.</p>



<p class="wp-block-paragraph">And so the beautiful thing about WordPress is that you can kind of, if you&#8217;re interested in learning how to develop, you can kind of dip your toes into the development pool as frequently as possible, as quickly as you want. Whatever you are comfortable with, you can kind of pace yourself there and say, okay, let me try and make a custom theme, or let me try to make a custom plugin. And if it doesn&#8217;t work out, it&#8217;s easy to just deactivate it, delete it, remove it, whatever. It&#8217;s a great way to learn how to develop, in my personal opinion, because a lot of the heavy lifting is done by the Core WordPress system.</p>



<p class="wp-block-paragraph">Basically what WP Rig offers is, instead of having to create a file system, a theme system from scratch, you know, a lot of people will reach for a concept called a boilerplate. Something that will scaffold kind of like the common files and folders that would be necessary in a theme, and then allow you to work from there. So you&#8217;re not just starting from like ground zero, create a new directory, create a new file.</p>



<p class="wp-block-paragraph">And so that&#8217;s kind of what WP Rig offers is like, okay, go to our GitHub repo, clone the GitHub repo down, and then there are directions in the repo on how to get it to scaffold all the tools that come with it, all of the Node and Composer tools. And then you&#8217;re kind of off to the races.</p>



<p class="wp-block-paragraph">[00:11:46] <strong>Nathan Wrigley:</strong> So with WP Rig, I&#8217;m guessing we would describe this as a framework or something like that. The idea being that you can bring this, kind of learn how it works, become adept at it, and then it&#8217;s like your constant friend. It&#8217;s always in the background. It&#8217;s the thing that you can rely on. It&#8217;s the muscle memory which develops over time. So you can ship your own themes, which kind of depend on the framework, but also, you know, you&#8217;re familiar with it so that bit is taken care of and straightforward.</p>



<p class="wp-block-paragraph">What is it that attracted you to this particular theme development framework, at the time when you were sort of scrambling around looking for a project to become involved with?</p>



<p class="wp-block-paragraph">I mean, one of the things that I always found curious was the leaner, the better. You know, the less that there was in such a thing, the more I was drawn towards it, because it gave me a, the basis, the scaffolding basically from which I could start building. Now, I don&#8217;t know if that&#8217;s what drew you here. So there&#8217;s the question. What is it that you thought was superior for want of a better word about this one?</p>



<p class="wp-block-paragraph">[00:12:41] <strong>Rob Ruiz:</strong> Well, you nailed it. It&#8217;s really that. Like, it is quite minimal at its core. I also really appreciated how it treated CSS, as somebody who comes from a design background. I love modern CSS. I love following CSS influencers on YouTube, and learning all the new tricks. It&#8217;s a lot to keep up with and as, now that Internet Explorer is gone, CSS is progressing at an enormous rate, which I&#8217;m very excited about. But it also forces you to keep in tune with what you can do with it and what you shouldn&#8217;t do with it. And so there are tools built into WP Rig to help you assess those things as you&#8217;re developing your CSS in there.</p>



<p class="wp-block-paragraph">When I originally was brought onto it, we were using a tool called PostCSS. That would essentially allow you to use future CSS before it was adopted by all modern browsers. And during the compilation process, it would convert your future CSS to today CSS essentially. And so the idea there is that as CSS catches up, your compilation would just have to do less work, right? So when it compiles all your CSS, it would, you know, like now that nesting is a thing, right? I was using WP Rig before CSS nesting was supported by all modern browsers, but I was able still to use CSS nesting in WP Rig, which I really liked. So there&#8217;s that aspect of things</p>



<p class="wp-block-paragraph">and yes, it is very light. I&#8217;ve used other theme development frameworks where they encourage you to use kind of like a templating language or framework. I didn&#8217;t really like that approach because it felt very foreign to WordPress. Nothing else in WordPress uses such a thing. That kind of turned me off a little bit because I was like, I don&#8217;t want to learn this whole other concept that like really doesn&#8217;t exist anywhere except for Laravel. I liked that about it. It kept it simple in that regard.</p>



<p class="wp-block-paragraph">And then if you&#8217;re using WordPress at like a agency level, if you&#8217;re building bespoke custom sites for clients, something like WP Rig is extremely powerful because it allows you to increase your level of customisation as much as you want, and the tools are all there to help you handle that. Also, meanwhile, if you&#8217;re working on a team of developers, which is often the case if you&#8217;re working with an agency or something like that, WP Rig becomes kind of like a home base, if you will, for opinions, for coding practices, for checks and balances.</p>



<p class="wp-block-paragraph">All these things, it helps put everybody on the same vehicle, I guess, if you want to think of it like that. Everybody&#8217;s using the same vehicle, so there&#8217;s not wildly different ways of doing things, which can be very, very handy when working on a team and assessing other people&#8217;s code, and perhaps taking over work for other people and so on and so forth.</p>



<p class="wp-block-paragraph">[00:15:23] <strong>Nathan Wrigley:</strong> So the thing about frameworks, I guess, is that, if you are in the WordPress space and you are that page builder user, so everything is within the WP admin, you know, you download a plugin, which creates pages or a theme, I guess you could do the same thing, but you&#8217;ve got that kind of experience with WordPress. Is this something that would map to those kind of users perfectly, or is there more of a learning curve? Do you need to be leaning more into the developer side of things?</p>



<p class="wp-block-paragraph">Maybe there&#8217;s a happy transition that can be made. Because, you know, when you&#8217;re on the website, you have interesting acronyms. So, you know, CSS, JS, we&#8217;re probably entirely familiar with those, but then we get into things like esbuild, Lightning CSS, ESLint, NPM, Composer and so on. And at this point I can imagine quite a few of the inexperienced users thinking, you know what, this is going to be tough for me.</p>



<p class="wp-block-paragraph">So I just want you to give us an impression, reassure people. How hard is it to go from that, I&#8217;ve never done anything like this before. To up and running, becoming familiar, if not necessarily completely familiar in a heartbeat?</p>



<p class="wp-block-paragraph">[00:16:25] <strong>Rob Ruiz:</strong> In my opinion, it&#8217;s not hard because you can kind of just focus on where you want to focus. And so for instance, if you&#8217;re only interested in writing CSS styles and you just want to change colors, and sizing, and fonts, and stuff like that, you could use WP Rig to make an extremely simple theme, which is what I would encourage people to do if they&#8217;re just getting up and running.</p>



<p class="wp-block-paragraph">Back to your question about page builders and such, there is like this, I don&#8217;t want to call it a problem, but there is a paradigm in WordPress that I think, especially for newer WordPress developers, they need to be very aware of, which is that you kind of have two schools of thought.</p>



<p class="wp-block-paragraph">You have this school of thought of like, okay, I want to just use the WordPress admin to customise every little bit, every little piece of my WordPress site. I should be able to do it in the WordPress admin. And so that&#8217;s where some of these more complex page builders kind of come in and provide a lot more control than just what Core WordPress provides you.</p>



<p class="wp-block-paragraph">But with that said, it will never be ultimate control. It will never be ultimate control, because there&#8217;s always going to be some amount of constraints. You&#8217;re always going to be constrained by what configurations, what settings, what fields, what controls that page builder provides you.</p>



<p class="wp-block-paragraph">And not only that, you have to keep in mind some of these rules, I like to think of them as rules, configurations, settings, whether it&#8217;s at the block level, widget level, element level, whatever word you want to use to describe a part of your page, like an object or a component, it&#8217;s a very common word. When you&#8217;re using a page builder, that&#8217;s all getting saved into the database. Anytime you enter a value, you click save or whatever. Everything is in the database, all of it, right?</p>



<p class="wp-block-paragraph">And so if you need to make a global change across your whole site, let&#8217;s say you want all of the blocks on your website to all of a sudden have a border around them, or you want to change something about them, the colour, background colour, something like that. In a page builder world, you&#8217;re going to have to go into every single one of those elements, those blocks, whatever, and you&#8217;re going to have to change those values everywhere.</p>



<p class="wp-block-paragraph">Where, when you&#8217;re doing things with just code, you have kind of superpowers. In my opinion, coding, if you want ultimate control over your site and you want to be able to do literally anything you can imagine, and be able to do it in a way that&#8217;s progressive and is comprehensive, without any barriers, without any limitations, code will always be the best way to exercise that control that you&#8217;re going after.</p>



<p class="wp-block-paragraph">Now, obviously, newer people, too much control can lead to confusion and all this stuff. So I don&#8217;t fault people for using some of these other solutions like page builders to kind of get their feet wet and get up and going and kind of figure out how to use just WordPress itself.</p>



<p class="wp-block-paragraph">But once you get to a point where you&#8217;ve been doing that for a while and you&#8217;re looking at like other websites that aren&#8217;t even WordPress that have all kinds of interesting, cool features built into them, new paradigms being presented and exposed. Let&#8217;s say you follow CSS and you&#8217;re looking at all the newest CSS features that are coming out. Many of those newest CSS features that are coming out, there&#8217;s really no ability to control those things in your WordPress site, because that stuff literally just got adopted by Chrome or whatever, just reached modern browser adoption like recently, right?</p>



<p class="wp-block-paragraph">And so you have to kind of wait for the page builders, for WordPress to kind of now provide you new controls, new tools, so that you can then control those things. But when you&#8217;re doing things with code, you could just do it immediately, and you could do whatever you want.</p>



<p class="wp-block-paragraph">So when you&#8217;re building your own theme from scratch or you&#8217;re trying to, even creating your own plugin from scratch, it&#8217;s never really going to be a concept that&#8217;s for like new WordPress people that are just very, very new to just developing websites in general. But it is nice to know that these tools are out there and they&#8217;re there, so that when you do get to a point where you&#8217;re ready to kind of spread your wings a little bit more, you know what tools are out there to reach for. And you can begin to play with them a little bit instead of forever feeling confined to one paradigm.</p>



<p class="wp-block-paragraph">[00:20:40] <strong>Nathan Wrigley:</strong> Yeah, there is something exceedingly satisfying about understanding how, whatever the thing is works. I imagine that as a child, you were perhaps that child that took things apart and enjoyed the experience of looking at the insides and thinking, how did that work? Okay, that&#8217;s how it worked. Okay, that cogs connected to that thing, and then that spins around in that way. And, oh, and look that on the front spins around as well. Got it. I understand that now. And you reassemble it and what have you.</p>



<p class="wp-block-paragraph">I think there is something exceedingly interesting about that in the WordPress space. Obviously, WordPress, CMS, incredibly powerful out of the box. You&#8217;ve got the WP admin, and perhaps that&#8217;s as far as you wish to go.</p>



<p class="wp-block-paragraph">But peeling back the layers and understanding, how is a page constructed? Where does the CSS get called from? How is the HTML finally output? What are the bits and pieces that make it up? How does the theme layer do its bits and pieces? You don&#8217;t have to kind of understand it all in one hit. You can, with a framework, the likes of which we&#8217;re talking about, WP Rig, there is this capacity to just take little nibbles and have a slow, but realising appreciation. Oh, okay, that&#8217;s how it works.</p>



<p class="wp-block-paragraph">But not only that&#8217;s how it works, okay, now that I know how that works, I now am in control of it. Whereas in a way, previously, I just was sort of a passive observer. Perhaps there was a setting area in my page builder or what have you. And if it was there, I could make use of it, and if it wasn&#8217;t, I couldn&#8217;t.</p>



<p class="wp-block-paragraph">But also I think it drives you into that journey of understanding the open standards, the open web, the things that make up the technology which is free, available to everybody. What WordPress builds upon.</p>



<p class="wp-block-paragraph">And I&#8217;m talking specifically about HTML, CSS and JavaScript, just those three things. The foundational pieces of the web. And it allows you to get involved in that, and be interested in that and understand where the web is heading. And especially like you said, with modern CSS&#8217;, it is coming really fast and it is fast replacing, in many respects, I think a lot of JavaScript really is going to be obsolete, for the front end side of things, in the fairly short term.</p>



<p class="wp-block-paragraph">So it allows you to sort of nibble away at that and become more experienced. And if you haven&#8217;t had that journey but you&#8217;ve got a curiosity, this is possibly a great place to start. There is no question there, but I&#8217;m just sort of offering that up to see if that jibes with what you think.</p>



<p class="wp-block-paragraph">[00:22:52] <strong>Rob Ruiz:</strong> I couldn&#8217;t agree more. And not only that, I think an important thing to think about WordPress as we move forward into the future and more competitors to WordPress emerge, I think it has never been more important to make sure that we have tools out there that are designed to facilitate people in their journey to getting into development. Because let&#8217;s be real, WordPress is open source, and we have to remember that WordPress is at the mercy of its contributors.</p>



<p class="wp-block-paragraph">And so if the number of people contributing to WordPress starts to decline, so too will the progress of WordPress itself, unless other big companies with other developers that they&#8217;re actually paying are willing to foot the bill to like pay people to contribute to WordPress.</p>



<p class="wp-block-paragraph">I don&#8217;t know that that&#8217;s the bright future that WordPress had originally like looked towards, right? I think what&#8217;s made WordPress so powerful and so successful over the years are the tinkerers, are the people that are willing to get in there and start to like learn things and figure things out. And then those people will slowly become contributors. And the more contributors we have to WordPress, the more WordPress itself will flourish. And then if that starts to go in the opposite direction, so too will WordPress.</p>



<p class="wp-block-paragraph">And now these other services, and other solutions that are out there, are going to like eclipse WordPress and then people are kind of forced into a situation where it&#8217;s like, oh, well now you have to constantly go out and pay for and buy things, and now you&#8217;re at the mercy of these product authors, if you will, as opposed to being a part of a community of people that are all kind of collectively working together to make this one platform better all the time.</p>



<p class="wp-block-paragraph">[00:24:37] <strong>Nathan Wrigley:</strong> Yeah, the open web and all of the web standards that are behind that, it is such an interesting time for that. Rewind the clock, I don&#8217;t know, 10 years or something, and there was this whole bond fight thing where browser vendors were just distributing things which were either in opposition, certainly in competition to features. And so you could never really figure out what the heck you were doing, and each browser would behave differently.</p>



<p class="wp-block-paragraph">That is so far in the rear view mirror now. In the majority of cases, new things like new CSS, the new CSS spec is broadly speaking, adopted by everybody out of the box. I mean, there might be a few tiny edge cases where, I don&#8217;t know, let&#8217;s say Mozilla is just not implementing something because they just haven&#8217;t quite got round to it yet.</p>



<p class="wp-block-paragraph">But there&#8217;s no, Mozilla&#8217;s not doing that. It&#8217;s just a case of, we didn&#8217;t get around to it. And understanding that and being interested in that and thinking to yourself, well, goodness me, if I change my CMS of choice, at the end of the day, I still need to be able to output HTML and CSS. And so having that tinkerer mentality, which you are providing within the WordPress space is so interesting and so credible. So thank you for that.</p>



<p class="wp-block-paragraph">Right, I&#8217;m going to pivot a little bit. So again, this is leaning in more to the inexperienced user. Forgive me if you are an experienced user listening to this, you probably know what you are doing. So maybe, you know, you don&#8217;t need all the 101 stuff.</p>



<p class="wp-block-paragraph">What do you need to get WP Rig up and running? Because I think a lot of the audience listening to this will simply be, I have a server somewhere. You know, I don&#8217;t really know where it is, but I pay some company and I click a button in some control panel and WordPress magically happens. And then I install a theme and plugins, and that&#8217;s basically it.</p>



<p class="wp-block-paragraph">So what do we need to get WP Rig up and running? What are the core parts, the processes that we would need to go through?</p>



<p class="wp-block-paragraph">[00:26:24] <strong>Rob Ruiz:</strong> Yeah, well the important thing to keep in mind here is that it&#8217;s all on your own computer that you&#8217;re doing all of the work, as opposed to the WP admin approach where, when you&#8217;re interacting with WordPress, you are actually interacting with a remote server. The databases on the remote server, the files are on the remote server, all that stuff.</p>



<p class="wp-block-paragraph">When you&#8217;re developing a theme or plugin from scratch, more often than not, I would say 99% of the time you&#8217;re doing it on your own computer. And so you do have to have, if you want these tools that facilitate this development process, you have to install them on your computer so that they&#8217;re available when you go to use them.</p>



<p class="wp-block-paragraph">So there are some pre-reqs to using WP Rig. You do have to install Node. Node.js is a very common JavaScript runtime that runs on your computer and allows your computer to process JavaScript as if it&#8217;s a browser kind of, but it&#8217;s not, it&#8217;s just doing it on a server, which essentially any computer can be a server at any time.</p>



<p class="wp-block-paragraph">And so you have to have Node installed. You have to have Composer installed. Composer is just a package manager for PHP, and it&#8217;s used beyond just WordPress. It&#8217;s used in Laravel. It&#8217;s used in any, even just raw, vanilla PHP development. Composer is very popular. So we do leverage some Composer packages to do some PHP level work in the theme.</p>



<p class="wp-block-paragraph">And you need a local development environment, of course. So there&#8217;s the wp-env package out there. If you&#8217;re into the Docker way of doing local development. I&#8217;m a big fan of Local WP. I think that&#8217;s a great solution. WordPress Studio is another very good one. There&#8217;s lots to choose from out there.</p>



<p class="wp-block-paragraph">So just choosing a local development environment and getting to know one of those is really handy because now you&#8217;re not dealing with a WordPress instance that&#8217;s on a remote server, you&#8217;re dealing with a WordPress instance that&#8217;s running on your computer. And this is where all of that magic is going to happen. All the automatic conversion of your CSS, all automatic conversion of TypeScript to ES5 JavaScript. All of the automatic things that WP Rig handles for you, all of that is happening on your computer.</p>



<p class="wp-block-paragraph">And then there&#8217;s a process, a bundle process that happens. Once you&#8217;re done working on your theme, you can bundle the theme and then, this is where things get a little weird. So like when you first get working with WP Rig, you can think of the WP Rig theme, the starter theme as kind of like a source theme. But when you bundle, WP Rig actually generates a whole new theme for you that has the name of your theme baked into it. And not just like how it shows up in the WordPress admin, it goes through and it replaces all references to WP Rig in the code everywhere, across the entire code base of the theme. It changes the words WP Rig to whatever the name of your theme is.</p>



<p class="wp-block-paragraph">So if you build a theme with WP Rig and you decide to sell it or deploy it or ship it or whatever to anybody, user, wherever, anywhere. Anybody that&#8217;s looking through that source code, for whatever reason, they would have no way of knowing that it was built with WP Rig because it&#8217;s just going to look like your theme.</p>



<p class="wp-block-paragraph">[00:29:31] <strong>Nathan Wrigley:</strong> There&#8217;s something extremely satisfying about seeing your theme. The first time you see your theme. Stick it on a website somewhere and, oh, look, there&#8217;s the thing that I built. Whereas, you know, for many people, it&#8217;s been an entire experience of going to the repo, going to commercial theme houses and what have you, and downloading something and tweaking it and what have you.</p>



<p class="wp-block-paragraph">And you really can start really, really, really small. You know, a few lines is really all that you need to get going and build up from there. Obviously it will start plain, but the more complexity you add.</p>



<p class="wp-block-paragraph">But given that it&#8217;s all happening on your local computer, it&#8217;s not like you need to rush. This could be something which is years in the making. You know, you start today and maybe two years from now you are entirely happy and you&#8217;ve got something that you think is worthy of the world looking at. Well, that&#8217;s the point at which you can start to distribute it. As you&#8217;ve just described, because it&#8217;s all free, completely open source, when you ship that theme, export it, everything is run in such a way that nobody would ever know, which is just lovely.</p>



<p class="wp-block-paragraph">Okay, so given all of this fresh, interesting stuff about WordPress themes, we&#8217;re in an interesting space in the WordPress theme marketplace, let&#8217;s call it that.</p>



<p class="wp-block-paragraph">Several years ago, full site editing came along and now we&#8217;ve got this sort of different way of doing themes. Previously we had to open up an IDE and fiddle with template files and things like that. And now we&#8217;ve moved more into a page builder, let&#8217;s go with that. You know, there&#8217;s this Gutenberg block based editing of themes, where you can do more or less everything in a UI.</p>



<p class="wp-block-paragraph">How does this fit into that piece, and what do you make of this new paradigm, this new way of doing themes? Are there benefits to it that you see, or drawbacks? Are you still doing it? Do you see a bright future for WP Rig? I&#8217;m guessing the answer&#8217;s yes, otherwise you wouldn&#8217;t be on this podcast.</p>



<p class="wp-block-paragraph">[00:31:16] <strong>Rob Ruiz:</strong> That&#8217;s right. Yeah. Well, I will say that as somebody who had recently decided to adopt WP Rig, when the whole concept of FSE was first announced or introduced, I did have some strong opinions because I was like, oh my gosh, this is going to make my life very difficult if this becomes the way of doing things. And so I kind of foresaw a lot of where things have gone over the past few years.</p>



<p class="wp-block-paragraph">So at the beginning I was a little hesitant because it kind of threw a wrench in this new thing that I was excited to adopt and start advancing. Over time I have come to appreciate it quite a bit. And in my opinion, it&#8217;s just allowed me as the maintainer of WP Rig, a lot of opportunity to really get in there and learn a lot, and get my hands dirty, and allow WP Rig to become something that was more my own, as opposed to something that I just adopted from some other people that had done a bunch of work, right?</p>



<p class="wp-block-paragraph">Had that not happened, I probably would&#8217;ve just been like encouraged to just kind of sit back and be like, ah, yeah, you know what, this is my thing and it works and whatever. But this presented a lot of challenges and those challenges present a lot of opportunity if you look at it the right way. Not just opportunity to make something my own, not just opportunity to build things, but also opportunity, most importantly, I think, to learn things. And so that&#8217;s really been the gift of where all of this has gone for me personally.</p>



<p class="wp-block-paragraph">Do I think that full site editing makes it so that you don&#8217;t have to make your own theme as much? Yes, I do think that is a thing because you have a lot more control of the way your website looks from within the WordPress admin area and creating templates and block patterns and all that stuff from within WordPress. It is different than how we used to do it, let&#8217;s put it that way.</p>



<p class="wp-block-paragraph">However, as somebody who has decided to just like adopt it, I will say that if you can keep the paradigms and concepts all categorised and separated in your brain, then it&#8217;s actually quite powerful and can be extremely handy, especially with how fast the WordPress admin experience has gotten over the past few versions. It is very snappy now, almost to the point where it&#8217;s satisfying to use. Crazy to say. But it&#8217;s just so snappy. And we&#8217;ve got lots of little micro animations coming in there now where you can, you know, just the way everything happens is like, to me, it makes it a little bit more fun.</p>



<p class="wp-block-paragraph">What does that mean for WP Rig? Well, that means there&#8217;s multiple paradigms that WP Rig has to support. So because WP Rig was originally created in the classic paradigm, when you first start using WP Rig, it does assume that you&#8217;re creating a classic style theme. But that doesn&#8217;t mean you&#8217;re forced to build a classic style theme. Because one of WP Rig&#8217;s strongest features is that there are whole bunch of custom command line commands that you can type in and run that will automatically convert WP Rig into these other paradigms.</p>



<p class="wp-block-paragraph">So if you want to build a block-based theme or a universal theme, which is kind of halfway between classic and block-based, you could just run a command in your terminal and it will just automatically change a bunch of files in WP Rig to convert it to this other paradigm. And now you have full site editing as part of your theme.</p>



<p class="wp-block-paragraph">And many people may not be aware of this, but the whole concept of full site editing is controlled by the theme. Whether or not you even have full site editing on WordPress is dependent on the theme. It&#8217;s not well, Gutenberg can be removed via a plugin, but in order to enable these functionalities, like if you want to be able to do full site editing, it is the theme that dictates that, not a plugin.</p>



<p class="wp-block-paragraph">So it is important for WP Rig to facilitate that part of things. And so that is something that I&#8217;ve had to build out among many other things. Now WP Rig has a full block authoring experience built into it.</p>



<p class="wp-block-paragraph">Now, this is where things get very, very opinionated among developers. But a lot of people argue that blocks are a, that&#8217;s plugin territory, right? Now, I don&#8217;t know about you, I&#8217;m not really much for territories. I like to pretend that borders don&#8217;t exist sometimes. And so there are situations where building theme level blocks do make sense. Keep in mind that if you decide to bake custom blocks into your theme, you have immediately disqualified yourself from contributing this theme to the wordpress.org theme repository. So keep that in mind. That&#8217;s a big cautionary, little tidbit.</p>



<p class="wp-block-paragraph">But if this theme is just for you, or a client, or for usage outside of the WordPress repository, WordPress does have the ability to enable block authoring within WP Rig. And then now you can start to author blocks within your theme.</p>



<p class="wp-block-paragraph">Where I like to think of this as like navigation, right? When I&#8217;m looking for themes, if I&#8217;m like shopping for themes, one of the first things I look at is, what is the navigation for this theme? What is that experience like? Because there&#8217;s lots of different kind of like styles of navigation.</p>



<p class="wp-block-paragraph">If you need to create a custom navigation, maybe there&#8217;s a situation where the navigation block in Core WordPress doesn&#8217;t suit your needs for whatever reason. Maybe the design of what you&#8217;re trying to build somehow goes beyond what that block provides to you in terms of functionality. You could create your own custom navigation block, and in my opinion, that makes a lot of sense to be part of the theme as opposed to a plugin, right?</p>



<p class="wp-block-paragraph">So there&#8217;s opinions there. Again, this is the nice thing about open source. There&#8217;s freedom there. But yeah, WP Rig has not just the ability to facilitate full site editing, but also the ability to facilitate block authoring at the theme level. So, yeah, one could look at this and be like, oh, this makes theme development kind of pointless because you could just do everything within the full site editor. I&#8217;m somebody that likes to kind of flip things on its head a little bit sometimes and say, actually, you know what that really means is that this gives the theme more control than perhaps you would&#8217;ve thought previously. And if you exercise said control, and if somebody provides an easy way to allow you to exercise that control, now we have a whole new paradigm. And in my opinion, that&#8217;s extremely interesting.</p>



<p class="wp-block-paragraph">[00:37:39] <strong>Nathan Wrigley:</strong> Yeah, I think the thing that I&#8217;m taking away, well, there&#8217;s a few things from what you just said. The first one, fully hybrid. You know, it could be classic, it could be block based, or it could be somewhere in the middle, like this hybrid sort of approach, which doesn&#8217;t really get talked about all that much anymore, actually, which is curious. It was a big thing for a while, and now people seem to be on one side or the other. So there&#8217;s that.</p>



<p class="wp-block-paragraph">But also the bit that I&#8217;m taking away from all of this is how much you are encouraging people to use this as an education piece. How to learn and scaffold your learning around something like the WP Rig project. It enables you to sort of peel back the layers. Start from a base of kind of nothing and build that up, slowly one piece at a time.</p>



<p class="wp-block-paragraph">And your navigation is a really great example. You might have, I don&#8217;t know, maybe a client comes along who have proclivities around, it&#8217;s got to be 100%, we&#8217;ve got to give everything over on the accessibility side, we&#8217;ve really got to do that perfectly. Well, this maybe is a great place to start. You know, you start with a blank template for that, and you build your navigation. So you will end up exploring all sorts of documentation over on the W3C website. Probably not necessarily so much on the WordPress side of things. Figure out how to do that really well, import your knowledge that you&#8217;ve gained from that into the navigation aspect of WP Rig, ship that, you&#8217;re off to the races.</p>



<p class="wp-block-paragraph">Now, with that in mind, if you go to the WP Rig website, there&#8217;s a lot of educational content there. So there&#8217;s the inevitable kind of getting started, which is what we talked about earlier, all of the packages and the package managers and what have you that you need to get up and running. So it explains how that is all to be done. Relatively straightforward to follow that through, I would&#8217;ve thought.</p>



<p class="wp-block-paragraph">But then entirely separate to that is two different sections. You&#8217;ve got this like learn section where you&#8217;ve got documentation, video tutorials and things like that. But then you&#8217;ve also got like the docs area where you go into explain, oh I don&#8217;t know, how you might use JavaScript or CSS or some sort of compiled CSS or PHP and so on and so forth.</p>



<p class="wp-block-paragraph">So again, no question there really, but it does feel, from my point of view, looking at this project that education is kind of the big piece. That&#8217;s the thing that you are most interested in. I don&#8217;t know if I&#8217;ve misrepresented this project, but that&#8217;s what it feels like.</p>



<p class="wp-block-paragraph">[00:39:58] <strong>Rob Ruiz:</strong> A hundred percent. And I think that&#8217;s inevitable when it comes to getting into this tinkerer mindset. There must be a way to learn how to tinker properly. It is also nice to add guardrails to said, because let&#8217;s be honest, there&#8217;s like a million different ways to do everything, but there&#8217;s very, very few correct ways to do everything.</p>



<p class="wp-block-paragraph">And so that&#8217;s another nice feature of WP Rig is that it has these sort of guardrails in place that allow you to check and make sure that you&#8217;re doing things properly. And if there&#8217;s anything that you&#8217;re doing improperly, you can obviously ignore those if you want to for whatever reason, or you can like dive into the weeds and say, okay, why is this improper?</p>



<p class="wp-block-paragraph">So for instance, WordPress, Automattic created a package. It&#8217;s essentially an extension for a tool called PHPCS, which stands for PHP Coding Standards. This tool is used by PHP widely beyond just WordPress. But then WordPress adopted it a while back and decided to use it and create their own extension for it called the WordPress Coding Standard. It&#8217;s WPCS.</p>



<p class="wp-block-paragraph">And so they&#8217;ve iterated on it over the years and WPCS is baked into WordPress, or into WP Rig rather. So if you want to make sure that your theme is following all of the WordPress coding standards for whatever reason, maybe it&#8217;s because you&#8217;re going to create a theme that you want to contribute to the wordpress.org theme repository, then that tool is baked into WP Rig for you, so that you can make sure that your theme meets all of the requirements for a properly developed theme before you even try to go and like submit it for a review or whatever.</p>



<p class="wp-block-paragraph">Because that&#8217;s one of the most frustrating things ever is somebody who wants to contribute. If you try to contribute and then you get pushed back on, that&#8217;s like not a great experience. And so what I try to do with WP Rig is bake in this layer that is kind of like a, test it yourself type situation. Where you can kind of like have the system sort of, kind of review the code for you, and then that way you can make sure you&#8217;ve done your due diligence before you even try to submit it for review. To prevent that unfortunate situation where your theme might get rejected for one reason or another, and now you got to go back and rework it and then back and forth, back and forth, back and forth.</p>



<p class="wp-block-paragraph">Having a tool like WP Rig that just tells you early on before you even try to submit it, hey, you should change this, you should change that. I think that&#8217;s extremely valuable for people. And again, I really want WP Rig to be something that encourages people to get more into contributing back into Core as opposed to. I mean, it can also be looked at as something like, okay, well you want to go develop your own thing and it&#8217;s for profit or whatever. It does very much facilitate that way of doing things too. But let&#8217;s be honest, anything that meets WordPress&#8217;s coding standards is probably going to make your theme, even if you&#8217;re putting it up for sale, it&#8217;s going to make it better.</p>



<p class="wp-block-paragraph">[00:42:53] <strong>Nathan Wrigley:</strong> Yeah, I love that you&#8217;ve built all of that in. That&#8217;s really interesting. So it does a lot of the heavy lifting, trying to make sure that you are adhering to the standards, which one would hope would be in a shippable, distributable product.</p>



<p class="wp-block-paragraph">Speaking of community, do you have a community which coalesce around this project? Is it basically just you? Or is there like a little team? And if not necessarily a team, is there a little community which gathers and sort of helps you put this project together? And a corollary to that question really is, do you anticipate in the future that you will like some contributors to help you maintain this as well?</p>



<p class="wp-block-paragraph">[00:43:27] <strong>Rob Ruiz:</strong> Yeah, for sure. So when I first started, when I first adopted this as my own, there was more of a team in place because Morten is a very well-known individual. And so he had a lot of followers and so a lot of those followers had followed WP Rig. As time has progressed, a lot of those people have kind of unfortunately gone their own way. For whatever reason, a lot of the people that were following him weren&#8217;t really like, they might have been into learning how to develop themes. They certainly were into WordPress. But working on a project like this is more than just knowing how to develop themes. You also have to know how the underlying tools work too.</p>



<p class="wp-block-paragraph">So that&#8217;s been my biggest challenge is learning, what is Lightning CSS? How do you use it? What is esbuild? How does that work? When I first took it over, it was ran on Gulp. What is Gulp? And what is that, and how do I modify it? And like that&#8217;s kind of far beyond WordPress, and so I think people became aware of that over time. And so while I rose up to the challenge, other people were just kind of moved on to other things.</p>



<p class="wp-block-paragraph">So it is largely me. We do have a handful of contributors that kind of, when they have time, you know, they&#8217;ll feel ambitious again and jump in and do some more contributions and they&#8217;ll fall back and do their own thing for a while. And so there&#8217;s a lot of that. It&#8217;s not a very active community, certainly not as active as it was when I first adopted it. However, we do have a Discord now. You can find a link to the Discord on the website. If you go to the Learn V3 link in the header, there&#8217;s links to our YouTube channel and the Discord server.</p>



<p class="wp-block-paragraph">So we are looking, I do want more of a community around WP Rig. And so I do encourage people to come on. Obviously we&#8217;ve been on GitHub this entire time, so if anybody wants to raise issues or submit a PR, there are guides on there. There&#8217;s a contributing.md file in there for anybody that wants to contribute, or wants to raise an issue. If you have ideas for how WP Rig could be better, that&#8217;s always been there. It&#8217;s just that, for one reason or another, it&#8217;s just not popular, which is a big reason why I&#8217;m on your show today actually is just to raise awareness about WP Rig now that I have had the opportunity to overhaul it dramatically over the past couple years.</p>



<p class="wp-block-paragraph">In my opinion, it was a little bit, it started to feel a little bit slow compared to most modern tools. If anybody&#8217;s familiar with like Vite, or just modern frontend development frameworks. In general, they use more modern tools that build things faster and better, and they&#8217;re leaner. And so WP Rig was falling behind a little bit in that regard. And so I did have to like overhaul the project a lot. That&#8217;s why we came out with the version three because it is a pretty substantial overhaul.</p>



<p class="wp-block-paragraph">And so now that we have version three and it is much better and there are all kinds of new features built into it as a result of it being faster, it&#8217;s now more capable. I want to raise awareness. A, I&#8217;ve already done the work, so it would be a shame for all that work to go unnoticed and unappreciated. But also, for anybody who was familiar with WP Rig from previous years, back in the version one, version two days, I think it&#8217;s important to make people aware that version three is substantially more capable than what it was prior.</p>



<p class="wp-block-paragraph">[00:46:38] <strong>Nathan Wrigley:</strong> That&#8217;s wonderful. I&#8217;m just going to round off the episode by mentioning the URL once more so that after that clarion call, if people have been inspired and they have listened to this and think, I&#8217;d like to explore that. You know, for the multitude of reasons that we&#8217;ve covered in this topic. The URL, it&#8217;s really easy. It&#8217;s WP Rig, wprig.io. Go there, there&#8217;s a whole bunch of ways to get involved. So there&#8217;s the Learn documentation, there&#8217;s the contribute tab and so on and so forth. You can peruse at your leisure.</p>



<p class="wp-block-paragraph">Rob, just before we end, is there a way that people could communicate with you more directly if they wanted to off the back of this? Is there a, like a, I don&#8217;t know, a social network or something that you frequent? Or a contact form that you&#8217;d like people to be mindful of?</p>



<p class="wp-block-paragraph">[00:47:22] <strong>Rob Ruiz:</strong> Yeah, sure. I mean, I am very responsive to people on LinkedIn, so if you want to find me on LinkedIn, I am on there, Rob Ruiz, just look me up. If it looks like it&#8217;s a Rob Ruiz that does WordPress stuff, it&#8217;s probably me. And then of course, I&#8217;m on the Discord server. So if you want to communicate directly with me, joining the Discord and then messaging me directly is a nice way to do that. I&#8217;d love to help people, hold their hand if needed, get up and running with WP Rig. If you have any questions about specifics, I&#8217;m happy to address them, or you just need a little guidance, I&#8217;d be happy to help there as well.</p>



<p class="wp-block-paragraph">[00:47:54] <strong>Nathan Wrigley:</strong> Well, thank you so much for chatting to me today, Rob. It&#8217;s been really interesting. So once more, just before we end to find out more. Rob Ruiz, thank you very much for chatting to me today.</p>



<p class="wp-block-paragraph">[00:48:04] <strong>Rob Ruiz:</strong> Thank you so much for your time, Nathan. I really appreciate it.</p>
</div></details>



<p class="wp-block-paragraph">On the podcast today we have <a href="https://www.linkedin.com/in/robcruiz/">Rob Ruiz</a>.</p>



<p class="wp-block-paragraph">Rob has been involved in the WordPress ecosystem since around 2010. He began as a designer, but over the years WordPress has helped him transition into a developer, software engineer, and now an architect. Currently, he’s working full-time at an agency while still taking on projects independently.</p>



<p class="wp-block-paragraph">The main topic for today’s conversation centres around themes, a subject that hasn’t been covered in depth on the podcast for quite some time. You see, Rob is the current custodian of WP Rig, a free and open source toolkit for WordPress theme development. WP Rig offers a modern, minimal, and best-practice driven starting point for developers who want to build custom themes, providing tools like Composer and Node integration to streamline workflows, enforce coding standards, and enable the use of future-facing CSS features right now.</p>



<p class="wp-block-paragraph">We start the episode with Rob sharing what attracted him to WP Rig, and his journey from user to project maintainer. We talk about who WP Rig is for, from experienced developers to those just starting to dip their toes into theme building and code customisation.</p>



<p class="wp-block-paragraph">The discussion moves on to talking about what a theme development framework actually is, and why this approach might suit people wanting more control, and education, in their WordPress journey. Rob describes the learning curve, the workflow, and the satisfaction of creating your own theme from scratch, while highlighting tools and guardrails built into WP Rig that make professional standards and best practices accessible to all.</p>



<p class="wp-block-paragraph">We also get into how WP Rig fits into the changing WordPress ecosystem. With the advent of full site editing and block-based themes, Rob explains how WP Rig has evolved to stay relevant, supporting classic, hybrid, and block-based paradigms, even enabling block development at the theme level.</p>



<p class="wp-block-paragraph">Towards the end, we discuss the community behind WP Rig, how you can get involved, and the many educational resources available for those who want to learn theme development, or even become contributors themselves.</p>



<p class="wp-block-paragraph">If you’re interested in building custom WordPress themes, want to understand the nuts and bolts of theme frameworks, or are simply looking for a modern and educational starting point for WordPress tinkering, this episode is for you.</p>



<h2 class="wp-block-heading">Useful links</h2>



<p class="wp-block-paragraph"><a href="https://wprig.io">WP Rig website</a></p>



<p class="wp-block-paragraph"><a href="https://www.linkedin.com/in/robcruiz/">Rob on LinkedIn</a></p>



<p class="wp-block-paragraph"><a href="https://wordpress.org/themes/">WordPress.org theme repository</a></p>



<p class="wp-block-paragraph"><a href="https://postcss.org">PostCSS</a></p>



<p class="wp-block-paragraph"><a href="https://developer.wordpress.org/block-editor/getting-started/devenv/get-started-with-wp-env/">Get started with wp-env</a></p>



<p class="wp-block-paragraph"><a href="https://developer.wordpress.com/studio/">WordPress Studio</a></p>



<p class="wp-block-paragraph"><a href="https://codex.wordpress.org/WordPress_Coding_Standards">WordPress Coding Standards</a></p>



<p class="wp-block-paragraph"><a href="https://wptavern.com/podcast/15-morten-rand-hendriksen-on-governing-open-source-projects">Morten Rand-Hendriksen on the WP Tavern Jukebox podcast</a></p>



<p class="wp-block-paragraph"><a href="https://discord.com/invite/su2et45Rat">WP Rig&#8217;s Discord</a></p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/@wprig1203">WP Rig&#8217;s YouTube channel</a></p>



<p class="wp-block-paragraph"><a href="https://vite.dev/guide/">Vite</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, 04 Mar 2026 17:08:13 +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:17;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:92:"Open Channels FM: Inside the Checkout Summit: What WooCommerce Events Mean for the Ecosystem";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=1650498";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:98:"https://openchannels.fm/inside-the-checkout-summit-what-woocommerce-events-mean-for-the-ecosystem/";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:191:"In this episode, James Kemp, Katie Keith, and Rodolfo Melogli discuss the revival of in-person WooCommerce events like Checkout Summit, the influence of AI on businesses, and community value.";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 Mar 2026 11:32:07 +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:18;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:70:"Open Channels FM: AI’s Impact on Human Interaction with the Open Web";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:33:"https://openchannels.fm/?p=539201";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:74:"https://openchannels.fm/ais-impact-on-human-interaction-with-the-open-web/";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:227:"AI's rapid evolution is reshaping web interactions, with automated traffic outpacing human engagement. This shift raises concerns about content value, as creators struggle to balance utility and genuine human experience online.";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 Mar 2026 09: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: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:19;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:88:"Open Channels FM: Open Channels FM, a Media Partner for CloudFest 2026 and the Hackathon";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=1650323";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:97:"https://openchannels.fm/open-channels-fm-is-a-media-partner-for-cloudfest-2026-and-the-hackathon/";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:112:"For the third year in the row we are proud to be a media sponsor for both the CloudFest Hackathon and CloudFest.";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 Mar 2026 09:33: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:20;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:71:"Open Channels FM: Expanding Your Skills Stack During the Rapid AI Shift";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=1650385";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:78:"https://openchannels.fm/expanding-your-skills-stack-during-the-rapid-ai-shift/";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:224:"Hosts Carl Alexander and Zach Stepek discuss the challenging yet empowering transition in careers, emphasizing the need to adapt skillsets, leverage AI tools, and focus on personal branding in a rapidly changing environment.";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 Mar 2026 14:47: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: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:21;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:94:"Open Channels FM: Preparing Your WooCommerce Store for the AI Era: Data and Catalog Management";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:33:"https://openchannels.fm/?p=535677";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:100:"https://openchannels.fm/preparing-your-woocommerce-store-for-the-ai-era-data-and-catalog-management/";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:365:"As WooCommerce continues to evolve in its integration with AI technologies, one theme stands out: the importance of structured and accessible data for store success. Conversations in a recent episode illuminated how a well-managed product catalog is the backbone of leveraging AI features, both now and in the future. Store owners and developers are urged [&#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:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 03 Mar 2026 12:38:17 +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:22;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:96:"Open Channels FM: What’s New at CloudFest Hackathon 2026: Trends, Changes, and Creative Energy";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=1650438";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:97:"https://openchannels.fm/whats-new-at-cloudfest-hackathon-2026-trends-changes-and-creative-energy/";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:185:"In this episode enjoy a chat about the CloudFest Hackathon 2026's history, future initiatives, and community engagement, emphasizing inclusivity, mentorship, and project sustainability.";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 Mar 2026 10:22:42 +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:23;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:11:"Matt: Emacs";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=151334";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:28:"https://ma.tt/2026/03/emacs/";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:740:"<p class="wp-block-paragraph">People are doing pretty interesting things with <a href="https://www.gnu.org/software/emacs/">Emacs</a> (now on version 30.2!) these days, if you haven&#8217;t checked in recently. The bleeding edge has always been people into <a href="https://orgmode.org/">Org Mode</a>. <a href="https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/">Sacha Chua has hooked up Whisper to Emacs</a> to talk to it.</p>



<p class="wp-block-paragraph">Emacs is probably one of the first and best examples of self-modifying software that contours to your brain. With vibe coding, we may get back to that space where everyone&#8217;s personal setup is like a crazy specific Emacs config file.</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:"Tue, 03 Mar 2026 10:11:53 +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:24;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:63:"Open Channels FM: How Freelancers Can Tame Digital Distractions";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=1650174";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:70:"https://openchannels.fm/how-freelancers-can-tame-digital-distractions/";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:173:"Starting conversations around strategies to reduce digital distractions, emphasizing boundaries for emails, social media habits, and personalizing routines for better focus.";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 Mar 2026 09:29:53 +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:25;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:71:"Gutenberg Times: Schedule of WordCamp Asia Birgit’s selected sessions";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=44484";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/schedule-of-wordcamp-asia-birgits-selected-sessions/";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:6541:"<p class="wp-block-paragraph">This year&#8217;s WordCamp Asia just published the first version of its <a href="https://asia.wordcamp.org/2026/schedule/">schedule with sessions and workshops</a>. Contributor Day also has a few workshop slots. If you registered for Contributor Day you are looking at three days of learning and discussions.</p>



<p class="wp-block-paragraph">Here is my personal list of talks and workshops, mostly about the block editor, themes or AI in WordPress. I will update the post with the video links after WordCamp Asia once the recordings are uploaded to WordPress TV. </p>



<p class="wp-block-paragraph">Livestreams are available on April 10 and 11 on the three session tracks, Foundation, Growth and Enterprise. Times are all local Indian Standard time (UTC +5.30).</p>



<p class="wp-block-paragraph"><strong>Updated March 2, 2026</strong>,</p>



<p class="wp-block-paragraph"><a href="https://asia.wordcamp.org/2026/schedule/">The schedule</a> has a few placeholder spots for </p>



<ul class="wp-block-list">
<li>Journalism and the Open Web </li>



<li>AI and WordPress </li>



<li>And quite few TBD for talks and workshop</li>
</ul>



<p class="wp-block-paragraph">The schedule for the Contributor Day hasn&#8217;t been finalized either. It&#8217;s unclear when my workshop <a href="https://asia.wordcamp.org/2026/session/building-a-block-theme-from-scratch/"><strong>Building a block theme from scratch</strong></a> will take place. There are three workshop slots reserved. We will have a <a href="https://asia.wordcamp.org/2026/wordpress-7-0-release-on-contributor-day/">WordPress 7.0 Release</a> ssession and Open-source Library spaces as well. </p>



<p class="wp-block-paragraph">The conference days also have six workshop slots that are still &#8220;TBA&#8221;. </p>



<p class="wp-block-paragraph">The program team is working on the final version of the schedule. Make sure to check back on weekly basis.  </p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<h2 class="wp-block-heading">Birgit&#8217;s selected sessions</h2>



<h3 class="wp-block-heading">April 10, 2026</h3>



<p class="wp-block-paragraph">After opening remarks and introduction of speakers the day begins with</p>



<p class="wp-block-paragraph">10 am <a href="https://asia.wordcamp.org/2026/session/fireside-chat/"><strong>Fireside Chat with Mary Hubbard</strong></a></p>



<p class="wp-block-paragraph">1:00 pm <a href="https://asia.wordcamp.org/2026/session/from-static-to-dynamic-mastering-the-interactivity-api/"><strong>From Static to Dynamic: Mastering the Interactivity API</strong></a> with Ryan Welcher</p>



<p class="wp-block-paragraph">2:50 pm <a href="https://asia.wordcamp.org/2026/session/lost-found-in-ai-wonderland-an-honest-journey-through-hype-headaches-and-real-wins/"><strong>Lost &amp; Found in AI Wonderland: An Honest Journey Through Hype, Headaches, and Real Wins</strong></a> with Nirav Mehta</p>



<p class="wp-block-paragraph">3:55 pm <a href="https://asia.wordcamp.org/2026/session/ten-times-the-value-why-automation-is-worth-the-investment-in-open-source/"><strong>Ten Times the Value: Why Automation Is Worth the Investment in Open Source</strong></a> with Jonathan Desrosiers</p>



<h3 class="wp-block-heading">April 11, 2026 </h3>



<p class="wp-block-paragraph">9:15 am  <strong><a href="https://asia.wordcamp.org/2026/session/wordpress-playground-ai-building-autonomous-testing-pipelines/">WordPress Playground + AI: Building Autonomous Testing Pipelines</a> </strong>with Fellyph Cintra</p>



<p class="wp-block-paragraph">11:15 <strong><a href="https://asia.wordcamp.org/2026/session/entity-first-optimization-how-to-make-wordpress-content-machine-readable/">Entity-First Optimization: How to Make WordPress Content Machine-Readable</a> </strong>with Adeline Dahal</p>



<p class="wp-block-paragraph">11:35 am: <strong><a href="https://asia.wordcamp.org/2026/session/from-chaos-to-clarity-scaling-teams-with-block-theme-standards/">From Chaos to Clarity: Scaling Teams with Block Theme Standards</a></strong> with JC Palmes</p>



<p class="wp-block-paragraph">12:25 pm <a href="https://asia.wordcamp.org/2026/session/build-for-what-comes-next-how-enterprise-wordpress-is-powering-the-agentic-future/"><strong>Build for What Comes Next: How Enterprise WordPress Is Powering the Agentic Future</strong></a> with James Giroux</p>



<p class="wp-block-paragraph">3:00 pm Don&#8217;t miss: <a href="https://asia.wordcamp.org/2026/session/closing-keynote-wordpress-co-founder-matt-mullenweg/"><strong>Closing Keynote: WordPress Co-Founder Ma.tt Mullenweg</strong></a></p>



<h2 class="wp-block-heading">First time in Mumbai?</h2>



<p class="wp-block-paragraph">The communication team published some really cool posts about Mumbai and India, which is super helpful for anyone heading there for their first time.</p>



<div class="wp-block-columns has-light-background-background-color has-background is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h3 class="wp-block-heading">First-time WordCamper</h3>



<ul class="wp-block-list">
<li><a href="https://asia.wordcamp.org/2026/how-to-make-the-most-of-your-first-wordcamp/">How to Make the Most of Your First WordCamp Asia?</a></li>



<li><a href="https://asia.wordcamp.org/2026/about-the-venue/">Venue</a></li>



<li><a href="https://asia.wordcamp.org/2026/how-to-prepare-for-contributor-day/">How to Prepare for Contributor Day?</a></li>



<li><a href="https://asia.wordcamp.org/2026/5-career-conversations/">5 Career Conversations You Will Have at WCAsia26</a></li>
</ul>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h3 class="wp-block-heading">Food, Culture and Travel</h3>



<ul class="wp-block-list has-small-font-size">
<li><a href="https://asia.wordcamp.org/2026/food-walk/">Your Next Bite Is Here</a></li>



<li><a href="https://asia.wordcamp.org/2026/sim-cards-internet-and-upi-payments-made-simple/">SIM Cards, Internet, and UPI Payments Made Simple</a></li>



<li><a href="https://asia.wordcamp.org/2026/namaste-india-guide-to-indian-culture/">Namaste India! Guide to Indian Culture</a></li>



<li><a href="https://asia.wordcamp.org/2026/mumbai-on-a-plate/">Mumbai on a Plate</a></li>



<li><a href="https://asia.wordcamp.org/2026/things-to-do-in-mumbai/">Things to do in Mumbai</a></li>
</ul>
</div>
</div>";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:"Mon, 02 Mar 2026 12:01: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: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:26;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:66:"Open Channels FM: Open Channels New YouTube Channel and Newsletter";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=1650400";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:73:"https://openchannels.fm/open-channels-new-youtube-channel-and-newsletter/";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:80:"Host Bob Dunn announces  a new YouTube channel and a new newsletter and roundup.";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:"Mon, 02 Mar 2026 11:45: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:"";}}}}}i:27;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:70:"Open Channels FM: Omnisend Continues Their Support of Open Channels FM";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=1650182";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:77:"https://openchannels.fm/omnisend-continues-their-support-of-open-channels-fm/";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:141:"Omnisend continues to sponsor us, offering a powerful marketing platform for ecommerce. They provide easy migration support and so much more.";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:"Mon, 02 Mar 2026 09:46:50 +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:28;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:18:"Matt: Sunday Links";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=151324";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:35:"https://ma.tt/2026/03/sunday-links/";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:2313:"<ul class="wp-block-list">
<li><a href="https://transparency.automattic.com/2026/02/23/transparency-report-update-july-december-2025/">Automattic&#8217;s new transparency report is up</a>, and <a href="https://transparency.automattic.com/wordpress-dot-com/intellectual-property/intellectual-property-2025-jul-1-dec-31/">TorrentFreak covers how AI-generated notices have been flooding the system</a>. We don&#8217;t talk about it much, but for two decades now Automattic has been a fierce fighter for free speech on behalf of our customers and journalists. Our legal team has gotten a big upgrade in the past 15 months so look for more in this area.</li>



<li>WordPress 7.0 is shaping up to be a great release, and we&#8217;re moving fast! As someone noted, after <a href="https://make.wordpress.org/core/2026/02/18/wordpress-7-0-product-review-meeting-with-matt/">the product review</a>, <a href="https://x.com/SteveJBurge/status/2027152882445775168">we got the new Connectors setting screen in beta 2 at AI speed</a>.</li>



<li>Yesterday, <a href="https://tinkertendo.com/">TinkerTendo</a> hosted a fun <a href="https://luma.com/a6t92ohv">BioArena Hackathon</a>. <a href="https://cloudup.com/cYjePWS3QRx">From the pics, it looked like a great event</a>.</li>



<li>Kudos to WP community member Matt Medeiros, <a href="https://www.youtube.com/watch?v=zcKBDzrER3g">who used AI to spin up a quick webapp to help his community</a> track which streets had been plowed after that crazy snowstorm. Making local communities better is definitely part of the WordPresser ethos.</li>



<li><a href="https://claude.com/import-memory">Claude&#8217;s hack to import your memory</a> is an amazing application of what I hoped for with the <a href="https://wordpress.org/data-liberation/">Data Liberation push on WordPress.org</a>. However, it&#8217;s just re-arranging deck chairs on the Titanic; what you really want is for that memory to be personal to you and work with every model, which is what <a href="https://github.com/openclaw/openclaw">OpenClaw</a> and its many claw descendents, like <a href="https://github.com/zeroclaw-labs/zeroclaw">ZeroClaw</a>, do for you. It reminds me of <a href="https://tantek.com/presentations/2005/01/attentionxml.html">Tantek&#8217;s 2005 Attention.xml presentation</a>.</li>
</ul>";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 18:55:49 +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:29;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:83:"Gutenberg Times: Gutenberg Changelog #127 – WordPress 7.0 Beta and Gutenberg 22.6";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:53:"https://gutenbergtimes.com/?post_type=podcast&p=44570";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:78:"https://gutenbergtimes.com/podcast/gutenberg-changelog-127-wordpress-7-0-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:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:68978:"<p class="wp-block-paragraph">In Episode 127 of the GT Changelog podcast, Birgit Pauli-Haack and Jessica Lyschik dive deep into the upcoming release of WordPress 7.0, focusing on the features arriving with beta 2 and their impact on users and developers. They begin by emphasizing the importance of testing betas, especially for plugin and theme creators, highlighting how early testing helps prevent compatibility issues at launch. A walk-through of the beta testing process, tools like the beta tester plugin, and considerations for time zone differences during the official release (scheduled for April 9th) are discussed.</p>



<p class="wp-block-paragraph">The majority of their conversation centers around the headline features of WordPress 7.0. Real-time collaboration steals the spotlight, now allowing multiple users to edit posts and pages simultaneously—streamlining workflows and minimizing version conflicts. The episode also celebrates the introduction of visual revisions within the block editor, making change tracking clearer and more intuitive. Other notable updates include responsive block visibility controls, enhanced navigation and submenu options, improved lightbox support for gallery blocks, and the long-awaited introduction of the icon and breadcrumbs blocks.</p>



<p class="wp-block-paragraph">Birgit Pauli-Haack and Jessica Lyschik also discuss the new content-only pattern editing feature, revamped backend color schemes, and incremental improvements for both end-users and developers, such as the font library UI and under-the-hood advances. They note that some planned features, like the playlist and tabs blocks, did not make the cut for 7.0 but might arrive in future releases. The episode ends with practical advice: test your sites early and stay informed to ensure a seamless transition to WordPress 7.0.</p>



<p class="wp-block-paragraph"><a href="https://gutenbergtimes.com/podcast/gutenberg-changelog-127-wordpress-7-0-beta/">Show Notes</a> / <a href="https://gutenbergtimes.com/podcast/gutenberg-changelog-127-wordpress-7-0-beta/">Transcript</a></p>



<ul class="wp-block-list">
<li>Editor: <a href="https://www.linkedin.com/in/sandy-reed/">Sandy Reed</a></li>



<li>Logo: <a href="https://markuraine.com/">Mark Uraine</a></li>



<li>Production: <a href="https://icodeforapurpose.com">Birgit Pauli-Haack</a></li>
</ul>



<p class="has-larger-font-size wp-block-paragraph" id="shownotes"><strong>Show Notes</strong></p>



<h2 class="wp-block-heading">Special guest: Jessica Lyschik</h2>



<ul class="wp-block-list">
<li><a href="https://x.com/jessicalyschik">https://x.com/jessicalyschik</a></li>



<li><a href="https://www.youtube.com/@jessicalyschik">https://www.youtube.com/@jessicalyschik</a></li>



<li><a href="https://www.youtube.com/redirect?event=channel_description&amp;redir_token=QUFFLUhqa2tsT25ETnVSM20xS3ZoNDhpTkhwUVhlM2J0UXxBQ3Jtc0tsY2NmeEdxT01xdEMzMlR4WWxjYll2bGoyMXlSZVZFZm82alVtS3hpdW01Y3U1R3U0RGVBT19lbEhQeXNYeTcxZ0EwaVg4YUlYV2ZGR085ZXA1U0pYYzdSelRnejR5cDBHUm1pZDRpQi1fdHRPbkw3UQ&amp;q=https%3A%2F%2Fprofiles.wordpress.org%2Fluminuu">profiles.wordpress.org/luminuu</a></li>



<li><a href="https://www.youtube.com/playlist?list=PLtf0_A0KILu5lspB8oXQjinPhIe87s3nJ">Greyd Conversations, to be found on YouTube</a></li>
</ul>



<h2 class="wp-block-heading">WordPress 7.0</h2>



<ul class="wp-block-list">
<li><a href="https://make.wordpress.org/test/2026/02/20/help-test-wordpress-7-0/">Help Test WordPress 7.0</a></li>



<li><a href="https://make.wordpress.org/core/2026/02/24/iframed-editor-changes-in-wordpress-7-0/">Iframed Editor Changes in WordPress 7.0</a></li>



<li><a href="https://make.wordpress.org/core/2025/12/11/planning-for-7-0/#comment-48392" id="https://make.wordpress.org/core/2025/12/11/planning-for-7-0/#comment-48392" type="link">What made it into WordPress 7.0</a> </li>



<li><a href="https://make.wordpress.org/core/2026/02/25/whats-new-in-gutenberg-22-6-25-february/">What’s new in Gutenberg 22.6? (25 February)</a></li>
</ul>



<p class="has-large-font-size wp-block-paragraph">Stay in Touch</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<ul class="wp-block-list">
<li>Did you like this episode? <a href="https://lovethepodcast.com/gutenbergchangelog"><strong>Please write us a review </strong></a></li>



<li>Ping us on X (formerly known as Twitter) or send DMs with questions. <a href="https://twitter.com/gutenbergtimes">@gutenbergtimes </a>and <a href="https://twitter.com/bph">@bph</a>.</li>



<li><em>If you have questions or suggestions, or news you want us to include, send them to <a href="mailto:changelog@gutenbergtimes.com">changelog@gutenbergtimes.com</a>. </em></li>



<li><em>Please write us a review on iTunes! <a href="https://gutenbergtimes.com/itunes/">(Click here to learn how)</a></em></li>
</ul>
</div></div>



<p class="has-large-font-size wp-block-paragraph" id="transcript"><strong>Transcript</strong></p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack:</em> So welcome to our 127th episode of the Gutenberg Changelog podcast. In today&#8217;s episode, we will talk mostly about WordPress 7.0 because Beta 2 has been out and a little bit about Gutenberg 22.6, but most of what&#8217;s in that release is actually coming to WordPress 7.0. </p>



<p class="wp-block-paragraph">I&#8217;m your host, Birgit Pauli-Haack, curator at the Gutenberg Times and a full-time core contributor for the WordPress open source project, sponsored by Automattic. And today, Jessica Lyschik is with me on the show again, and we will tackle most of the WordPress 7.0 updates. Jessica is a core contributor to WordPress, default theme co-lead for Twenty Twenty-Four, speed building champion Twenty Twenty-Five, and works as a senior developer for Grade, a company building WordPress products for agencies and large companies. And Jessica is a regular host on the Grade Conversations to be found on YouTube. How are you today, Jessica? Welcome to the show again.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik:</em> Thanks for having me. I&#8217;m good. I&#8217;m good. I mean, the sun is shining outside, so I&#8217;m expecting hopefully a nice workday today and then catch some sun rays because it&#8217;s been a long winter here. Yeah, it&#8217;s been very cold, very moody, cloudy. So the sun is very nice. Having some sunshine is a very nice change.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack:</em> Yeah, I was walking the streets of Munich the other day and I saw the little plants kind of coming out, crocuses and whites and yellow. So spring is coming.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik: </em>Definitely, definitely.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack: </em>And it&#8217;s— I actually saw a sunrise at 6:30 in the morning. So the days are getting longer too, which is part of my mood changing thing. Yeah. </p>



<h3 class="wp-block-heading">What’s Released &#8211; WordPress 7.0</h3>



<p class="wp-block-paragraph">So WordPress 7.0 comes in big steps and WordPress 7.0 Beta 2 was released just yesterday and we&#8217;re recording this on February 27th. So let&#8217;s go through the list of things that actually made it into 7.0. I&#8217;m also sharing in the show notes, not only the list, but also a link to the help test WordPress 7.0 that the test team has put together with some nice instructions and videos on how things are supposed to work. And you have to— can go in and test if they&#8217;re actually working like that or if something else is breaking. And you ask dear listeners to help do that. I also always kind of say, the best way to learn what&#8217;s in WordPress 7.0 is to heed to the call of testing, because that&#8217;s the first step to learn what&#8217;s working for you, what works with your sites and with your plugins. And it will be really helpful to know this before the release comes out. So if you just follow the instructions on how to present feedback and bug reports. Your team has started testing. </p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: When you have a plugin and you do not look at the Beta versions or release candidates and suddenly the release date rolls around and you&#8217;re not prepared and clients update their websites and then they say, hey, my site&#8217;s broken, then you&#8217;re in trouble. So avoid that as best as possible. That&#8217;s why I&#8217;m glad that we have Beta phase and release candidate phase so we can like really have a closer look. And it&#8217;s so easy with the Beta tester plugin. To be honest, that&#8217;s still the one way I&#8217;m using it, just installing the plugin. I configure the default configuration a little bit differently only to show me Beta and release candidates versions. And then it&#8217;s just hit update and go for it with whatever installation you have at the moment. So that&#8217;s actually, I find this to be one of the easiest ways without needing to have big technical knowledge about that. Of course there&#8217;s WP CLI, there&#8217;s many other ways you can achieve that, but for me, this is probably the easiest and can be thrown on any installation, local or online, probably not live sites, but any staging or testing environment that you have.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So exactly. And it&#8217;s a good point. Don&#8217;t test this on a live site.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah. Things can break. I mean, that&#8217;s why it&#8217;s called a Beta version or release candidate. Things are supposed to break. I spotted an issue this morning with something, not a big issue, but it is an issue. So we have to look into this, but we still have time. How long are we away? 6 weeks, I think about 6 weeks.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So yeah, April 9th is the final release date. So we are a little bit 5 weeks more than 6 weeks.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: And it will be, I just saw the note, will be released during Contributor Day at WordCamp Asia. So some of the release squad members will be in Mumbai to hit the big button. But of course, it&#8217;s all remotely and you can do it from anywhere. So it doesn&#8217;t really matter where the release squad is. The only thing that might screw it a little bit, skew it, not screw it, skew it a little bit is the time difference between where the other release squad members are and the ones in Mumbai. But for Europe, it&#8217;s a 3.5-hour time difference. So it&#8217;s not that big of a deal. You just need to organize it.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, usually they are fast in Europe, their releases are in the evening. So something around 7 PM, 8 PM sometime. It depends on when the dates are announced and the times. So it will be a bit earlier for us in the day, but still like afternoon-ish. So not in the middle of the night. So, but of course, if you move further to US time zones, like East Coast, West Coast is particularly early for them, I guess. If it&#8217;s fun, it could be like early morning for them.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, could be in the middle of the night.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Oh no, no, we have to, we have to think backwards. It will be like, I don&#8217;t know, but is it like in the afternoon on the 9th? Do you know more details about that?</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: I was looking for the release party. Post, but I haven&#8217;t seen it.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I mean, there&#8217;s an overview post somewhere.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. I remember that. Yeah. On the Make blog. Definitely. I&#8217;m just looking at it when the release party schedule is.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I&#8217;ll see if, uh, there&#8217;s only a date so far on the, on the overview.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. Beta release was about 3 PM UTC. So that&#8217;s 4 o&#8217;clock in the afternoon in Europe. -9, that&#8217;s about 7 o&#8217;clock in the morning.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: It&#8217;s early morning. Yeah.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: In Pacific time. Yeah. So about that time. Yeah. I&#8217;ll get a better look at that when we get closer to see when they actually schedule the release parties. But it&#8217;s always great fun to be in the core channel to kind of see it coming together.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. So that&#8217;s about the process. April 9th, we mentioned it, is the release. We have release candidate. So Beta is the feature freeze. So after that, only bug fixes are going to be merged into core. Release candidate 1 is on March 19th, and that is considered a string freeze. There will be release candidate 1, 2, and 3, and only things that are— don&#8217;t have a string. Well, the reason why they do string freeze is because then the translator can start translating the version or the new strings into their respective languages. And to give them about 3 weeks to 4 weeks is a good number. But when you don&#8217;t do string freeze, then they have to start all over again when the new version comes out.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: So many things change. I mean, things will change. Maybe there&#8217;s always the thing that a bug appears and maybe strings have to be changed. So there&#8217;s always some moving parts, but it is way much reduced if you would just, if you&#8217;re stopping to actually make massive changes so people can catch up with things and then when it&#8217;s just a few more strings that need to be adjusted or retranslated, then it&#8217;s not like 500 new strings, but only 5 the day before the release. So yeah, it makes total sense. I mean, it has worked great over the past many years that we&#8217;ve been doing this like that.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Absolutely. Yeah. So now with all the talk about the release, what&#8217;s actually going to be in WordPress 7.0? And there have been quite a few. So there was a roadmap and then there were these tracking issues that are on the Gutenberg repo. So there is not a whole lot of mystery behind what&#8217;s coming, but we definitely should talk through that. And one of the biggest features is the real-time collaboration. So now the message that somebody else is editing your post will go away, or it will still be there, but you still can access the post and then you can see who else is working on the post. And you can have more than one person in the post or in the page to actually edit that and not get into trouble with losing content. So that&#8217;s a feature that has been a long time coming. And it&#8217;s also something that has been tested already in the enterprise section for, I think, a little over a year or half a year since August last year. So, and now it comes to WordPress core. So it&#8217;s really cool. I&#8217;ve, I like it.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I have not seen it in action yet because I mostly work on things where it&#8217;s only me and rarely anyone else, but I&#8217;ve seen the notes feature. This is like the kind of site quest, if you will, which has been already around since 6.9, if I remember correctly.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Right.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: But yeah, I&#8217;ve just opened the GitHub issue around it that is linked in the testing post. And it&#8217;s quite interesting. It will be interesting to see. I think we have to spin up a session with my colleagues and all go into one page and see what it looks like, how it feels like.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So yeah, there are some avatar bubbles showing up on multiple places. Yeah, it&#8217;s kind of in the headline and also when they&#8217;re both there. And also if they&#8217;re the notes and the real-time collaboration are kind of merging now. So the same avatars that show up in the notes will also show up in the, in as where the cursor is. So it&#8217;s kind of really interesting to see. I think it&#8217;s not only for enterprise, it&#8217;s also for if you have a blog site, you probably also have a designer or a person that manages your media. You can all be in the post and kind of do things just right before publishing and you don&#8217;t have to coordinate, get out of the post, get into the post. What do we change? Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: It will save things. Even if you have a team of two, it&#8217;s still an interesting feature. And I&#8217;m really hoping as working on the WordPress developer blog that we kind of cut out the step where we do everything in Google Docs, do all the comments there. And then once everybody kind of has their word and say to move it and that we actually start creating the post in the blog and then just do the reviews from there. The only caveat is that to review and help, you have to be a member of the blog. You have to be an editor of the blog. But I think everybody who&#8217;s writing and reviewing either will be on the blog or will in the future or already has written a blog post. So they should be able to do it. </p>



<p class="wp-block-paragraph">Right now it&#8217;s only me doing it. Yeah, I publish in January and in February a post and it&#8217;s only me doing it. But it&#8217;s interesting to do this via notes. Yeah, because you get emails and all of that. Yeah, already. So it&#8217;s a good feature. The real-time collaboration, I haven&#8217;t done anything on that yet because it just came out. Yeah. So it&#8217;s not yet implemented. Anything else about real-time collaboration? Oh yeah. At the moment, and that&#8217;s with Beta 2, it&#8217;s a setting that you can opt into. So you have to go to settings. Writing, and I think the fourth from the top is the enable collaborative editing or real-time collaboration. Otherwise it wouldn&#8217;t work. I think for later versions it will be an opt-out, but it will be on the same space.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Where do you put this? I&#8217;ve just opened up the preferences. I have a test site which I spin this one up.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: But you go to the admin settings, the normal settings for writing.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Ah, the normal setting. Okay. I was in the editor, so that&#8217;s probably why I&#8217;m not seeing it there.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. It&#8217;s not in the preferences. It&#8217;s in the admin dashboard and then settings and then writing.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Writing. Yeah. Oh yeah. There it is. Enable real-time collaboration. Let&#8217;s just try this out, how it looks like.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I mean, I&#8217;m curious to see.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: You don&#8217;t see it when, when you are alone, all alone.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Well, I could create a second user and then just—</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, and switch over in the second browser.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Switch over in another browser or another incognito tab.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: I think it could be in a different browser window. I tested it with Firefox and Google just to kind of not get into the way of each other.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, you need a different browser tab in the same browser. It&#8217;s not going to work because then you&#8217;re logged in with the same user, so you need to be logged in with two different users in order to make that happen.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: So it&#8217;s either an incognito window in the same browser or a different browser.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack: </em>Basically, you log in as admin, but you can switch the user over. There&#8217;s a user switching plugin. That&#8217;s what I&#8217;m using by John Blackburn. He has a very easy user switching plugin, and I&#8217;ll share the plugin link in the show notes. But then you can switch over to a different user. And then because I uploaded two avatars, so I can see the difference and all that. In the same note, another big feature, it&#8217;s not a new feature, but it&#8217;s a total revamp, is the visual revisions.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Oh yeah. Yeah. This is a big change. I&#8217;ve, I&#8217;ve tested this out before we started because I was really curious to see and Yeah, this is no more text walls and complicated HTML tags to understand and everything like before. I mean, I think the old one does have an advantage for like someone like me who&#8217;s used to looking at code all day and I can get my way around it. But I guess for many people who are not this, do not have an eye for this, this is like a massive wall of text and some green and some red stuff flying around somewhere. So I found it a very interesting way to create the revisions, to visualize the changes. I mean, I only made minimal changes to a page, like adding a paragraph, removing, removing a sentence and whatnot. But yeah, it&#8217;s actually kind of interesting.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So one of the major features is it&#8217;s in the editor. You don&#8217;t have to switch screens to see your revisions. That&#8217;s also a plus. It knows what blocks are. So every change is filled in red and green. Red when you remove something, green when you add something. And it has a little banner on the right-hand side to outline.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: To indicate where on the page about where. I mean, I only had a short page, so it wasn&#8217;t that big of a deal, but it kind of, I think it really showed where it was. Like if there&#8217;s a specific paragraph you&#8217;re looking at, then let me just open up this.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, it&#8217;s really nice. Ella did a fabulous job on that.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: And there&#8217;s also not just red and green, but there&#8217;s also yellow if something inside a paragraph changes that is not like completely adding or I think I know for this one, I added something inside an existing block. So the block itself is outlined in yellow. Hey, something changed here. And then the part where I added the words that is highlighted in green. So it&#8217;s like also kind of detailed and not just red and green like before, but you have also yellow, which indicates some sort of change, maybe with either an additional removal.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. Yeah. It&#8217;s really nice. It&#8217;s very visual and staying in the block editor is such a relief. You don&#8217;t have to go back and forth and you have on the top of the screen. You also have the different versions of things. So you can, it&#8217;s a slider with the dates attached. So you can kind of, and the publish button changes to a restore button. So you can select the version that you wanna restore here.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: And you can also exit there. So it&#8217;s like you do not have the editing ability anymore. So the entire editing ability is stripped from that page. And instead you have either restore or exit. So I think this makes it distraction-free. So it&#8217;s also good because then people will not start editing inside that. It&#8217;s just a visual representation of things that have changed.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Exactly. Yeah. Good. And then do you want to take the next feature or?</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I have not. I have seen this. So I was curious to see because I saw something else down in the Gutenberg 22.6 Release notes, if you will. But I saw that when you&#8217;re trying to hide any block, you can now hide them specifically either on desktop, tablet, or mobile. So it&#8217;s not just on or off, but you can now, in WordPress core without any extra plugins, say this either show only on desktop, show only on tablet, show only on mobile. The little downside here is that if I&#8217;m not mistaken, you can still not change the ranges of the viewports. You can?</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: No, no, that&#8217;s still hard-coded. </p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Exactly. So you&#8217;re still tied to the default states of what is desktop, what is tablet, what is mobile. So that is the little downside, if I say so, because oftentimes, at least in my experience, people want to really hone in. I want mobile to go to up until this specific size and tablet to be in this range. And they often differ from what WordPress offers by default. So that&#8217;s why many plugins have been popular in the past and many different integrations are there. So I think it&#8217;s important to mention that it does work. I guess it does work because otherwise it wouldn&#8217;t be in the Beta version, but it is restricted to what core says about the viewports.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So yeah, yeah. And it&#8217;s a, it&#8217;s a range. It&#8217;s mobile starts at 480 and desktop starts at 768 and in between is the tablet. So I have found that I cannot make my browser window small enough to see the mobile version, but that&#8217;s, I think, a setting on my desktop. I&#8217;m not quite sure, but if you use the developer tools, you can see it or the previews, of course. Yeah, the preview inside the block editor will show you yes or no. With 20.6, they also added a feature for the list view where you see the eye for visible or invisible. It also has a little tooltip saying, okay, it&#8217;s visible on desktop or it&#8217;s visible on mobile and hidden on tablet and these kind of things. So there&#8217;s a little bit more visual support for figuring out why is that block not working. Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, that&#8217;s true. Yeah, it seems to work pretty well. So I just played around with it and put a paragraph to hide on desktop. It does no longer show at desktop, but once I make the browser smaller, it appears again. So seems to be working pretty well.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. Yeah, the next feature is, well, it&#8217;s kind of a set of features for the navigation block. That has been coming in. There are a few things that are making navigation easier. One is that you now have control for your hamburger menus, your mobile hamburger menus, or if you want them on desktop too. Yeah. So you can now create different overlays for your navigation. And 7.0 will come with a few patterns. So you don&#8217;t have to do the whole creative work. You can just kind of say, okay, I will use this one and this one. It&#8217;s on the basis of template parts, so it can be reused on other places and templates if you have different overlays. And so I really like that.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, it gives more customization that wasn&#8217;t there before because you just only had a mobile version of the navigation you created. And I know from our experience at Grade that people like to switch up things in this mobile view because they want to add a button or add information or whatever, or change the menu items by default to have less menu items than they would have on desktop. So this was only possible with other tools, and now it&#8217;s in core as well. I also played around with it a bit, just adding random blocks to it. So it&#8217;s not just limited to specifically a navigation, but can add anything you need into that because it&#8217;s a template part, as you said.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So yeah, right.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So it actually is then also possible to create mega menus, which is also something that a lot of people wanted to do with those template parts.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Well, I haven&#8217;t played with, played it that far so far. I haven&#8217;t looked at the settings in detail, but. I guess I have to test this out.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. Well, there are a lot of people who are going to be testing things and I wish they would share a little bit more about their successes or, well, they never really talk about their successes, mostly about, oh, this is a bug that needs to change kind of thing. But it would be really cool to see some other implementations. Yeah. </p>



<p class="wp-block-paragraph">They also revamped the submenus a little bit with handling that. So it now defaults to open or closed states, and you have a place to put the close button for that. Yeah, the patterns we talked— the overlay patterns is kind of with a black background, with an orange background, with a side info as well. So it&#8217;s pretty cool. Oh yeah, and what also changed in the navigation is that you can now— well, you always could add new pages when you create a navigation bar, create a new page, but now you can, you have a toggle switch that you can actually publish it. So the create a page is then available in your pages, but the menu works. And they did also a fantastic job making the links in the menu a little bit more smart. Yeah. So when you change the title or the slug of a page, it now reflects in the menu where it&#8217;s actually used. So that is, was also a big big pain point that you always had to think about, oh, I changed the slug of my page or my post. Now I need to update two menu items because I have a header, a footer, a header menu and a footer menu. And yeah, it&#8217;s all kind of a, it was a little bit.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Or another five menus in different places that you all need to update and you forgot about them. So yeah, that&#8217;s actually very nice. I just opened up also the, when you have a navigation block focused and go select one of the pages that is in there. It now shows a little, I&#8217;m not sure how long this has been there, but there&#8217;s a box popping out saying the title of the link and then it links to this specific page, which is a page. So the post type is shown and also what status it has. So it is published, is it draft or whatever. So there&#8217;s, I think if I click on that, yeah, I can now go directly into editing and I can go back. Oh, this is fancy.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. Yeah. That&#8217;s also fairly new. I think it was in 22. So it&#8217;s between 6.9 and 7.0. It&#8217;s a new feature. It&#8217;s a new feature.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah. I think this will definitely enhance the whole working with navigation, with navigation in general, because to be honest, it has been a pain to work with navigation. So I&#8217;m glad to see some improvements here. They&#8217;re looking really good. Oh, you can even add more stuff, description and real attribute. Nice. That&#8217;s looking good. I like that. I honestly like that.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Awesome. Very good, Birgit. What&#8217;s next on the list?</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Next on the list is gallery block add lightbox support.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Ooh, that&#8217;s my personal favorite. Yeah. Well, lightbox support was there before, right?</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I was just saying that the lightbox has been around for a while. But yeah, not only for images, right? Not for the gallery.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: It was for the gallery, but it only added the click to open big. It wasn&#8217;t a real lightbox. It kind of— you needed to close it and then look at the next picture and open it up again. And now you actually have navigation with next and previous, so you could actually have a really nice gallery viewing experience. And I was waiting for this for quite a while. Not that I didn&#8217;t find any plugins that do that, but yeah, to have it in the browser.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I think that&#8217;s a very nice feature because it reduces the need for a plugin if the functionality is enough for the user. I mean, there will always be plugins that enhance this functionality or create another variation of a lightbox with even more features. There&#8217;s always like that, but it&#8217;s, it&#8217;s good to have that because it&#8217;s just, I&#8217;ve never really worked so much with galleries in the past, but probably I will do more because now you can continue switching to the other images without even having to close that. So I think that&#8217;s really a good quality of life improvement.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Absolutely. Absolutely. Yeah. Yeah. Those sites that have big visual assets on there, like pictures and they have portfolios or they want to show a decoration or be it food. Yeah. Each one of the sites. And what I like about it is also that you can swipe it on mobile. You don&#8217;t need to—</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Oh, nice.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: It&#8217;s not animated, but it&#8217;s definitely there. </p>



<p class="wp-block-paragraph">So the thing that moved to the next version in WordPress is showing the captions somewhere on that. Yeah. Right now it&#8217;s just a picture and the navigation, but that&#8217;s a huge step forward. What also is new for the gallery block and many blocks is that the sidebar where the settings and the styles are now also have a content tab where you can see, for instance, all the pictures in a list and then just open it up and add an alt text to it, for instance. So you can have an easier way to update the content of things. You&#8217;ll see that also on other blocks that are kind of multi-blocks, like the social icons or the buttons or the list, that you get now a little content section on the right-hand side. And you don&#8217;t have to, for that, open up the list view. It&#8217;s a little bit of duplication, but I think it&#8217;s a different mindset when you just want to edit that particular group of blocks and see it in one view.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, but you can, I just created a gallery on my test site and picked some of the pictures. And when you are in this content section and you click on an image, you are put to the specific image block within the gallery. So I don&#8217;t think this is too much of a crazy thing. Yeah, you are right about the duplication that if you are on the gallery block itself, you can add something. That&#8217;s probably easier on the right side now to add something. But you also get the context options that you would have in the list view. So this is the duplicated part. But to be honest, I mean, I work a lot with the list view. I always— the first thing I do when I come into a brand new editor is go to preferences and say, list view, always show list view. Because I still don&#8217;t get why this is not the default. But yeah, for people who may be not using the list view too much, I think this is a pretty nice way to work with the gallery block. Yeah.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: And there are also people who are overwhelmed by the list view. Yeah. So kind of, they don&#8217;t.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, I can understand. But yeah, I&#8217;m a big fan of the list view.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So yeah, there will be two new blocks. There&#8217;s a breadcrumbs block and the icon block. And the icon block just made it out of experimental with 22.6. </p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I think this was a very close call, right? I just saw Ryan&#8217;s post the other day. It&#8217;s like, we made it. And I was like, oh, that&#8217;s close. Isn&#8217;t Beta 1 already out yet?</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, no, it was, uh, actually in Beta, but the discussion was about— not about the icon block per se, but it only has limited functionality. When you— for a designer, you cannot register your own icon collection.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: That would have been my question. Yes.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: And that has been the API that was too close to be comfortable in creating a new API at the last minute, so to speak. And they said that needs to be similar for a moment. And that was pushed in 7.1, but you still can use the icons that are in the block editor already.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: It mostly, it will be arrows or the chevrons or maybe something like pencil or image or home. Yeah. The default ones are there. So it&#8217;s, I would say for, for the, for the beginning, it&#8217;s fine. And I think for the extensibility, it&#8217;s definitely needed that we have an API to add any kind of icon that we want or that the user needs because people work with the most different things. I think the same, we had the same thing with the social icons block, if I remember correctly, like you had a fixed set, but then later on. It was added the ability that you can upload your own icons, if I&#8217;m correct.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: So I would very much look forward to potentially in 7.1 that we get the ability to extend this icon library to whatever icons we need, have an upload.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. Yeah. I think designers really work, love working with icons and when they design sites, it would be really helpful to actually have the branded icons, whatever they have to be uploaded. But yeah, in the release post of 22.6, Bernie Reiter, who was a release lead, he uploaded an implementation which makes perfect sense, which is the location for a map, kind of, yeah, what&#8217;s the address, what&#8217;s the link for Google Maps, and what are the ratings, so to speak. And you can all do that with the icon set that&#8217;s already in the block editor. It was worth it, even with not registering the API, to put that into a core. And it&#8217;s still helpful.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I mean, the icon block has been long awaited, so it was about time.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. And the other block is the breadcrumbs block, which I&#8217;m really happy that it made it because that&#8217;s a very versatile block. It has a lot of smartness behind it where you can put it on any page and then it figures out what are the breadcrumbs to get to that page and also to get back again. So you could do categories, archives, subpages, parent pages, child pages. It&#8217;s all picking up those things. And it&#8217;s a really nice addition for larger websites to have a user find their way back or orient themselves on the website.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, I think there&#8217;s also enough settings to work with it. So it&#8217;s looking good. I just added it to my test page. You have all the color, typography, dimensions, border. So there&#8217;s, there&#8217;s something to do with it. I would say.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, you can definitely work with that. So then the existing blocks obviously also get some improvements. Do you have any favorite of those? I do. So the paragraph has two new things. One is the indentation. So you can make a paragraph or on a page manage the indentation of the first line in a paragraph. There are two versions of it that you need to handle in the settings page. One is to have the first paragraph not indented, but all the subsequent paragraphs. And then if you toggle that off, then also the first paragraph is indented. And that is that it&#8217;s in the English-speaking countries, the first paragraph is not indented. But in the right-to-left and other countries, even if they are left-to-right, they always want all the paragraphs indented. So it&#8217;s a different standard for publications in different countries. So they needed to take care of that. But the default is to have the first paragraph not indented and all the subsequent paragraphs are.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Interesting.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: It&#8217;s like I usually do not come around that the need for this. But obviously if there&#8217;s a need for it.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. A lot of publications have that as standard, especially those that are in the news and long-form content publications like essays and that kind of thing.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Apparently I do not read those, so I do not have any experience with that.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Or you just haven&#8217;t noticed it because it feels natural.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: But probably, yeah, yeah, I maybe, maybe that&#8217;s also the case. I don&#8217;t know. Yeah, but it&#8217;s interesting to see that. I was wondering, didn&#8217;t we have something like this before, or was it something else, or I&#8217;m mixing this up with something? I don&#8217;t know.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. And the second formatting part for paragraph block is that automatic text columns. So you can have a larger paragraph and say, okay, but I need this into a smaller space, but I have multiple columns. And that also works very well. That was actually a plugin from the Block Editor Learn program. There was one course that actually created that kind of columns. So I&#8217;m glad that it made it to core because I really found it nice to have that possible. It automatically creates those columns. You can say 2 columns or 3 columns, and it&#8217;s really nice. You need to enable it through the typography, the 3-dot menu. </p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I was just about to say, I&#8217;m not seeing the setting. Where is it? Ah, here it is. Columns.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, yeah, columns. And also the indentation. And that&#8217;s also where you&#8217;ll find the fit the text into that. So there are typography changes, but right now only, I think, available for the paragraph block.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, it made sense to have moved to the tools panel to get a bit more in the technical side, because if I&#8217;m looking now at the typography settings that are available, but this list is like endless. Yeah, it&#8217;s getting endless. So having this to be hidden by default and you can, if you need the to change something, you edit. That&#8217;s something, yeah, definitely to not clutter the sidebar too much.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah. Yeah. It&#8217;s a good call to always look at the three dots in the menu to see, okay, what other options do I have available there? Because they may not be visible just, and you look stupid like I did to find the columns.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: You look not that stupid.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, it&#8217;s just like, well, why, why I&#8217;m not seeing this? Where is this? Is this a setting somewhere? It&#8217;s like panicking on the inside on the podcast. I know it&#8217;s, it&#8217;s like day-to-day business.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So yeah, I&#8217;m all good. So what else is in the current block? There are so many things in there. So the font library has now its own menu item in the appearance menu. Yeah. Nothing else.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: So it&#8217;s available for any themes if I recall correctly.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So it&#8217;s not—</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: you can now do all the stuff. Yeah, it&#8217;s exactly the same like the modal. You just have it like as in the regular backend, basically. It&#8217;s been like extracted from the editor to be its own backend page.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: But it&#8217;s in the new style. I just realized that when switching between the default themes, we have the overview to switch the themes. It&#8217;s like still the we did get a little change in the backend. Maybe we can talk about that later. But when you are on themes, you have still this dark, not dark, but lighter gray, very light gray background. And it&#8217;s no rounded corners. And when you go into fonts, you have this more site editor-like white background and rounded corners around. I just realized that there&#8217;s this kind of difference.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, I think that the team really wanted to do the data views. Use components from the data views for these new pages. And it will also be, and I just saw that for the Beta 2, that the connector for the AI client, that the connector page is under Settings. Yep. And the page also follows that data view.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Correct.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Design from what&#8217;s actually going to be the new admin design that&#8217;s not coming to 7.0, but some of the pages are, look a little bit different yet. Now.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: I just see, I just see these small details like instantly. So I was like, oh, this looks different.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. Yeah. It looks a little bit fresher. It&#8217;s my personal view on that.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: And I, I think the most visual change everyone will have is when they log in. So, or when they upgrade to 7.0 and they have not seen the Beta or release candidate that suddenly the default color scheme changes. In the backend. So I think this will be a bit of a woo moment for everyone who is not like looking into this before. So if I guess it&#8217;s a shout out to everyone who&#8217;s working with clients who do not see a Beta version before, be prepared because I&#8217;m sure there will be questions coming in from everyone like, my admin looks different. What happened?</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, the buttons all have a different color. Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah, the, the, I think the black is a bit darker if I remember correctly. And of course the blue shines very differently. Yeah.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So, but the color scheme was available before. It&#8217;s called the modern.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yes, correctly.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah. So it&#8217;s now just the default. I don&#8217;t think we have materialized any writing about that. So I kind of need to look at the core changes. Right now I&#8217;m just looking at the block changes, but yeah. Oh, and one thing that we should mention is the content-only pattern editing that&#8217;s now coming with 7.0. And that is a way, if you have a pattern that you put into a post or a page, that the edit the pattern is kind of reduced to edit the content of it. So you don&#8217;t have to change the pattern. Yeah. And I think that&#8217;s reducing a little bit the overwhelm. And the danger that people get into when they just use pattern, that they are kind of, you still can edit them, throw out the image and put a different block in there. You always can, you can change the headline, paragraph, whatever the pattern is designating as content 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>



<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>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Let me check.</p>



<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>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: No, no, in the block toolbar.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah.</p>



<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>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Or make the paragraph a list or something like that. There, those decisions.</p>



<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>



<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>



<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>



<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>



<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>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, I think the—</p>



<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>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Mm-hmm.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Uh, totally. That&#8217;s totally a cool thing.</p>



<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>



<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>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: So, yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>



<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>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>



<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>



<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>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: just to the design. Yeah.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Absolutely. Yeah. Yeah.</p>



<p class="wp-block-paragraph"><em>Birgit Pauli-Haack</em>: Yeah, exactly.</p>



<p class="wp-block-paragraph"><em>Jessica Lyschik</em>: Yeah.</p>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<h3 class="wp-block-heading">Gutenberg 22.5 RC</h3>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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:30;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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>



<p class="wp-block-paragraph">It&#8217;s been another interesting week in WordPress, Gutenberg and AI. </p>



<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>



<p class="wp-block-paragraph">And now, enjoy all the videos, blog posts and podcasts below.</p>



<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>





<h2 class="wp-block-heading" id="0-word-press-release-information">Developing Gutenberg and WordPress</h2>



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<ul class="wp-block-list">
<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>



<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>



<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>



<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>



<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>



<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>



<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>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<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">
<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>



<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>


<div class="wp-block-newsletterglue-showhide ng-block" width="100%">
<figure class="wp-block-embed is-type-rich is-provider-pocket-casts wp-block-embed-pocket-casts"><div class="wp-block-embed__wrapper">

</div></figure>
</div></div></div>



<h2 class="wp-block-heading" id="0-p">Plugins, Themes, and Tools for #nocode site builders and owners</h2>



<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>



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>


<div class="wp-block-newsletterglue-showhide ng-block" width="100%">
<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">

</div></figure>
</div>


<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>


<div class="wp-block-newsletterglue-showhide ng-block" width="100%">
<figure class="wp-block-embed is-type-rich is-provider-pocket-casts wp-block-embed-pocket-casts"><div class="wp-block-embed__wrapper">

</div></figure>
</div>


<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<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>



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>


<div class="ng-block-72dd3630e730ec6f 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-62bdfd8eebf3d6e7 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>

<div class="ng-block-aa4d969202ba3efa 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>


<h2 class="wp-block-heading" id="3-building-themes-for-fse-and-word-press">Building Blocks and Tools for the Block editor.</h2>



<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>



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<h2 class="wp-block-heading" id="ai-and-wordpress">AI and WordPress </h2>



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>


<div class="ng-block-45ec6c5cf80d0ff3 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-adedd41414e57067 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>

<div class="ng-block-73e2f9d231addacb 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>

<div class="ng-block-8e88a6be93bef282 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>


<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<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>


<div class="ng-block-05863c6f6a74ed71 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>

<div class="wp-block-newsletterglue-showhide ng-block" width="100%"></div>




<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:31;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:100197:"<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>



<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>



<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>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<p class="wp-block-paragraph"><strong>Table of contents</strong></p>



<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>
</div></div>



<h2 class="wp-block-heading" id="the-specificity-cascade">The specificity cascade</h2>



<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>



<ul class="wp-block-list">
<li><strong>Default </strong>mostly the styling and layouts of WordPress Core.</li>



<li><strong>Block-level</strong> styling can be altered with plugins and overwrites the Default styling.</li>



<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>



<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>
</ul>



<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>



<h2 class="wp-block-heading" id="1-theme-json-structured-style-properties">1. theme.json — structured style properties</h2>



<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>



<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>



<p class="wp-block-paragraph">You can use hardcoded values directly in <code>styles</code>, and they work just fine:</p>



<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">{
  "version": 3,
  "styles": {
    "color": {
      "background": "#ffffff",
      "text": "#333333"
    },
    "elements": {
      "link": {
        "color": { "text": "#0073aa" }
      }
    },
    "blocks": {
      "core/button": {
        "color": { "background": "#0073aa" }
      }
    }
  }
}</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>
<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>
<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>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>



<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>



<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">{
  "version": 3,
  "settings": {
    "color": {
      "palette": &#91;
        { "slug": "primary", "color": "#0073aa", "name": "Primary" },
        { "slug": "base", "color": "#ffffff", "name": "Base" },
        { "slug": "contrast", "color": "#333333", "name": "Contrast" }
      &#93;
    },
    "typography": {
      "fontSizes": &#91;
        { "slug": "medium", "size": "18px", "name": "Medium" }
      &#93;
    }
  },
  "styles": {
    "color": {
      "background": "var:preset|color|base",
      "text": "var:preset|color|contrast"
    },
    "typography": {
      "fontSize": "var:preset|font-size|medium",
      "lineHeight": "1.6"
    },
    "elements": {
      "link": {
        "color": { "text": "var:preset|color|primary" }
      },
      "heading": {
        "typography": { "fontWeight": "700" }
      }
    },
    "blocks": {
      "core/button": {
        "border": { "radius": "4px" },
        "color": { "background": "var:preset|color|primary" }
      },
      "core/quote": {
        "typography": { "fontStyle": "italic" }
      }
    }
  }
}</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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&#93;</span></span>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&#93;</span></span>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">},</span></span>
<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>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">},</span></span>
<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>
<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>
<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">},</span></span>
<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>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">},</span></span>
<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>
<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>
<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>



<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>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<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>



<li><strong>WordPress manages specificity for you:</strong> the &#8220;base → theme → user&#8221; cascade works correctly.</li>



<li><strong>Generates CSS custom properties automatically</strong> (e.g. <code>--wp--preset--color--primary</code>).</li>



<li><strong>Visual parity</strong> between editor and front end.</li>



<li><strong>Machine-readable: </strong>other tools and plugins can consume and extend these styles.</li>



<li><strong>Reduces the amount of CSS</strong> enqueued overall.</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<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>



<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>
</ul>



<p class="wp-block-paragraph"><strong>Documentation</strong></p>



<ul class="wp-block-list">
<li><a href="https://developer.wordpress.org/themes/global-settings-and-styles/">Global Settings and Styles (theme.json)</a></li>



<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>



<li><a href="https://developer.wordpress.org/themes/global-settings-and-styles/styles/using-presets/">Using Presets</a></li>



<li><a href="https://developer.wordpress.org/themes/global-settings-and-styles/styles/styles-reference/">Styles Reference</a></li>
</ul>



<h2 class="wp-block-heading" id="2-theme-json-the-css-property">2. theme.json — The <code>css</code> Property </h2>



<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>



<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>



<h3 class="wp-block-heading" id="global-custom-css">Global custom CSS</h3>



<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">{
  "version": 3,
  "styles": {
    "css": ".my-custom-class { opacity: 0.8; } body { scroll-behavior: smooth; }"
  }
}</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>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>



<h3 class="wp-block-heading" id="per-block-custom-css">Per-block custom CSS</h3>



<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">{
  "version": 3,
    "styles": {    
       "blocks": {
          "core/image": {
              "css": "&amp; img { border-radius: 8px; transition: transform 0.3s; } &amp;:hover img { transform: scale(1.02); }"
              },     
          "core/post-title": {
              "css": "letter-spacing: 1px;"
             },
         "core/paragraph": {       
              "css": "&amp;.has-background { padding: .5rem .8rem; }"
           }
        }
    }
}</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>
<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>
<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>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">              </span><span style="color: #797593;">},</span><span style="color: #575279;">     </span></span>
<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>
<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>
<span class="line"><span style="color: #575279;">             </span><span style="color: #797593;">},</span></span>
<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>
<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>
<span class="line"><span style="color: #575279;">           </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">        </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>



<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>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<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>



<li>WordPress handles the selector, so you avoid specificity conflicts.</li>



<li>CSS from elements and variations is also supported (from WordPress 6.6).</li>



<li>Provides a bridge between structured theme.json properties and full CSS freedom.</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>JSON doesn&#8217;t support line breaks, so everything must be on one line — cumbersome for large blocks of CSS.</li>



<li>No syntax highlighting in JSON files.</li>



<li>Best for small, targeted additions — for anything extensive, use block stylesheets instead.</li>
</ul>



<p class="wp-block-paragraph"><strong>Documentation</strong></p>



<ul class="wp-block-list">
<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>
</ul>



<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>



<p class="wp-block-paragraph"><strong>Who:</strong> Theme developers<br /><strong>Where:</strong> <code>theme.json</code> → <code>settings.custom</code></p>



<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>



<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">{
  "version": 3,
  "settings": {
    "custom": {
      "contentMaxWidth": "800px",
      "spacing": {
        "gutter": "2rem"
      },
      "transition": "all 0.3s ease"
    }
  }
}</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>
<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>
<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>
<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>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">},</span></span>
<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>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>



<p class="wp-block-paragraph">This generates:</p>



<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 {
  --wp--custom--content-max-width: 800px;
  --wp--custom--spacing--gutter: 2rem;
  --wp--custom--transition: all 0.3s ease;
}</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>
<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>
<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>
<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>
<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Centralized design tokens accessible from any CSS source.</li>



<li>Automatic generation of CSS custom properties following WordPress naming conventions.</li>



<li>Changes propagate everywhere the variable is used.</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>Only generates the variables — you still need to reference them in your CSS.</li>



<li>Not directly editable by users in the Site Editor UI (unlike presets for colors or font sizes).</li>
</ul>



<p class="wp-block-paragraph"><strong>Documentation</strong></p>



<ul class="wp-block-list">
<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>
</ul>



<h2 class="wp-block-heading" id="4-child-theme-s-theme-json">4. Child Theme&#8217;s <code>theme.json</code></h2>



<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>



<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>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>All changes survive parent theme updates.</li>



<li>Full access to every theme.json capability — structured properties, css property, presets, and settings.</li>



<li>Combined with block stylesheets and style.css, it provides a complete override system.</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>Requires maintaining a child theme.</li>



<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>
</ul>



<p class="wp-block-paragraph"><strong>Documentation</strong></p>



<ul class="wp-block-list">
<li>Theme Handbook: <a href="https://developer.wordpress.org/themes/advanced-topics/child-themes/">Child Themes</a></li>
</ul>



<h2 class="wp-block-heading" id="5-global-styles-ui">5. Global Styles UI </h2>



<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>



<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>



<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>



<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>



<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>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>No code required — fully visual.</li>



<li>Highest specificity: user styles override theme defaults.</li>



<li>Changes are stored in the database (<code>wp_global_styles</code> post type), separate from theme files, so they survive theme updates.</li>



<li>Supports global style variations — users can switch between whole-site style presets.</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>Limited to what the UI controls expose (which grows with each WordPress release).</li>



<li>For anything the UI can&#8217;t handle, users fall back to the Additional CSS options below.</li>
</ul>



<h2 class="wp-block-heading" id="6-additional-css">6. Additional CSS </h2>



<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>



<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>





<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Free-form CSS handles any valid CSS.</li>



<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>



<li>Preview changes before saving.</li>



<li>Revision history (last 25 versions).</li>



<li>Higher specificity than theme styles.</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>Not scoped to blocks — loads globally.</li>



<li>No syntax highlighting or code formatting.</li>



<li>Intended as a last resort for styles that can&#8217;t be achieved through theme.json or the visual Styles interface.</li>
</ul>



<h2 class="wp-block-heading" id="7-per-block-additional-css">7. Per-Block Additional CSS </h2>



<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>



<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>



<figure class="wp-block-video wp-block-embed is-type-video is-provider-videopress"><div class="wp-block-embed__wrapper">

</div></figure>



<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 */
font-style: italic;
border-left: 4px solid currentColor;
padding-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>
<span class="line"><span style="color: #56949F;">font-style</span><span style="color: #575279;">: italic;</span></span>
<span class="line"><span style="color: #56949F;">border-left</span><span style="color: #575279;">: 4px solid currentColor;</span></span>
<span class="line"><span style="color: #56949F;">padding-left</span><span style="color: #575279;">: 1.5em;</span></span></code></pre></div>



<p class="wp-block-paragraph">The <code>&amp;</code> selector works here for nested elements and pseudo-selectors.</p>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Scoped to a specific block type — only loads when that block is present on a page.</li>



<li>No need to know CSS selectors — WordPress handles them.</li>



<li>User-level styles (highest priority in the cascade).</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<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>



<li>Small text area with no code formatting.</li>
</ul>



<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>



<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>



<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>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Precision targeting of individual block instances rather than all blocks of a type.</li>



<li>Perfect for one-off styling: a highlighted paragraph, a special call to action, etc.</li>



<li>Multiple classes can be added, separated by spaces.</li>



<li>Works with any CSS source — just define the class styles somewhere.</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>Only adds class names — you still need to write the CSS elsewhere.</li>



<li>Per-instance, which means it doesn&#8217;t scale well for repeated patterns (use block style variations for those).</li>
</ul>



<h2 class="wp-block-heading" id="9-global-style-variations-theme-level-style-presets">9. Global Style Variations (Theme-Level Style Presets)</h2>



<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>



<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>



<p class="wp-block-paragraph">Since WordPress 6.6, style variations are further classified into three subtypes based on their content. </p>



<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>



<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>



<p class="wp-block-paragraph">Files that touch other properties remain full <strong>theme style variations</strong>. </p>



<p class="wp-block-paragraph">Color and typography variations can be mixed and matched with each other and with theme variations. </p>



<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>



<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
{
  "$schema": "https://schemas.wp.org/trunk/theme.json",
  "version": 3,
  "title": "Dark Mode",
  "settings": {
    "color": {
      "palette": &#91;
        { "slug": "base", "color": "#1a1a2e", "name": "Base" },
        { "slug": "contrast", "color": "#e0e0e0", "name": "Contrast" }
      &#93;
    }
  },
  "styles": {
    "color": {
      "background": "#1a1a2e",
      "text": "#e0e0e0"
    }
  }
}</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>
<span class="line"><span style="color: #797593;">{</span></span>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">      </span><span style="color: #797593;">&#93;</span></span>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">},</span></span>
<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>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #575279;">  </span><span style="color: #797593;">}</span></span>
<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Users can switch between entire style schemes (light/dark, color themes, typographic variations) from the Styles panel.</li>



<li>Makes one theme feel like many — more versatile without requiring separate themes.</li>



<li>Fully declarative (no PHP).</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>Only affects settings and styles — not templates or patterns.</li>
</ul>



<p class="wp-block-paragraph"><strong>Documentation</strong></p>



<ul class="wp-block-list">
<li><a href="https://developer.wordpress.org/themes/global-settings-and-styles/style-variations/">Style Variations</a></li>



<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>
</ul>



<h2 class="wp-block-heading" id="10-block-style-variations-json-php-and-javascript">10. Block Style Variations (JSON, PHP, and JavaScript)</h2>



<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>



<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>



<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>



<h2 class="wp-block-heading" id="11-section-styles">11. Section Styles </h2>



<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>



<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>



<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>



<p class="wp-block-paragraph">The Twenty Twenty Five theme showcases this convention quite nicely. </p>



		<figure class="wp-block-jetpack-videopress jetpack-videopress-player">
			<div class="jetpack-videopress-player__wrapper"> </div>
			
			
		</figure>
		


<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Apply coordinated styles to entire sections (background, text color, button colors, link colors) with a single click.</li>



<li>Users select the section style in the block&#8217;s Styles panel.</li>



<li>Powerful for creating consistent design sections (hero areas, dark sections, testimonials).</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>Easy to overwhelm users with too many section style options — restraint is needed.</li>



<li>Requires careful design token architecture (using base/contrast/primary/secondary color naming).</li>
</ul>



<p class="wp-block-paragraph"><strong>Documentation</strong></p>



<ul class="wp-block-list">
<li><a href="https://make.wordpress.org/core/2024/06/24/section-styles/">Section Styles</a> (WordPress 6.6)</li>
</ul>



<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>



<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>



<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>



<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 */
.wp-block-image img {
    padding: 1rem;
    background: linear-gradient(-60deg, #ff5858, #f09819);
}</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>
<span class="line"><span style="color: #575279;">.wp-block-image img </span><span style="color: #797593;">{</span></span>
<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>
<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>
<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>



<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
add_action( 'init', function() {
    wp_enqueue_block_style( 'core/image', array(
        'handle' => 'my-theme-image-styles',
        'src'    => get_theme_file_uri( 'assets/blocks/core-image.css' ),
        'path'   => get_theme_file_path( 'assets/blocks/core-image.css' ),
    ) );
});</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>
<span class="line"><span style="color: #575279;">add_action( 'init', function() </span><span style="color: #797593;">{</span></span>
<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>
<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>
<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>
<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>
<span class="line"><span style="color: #575279;">    </span><span style="color: #B4637A;">)</span><span style="color: #575279;"> </span><span style="color: #B4637A;">);</span></span>
<span class="line"><span style="color: #797593;">}</span><span style="color: #575279;">);</span></span></code></pre></div>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<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>



<li>Full CSS syntax with syntax highlighting, multi-line formatting, and preprocessor support (Sass/SCSS).</li>



<li>Clean code organization — one file per block.</li>



<li>Works for any CSS, including media queries, animations, complex selectors, and pseudo-elements.</li>



<li>Applies in both the editor and front end.</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>Requires PHP registration in functions.php.</li>



<li>These styles aren&#8217;t exposed in the Global Styles UI for user editing.</li>
</ul>



<p class="wp-block-paragraph"><strong>Documentation</strong></p>



<ul class="wp-block-list">
<li><a href="https://developer.wordpress.org/themes/features/block-stylesheets/">Block Stylesheets</a></li>



<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>
</ul>



<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>



<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>



<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>



<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() {
    wp_enqueue_style(
        'my-theme-custom',
        get_theme_file_uri( 'assets/css/custom.css' ),
        array(),
        '1.0.0'
    );
});

// For editor-only styles:
add_action( 'enqueue_block_editor_assets', function() {
    wp_enqueue_style(
        'my-theme-editor',
        get_theme_file_uri( 'assets/css/editor.css' ),
        array(),
        '1.0.0'
    );
});</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>
<span class="line"><span style="color: #575279;">    </span><span style="color: #D7827E;">wp_enqueue_style</span><span style="color: #797593;">(</span></span>
<span class="line"><span style="color: #575279;">        </span><span style="color: #EA9D34;">'my-theme-custom'</span><span style="color: #797593;">,</span></span>
<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>
<span class="line"><span style="color: #575279;">        </span><span style="color: #B4637A; font-style: italic;">array</span><span style="color: #797593;">(),</span></span>
<span class="line"><span style="color: #575279;">        </span><span style="color: #EA9D34;">'1.0.0'</span></span>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">);</span></span>
<span class="line"><span style="color: #797593;">});</span></span>
<span class="line"></span>
<span class="line"><span style="color: #797593; font-style: italic;">//</span><span style="color: #9893A5; font-style: italic;"> For editor-only styles:</span></span>
<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>
<span class="line"><span style="color: #575279;">    </span><span style="color: #D7827E;">wp_enqueue_style</span><span style="color: #797593;">(</span></span>
<span class="line"><span style="color: #575279;">        </span><span style="color: #EA9D34;">'my-theme-editor'</span><span style="color: #797593;">,</span></span>
<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>
<span class="line"><span style="color: #575279;">        </span><span style="color: #B4637A; font-style: italic;">array</span><span style="color: #797593;">(),</span></span>
<span class="line"><span style="color: #575279;">        </span><span style="color: #EA9D34;">'1.0.0'</span></span>
<span class="line"><span style="color: #575279;">    </span><span style="color: #797593;">);</span></span>
<span class="line"><span style="color: #797593;">});</span></span></code></pre></div>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Full control over loading conditions (you can conditionally enqueue based on page, template, user role, etc.).</li>



<li>Familiar to all WordPress developers.</li>



<li>Can load external stylesheets, Google Fonts, icon libraries, etc.</li>



<li>Supports dependencies, versioning, and media attributes.</li>



<li>Can target editor-only or front-end-only.</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>Loads on every page (unless you add conditional logic).</li>



<li>No integration with the Global Styles UI.</li>



<li>Doesn&#8217;t benefit from the block stylesheet system&#8217;s per-block inlining.</li>
</ul>



<p class="wp-block-paragraph"><strong>Documentation</strong></p>



<ul class="wp-block-list">
<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>



<li><a href="https://developer.wordpress.org/themes/core-concepts/including-assets/#editor-stylesheets" rel="noreferrer noopener" target="_blank">Editor Stylesheets</a></li>



<li><a href="https://developer.wordpress.org/reference/hooks/wp_enqueue_scripts/">do_action( ‘wp_enqueue_scripts’ )</a></li>



<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>
</ul>



<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>



<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>



<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>



<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>



<h2 class="wp-block-heading" id="14-the-theme-s-style-css">14. The Theme&#8217;s <code>style.css</code></h2>



<p class="wp-block-paragraph"><strong>Who:</strong> Theme developers<br /><strong>Where:</strong> <code>style.css</code> in the theme root</p>



<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>



<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>



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

function theme_slug_setup() {
	add_editor_style( get_stylesheet_uri() );
}</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>
<span class="line"></span>
<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>
<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>
<span class="line"><span style="color: #797593;">}</span></span></code></pre></div>



<p class="wp-block-paragraph"><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Familiar workflow for developers with classic theme experience.</li>



<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>



<li>Full CSS syntax, syntax highlighting, and preprocessor support.</li>
</ul>



<p class="wp-block-paragraph"><strong>Limitations:</strong></p>



<ul class="wp-block-list">
<li>Needs to be enqueued like any other stylesheet file (see #13)  </li>



<li>Loads on every page, even if the styles aren&#8217;t needed — no per-block performance optimization.</li>



<li>Not integrated with the Global Styles UI.</li>



<li>Not the recommended approach for block-specific styling; use block stylesheets instead (#12)</li>
</ul>



<p class="wp-block-paragraph"><strong>Documentation</strong></p>



<ul class="wp-block-list">
<li><a href="https://developer.wordpress.org/themes/core-concepts/main-stylesheet/">Main Stylesheet (style.css)</a></li>
</ul>



<h2 class="wp-block-heading" id="summary-table">Summary Table</h2>



<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>



<h2 class="wp-block-heading" id="decision-guide">Decision Guide</h2>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />



<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:32;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:33;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:34;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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>



<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>



<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>



<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>



<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>



<h2 class="wp-block-heading">How to test this release</h2>



<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>



<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>



<h2 class="wp-block-heading">Beta 2 updates and highlights</h2>



<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>



<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>



<ul class="wp-block-list">
<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>



<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>
</ul>



<p class="wp-block-paragraph"><strong>Beta 2 also contains a new feature</strong>!</p>



<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>



<h2 class="wp-block-heading">A Beta 2 haiku</h2>



<p class="wp-block-paragraph"><em>New, and fresh as dew</em></p>



<p class="wp-block-paragraph"><em>Crafted and refined for you:</em></p>



<p class="wp-block-paragraph"><em>Beta 2 breaks through.</em></p>



<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>



<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:35;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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:36;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<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>
</blockquote>



<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>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<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>
</blockquote>



<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:37;a:6:{s:4:"data";s:21:"
	
	
	
	
	
	
	
	
	
	
";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>
<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<p class="wp-block-paragraph">And so without further delay, I bring you Jonathan Desrosiers.</p>



<p class="wp-block-paragraph">I am joined on the podcast by Jonathan Desrosiers. Hello.</p>



<p class="wp-block-paragraph">[00:03:06] <strong>Jonathan Desrosiers:</strong> Hi, how are you?</p>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<p class="wp-block-paragraph">[00:05:33] <strong>Jonathan Desrosiers:</strong> It was in San Francisco.</p>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>



<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>
