:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:83:\"HeroPress: A Decade with WordPress: My Journey of Growth, Contribution, and Courage\";s: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=8082\";s: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:212:\"https://heropress.com/essays/a-decade-with-wordpress-my-journey-of-growth-contribution-and-courage/#utm_source=rss&utm_medium=rss&utm_campaign=a-decade-with-wordpress-my-journey-of-growth-contribution-and-courage\";s: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:15545:\"<img alt=\"Pull Quote: When I look back, the journey feels full — full of lessons, full of change, and full of heart.\" class=\"attachment-large size-large wp-post-image\" height=\"512\" src=\"https://heropress.com/wp-content/uploads/2025/07/072925-min.jpg\" width=\"1024\" /><figure class=\"wp-block-image alignright is-resized\"><img alt=\"\" src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXcRyDxyvsWpBpWWa2G9siWnD6J54uFuHtkTcHklkXSvTW8nCoC2sGRwz45NlqLHrF3V6djYlvDcmh0tdf849n6cMqg4d_9yceVVEvaWWPKR3Bgrm-qSKTGfBxjyo67aRW5gyEtC?key=5NJTv3YzQ_HvxKfiq8hX5A\" style=\"width: 245px; height: auto;\" /></figure>\n\n\n\n<p>I never imagined I’d be writing this.</p>\n\n\n\n<p>Ten years. A full decade of working in tech, without pause. Of growing, stumbling, learning, and showing up — with WordPress at the center of it all.</p>\n\n\n\n<p>When I look back, the journey feels full — full of lessons, full of change, and full of heart.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-from-india-s-city-of-lakes-to-the-heart-of-open-source\"><strong>From India’s City of Lakes to the Heart of Open Source</strong></h2>\n\n\n\n<p>This year marks a major milestone in my life — 10 years of professional experience in the WordPress ecosystem. As I reflect on this journey, it’s not just a work anniversary. It’s a story woven with personal growth, learning, community, and quiet resilience — a journey that began in a small city in <a href=\"https://en.wikipedia.org/wiki/Udaipur\">Udaipur, Rajasthan, India</a>, and now reaches across the globe.</p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img alt=\"\" src=\"https://lh7-rt.googleusercontent.com/docsz/AD_4nXedVMYabF4JiHteWIjqrp24wRnBnLGodWAaRQ9yY3iFP6hykY88FQ-VHse-2WX-HYOeiWzn6-J8wuulsTXfMkFFvSBW3eGXl8LyB50CEAE_aXLdQRFEwVKQ9QXh9SEFR93l9wnPFg?key=5NJTv3YzQ_HvxKfiq8hX5A\" style=\"width: 805px; height: auto;\" /></figure>\n\n\n\n<p>I was born and raised in Udaipur — a city known for its lakes and history, but not especially for tech companies. After completing my college degree, like many fresh graduates, I faced the uncertainty of landing a job — especially with the added constraint of staying in my hometown. Thankfully, my parents were incredibly supportive. They guided me, encouraged me, and reminded me that ambition has no boundaries — not even geographical ones.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-unexpected-beginning\"><strong>The Unexpected Beginning</strong></h2>\n\n\n\n<p>Though I had trained in software testing, I didn’t know much about WordPress back then. I stumbled into the WordPress world by joining a local startup in Udaipur. That decision would change the course of my life.</p>\n\n\n\n<p>The company, led by <a href=\"https://heropress.com/essays/wordpress-my-future/\">Puneet Sahalot</a>, was where my real journey began. Puneet, a close friend and mentor, introduced me to WordPress — its structure, its vastness, and more importantly, its values. He had a gift for seeing potential in people and believed in exploring uncharted paths. Puneet is no longer with us today, but his wisdom and encouragement remain a cornerstone in my journey.</p>\n\n\n\n<p>With his influence, I began digging deeper into WordPress. Finding my first bug on the WordPress core was a moment of both confusion and pride. Submitting it felt like stepping into a world where I didn’t just work on projects — I became part of a global movement.</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>“That one bug wasn’t just a bug — it was a beginning.”</p>\n</blockquote>\n\n\n\n<p>That first bug ignited something within me. I started contributing to various areas — from core testing to translations, organizing local WordCamps, and even speaking at events. It felt empowering to give back to something that gave me so much.</p>\n\n\n\n<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\">\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/IMG_1987.jpg\"><img alt=\"\" class=\"wp-image-8096\" height=\"800\" src=\"https://heropress.com/wp-content/uploads/2025/07/IMG_1987.jpg\" width=\"800\" /></a></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/9c4e2977-d4b6-44b4-a5d5-87ba4ece3883.jpg\"><img alt=\"\" class=\"wp-image-8100\" height=\"576\" src=\"https://heropress.com/wp-content/uploads/2025/07/9c4e2977-d4b6-44b4-a5d5-87ba4ece3883.jpg\" width=\"1024\" /></a></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/7704fd56-150f-4ff7-a68d-c432269a8c5e.jpg\"><img alt=\"\" class=\"wp-image-8101\" height=\"768\" src=\"https://heropress.com/wp-content/uploads/2025/07/7704fd56-150f-4ff7-a68d-c432269a8c5e-1024x768.jpg\" width=\"1024\" /></a></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/f6e17e30-332e-4084-9a79-8b7720015785.jpg\"><img alt=\"\" class=\"wp-image-8102\" height=\"768\" src=\"https://heropress.com/wp-content/uploads/2025/07/f6e17e30-332e-4084-9a79-8b7720015785-1024x768.jpg\" width=\"1024\" /></a></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/IMG_9437.jpg\"><img alt=\"\" class=\"wp-image-8103\" height=\"1024\" src=\"https://heropress.com/wp-content/uploads/2025/07/IMG_9437-984x1024.jpg\" width=\"984\" /></a><figcaption class=\"wp-element-caption\">Screenshot</figcaption></figure>\n</figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-growth-beyond-comfort-zones\"><strong>Growth Beyond Comfort Zones</strong></h2>\n\n\n\n<p>Marriage brought a new chapter — I moved to a metro city and joined <a href=\"https://brainstormforce.com/\">Brainstorm Force</a>, where I worked on a suite of powerful WordPress products, including the very popular Astra theme.</p>\n\n\n\n<p>From a small local team to a larger product-driven organization, the shift was both challenging and fulfilling. I moved from being a tester to becoming a Product Manager, learning to balance leadership, quality assurance, user experience, and team collaboration. I found myself not just testing products — but shaping them.</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>I was also incredibly grateful to have a life partner who encouraged me to aim higher and supported my ambitions every step of the way.</p>\n</blockquote>\n\n\n\n<p>One of the proudest moments in my journey was being selected to lead the test team for the WordPress 5.6 and 5.7 releases. It was surreal. The appreciation and recognition I received from the global community made me realize how far I had come — from finding my first bug to helping others make WordPress better.</p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-2 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/IMG_9461.jpg\"><img alt=\"\" class=\"wp-image-8104\" height=\"1024\" src=\"https://heropress.com/wp-content/uploads/2025/07/IMG_9461-922x1024.jpg\" width=\"922\" /></a></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/unnamed.jpg\"><img alt=\"\" class=\"wp-image-8107\" height=\"1024\" src=\"https://heropress.com/wp-content/uploads/2025/07/unnamed-766x1024.jpg\" width=\"766\" /></a></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/unnamed.png\"><img alt=\"\" class=\"wp-image-8108\" height=\"189\" src=\"https://heropress.com/wp-content/uploads/2025/07/unnamed-1024x189.png\" width=\"1024\" /></a></figure>\n</figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-a-new-rhythm-work-and-motherhood\"><strong>A New Rhythm: Work and Motherhood</strong></h2>\n\n\n\n<p>Life shifted gears again when I joined <a href=\"https://caseproof.com/\">Caseproof</a> (<a href=\"https://memberpress.com/\">MemberPress</a>) — a fully remote role that brought with it the flexibility I needed at a very important time in my life.</p>\n\n\n\n<p>Working remotely was a new experience but quickly became a blessing. When I became a mother, I embraced both worlds with open arms. I continued to work with the same dedication, sometimes holding my daughter in one arm while debugging with the other. My work never stopped, and my love for WordPress only deepened.</p>\n\n\n\n<p>These moments, though challenging, became proof that passion, purpose, and parenthood can co-exist beautifully. Each bug fixed, each feature tested, each call attended — became part of a rhythm that blended professional focus with maternal joy.</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>“I didn’t take big leaps. I took small steps. But I took them every day. That’s how I got here.”</p>\n</blockquote>\n\n\n\n<p>Some days were messy. Some were magical. But all of them were mine.</p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/IMG_3196-scaled.jpg\"><img alt=\"\" class=\"wp-image-8109\" height=\"768\" src=\"https://heropress.com/wp-content/uploads/2025/07/IMG_3196-1024x768.jpg\" width=\"1024\" /></a></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/IMG_9721-scaled.jpg\"><img alt=\"\" class=\"wp-image-8099\" height=\"1024\" src=\"https://heropress.com/wp-content/uploads/2025/07/IMG_9721-768x1024.jpg\" width=\"768\" /></a></figure>\n</figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-beyond-the-screen-the-explorer-in-me\"><strong>Beyond the Screen: The Explorer in Me</strong></h2>\n\n\n\n<p>Outside of my professional life, I’m a passionate foodie and an avid traveler. Exploring new places and trying different cuisines fills me with joy and curiosity. So far, I’ve had the privilege of visiting <strong>30 countries</strong> — each one offering a unique flavor, story, and lesson.</p>\n\n\n\n<p>Recently, my family and I began a new chapter by relocating to <strong><a href=\"https://en.wikipedia.org/wiki/Dubai\">Dubai</a></strong>. It’s a city that’s fast-paced, full of opportunity, and incredibly vibrant — and we’re absolutely loving it so far. This new environment continues to inspire both my personal and professional sides in unexpected ways.</p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-2 is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/IMG_6636-scaled.jpg\"><img alt=\"\" class=\"wp-image-8111\" height=\"1024\" src=\"https://heropress.com/wp-content/uploads/2025/07/IMG_6636-768x1024.jpg\" width=\"768\" /></a></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/IMG_5727-scaled.jpg\"><img alt=\"\" class=\"wp-image-8110\" height=\"1024\" src=\"https://heropress.com/wp-content/uploads/2025/07/IMG_5727-768x1024.jpg\" width=\"768\" /></a></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/IMG_1726-scaled.jpg\"><img alt=\"\" class=\"wp-image-8098\" height=\"1024\" src=\"https://heropress.com/wp-content/uploads/2025/07/IMG_1726-768x1024.jpg\" width=\"768\" /></a></figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https://heropress.com/wp-content/uploads/2025/07/753fb658-ee15-4087-9665-1b8c23255d34-scaled.jpg\"><img alt=\"\" class=\"wp-image-8112\" height=\"1024\" src=\"https://heropress.com/wp-content/uploads/2025/07/753fb658-ee15-4087-9665-1b8c23255d34-768x1024.jpg\" width=\"768\" /></a></figure>\n</figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-still-learning-still-contributing\"><strong>Still Learning, Still Contributing</strong></h2>\n\n\n\n<p>Even after 10 years, I still feel like a student. The tech world evolves fast, and I try to keep pace. Recently, I’ve been diving into modern testing tools like <strong><a href=\"https://playwright.dev/\">Playwright</a></strong> and <strong><a href=\"https://www.cypress.io/\">Cypress</a></strong>, and experimenting with <strong>AI-based automation</strong> — which is not just fascinating but necessary in today’s evolving digital landscape.</p>\n\n\n\n<p>I&#8217;m excited to explore new contribution opportunities in WordPress — mentoring, accessibility testing, performance initiatives, and more. There’s always more to give back, and more to learn.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-final-thoughts\"><strong>Final Thoughts</strong></h2>\n\n\n\n<p>This journey wasn’t built on dramatic turns or overnight success. It was made up of steady progress, genuine passion, and a strong belief in community and consistency.</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>To those starting out, unsure of their path — your story is waiting. Take that first step.</p>\n</blockquote>\n\n\n\n<p>“You can build a global impact even from a small city. WordPress doesn&#8217;t ask where you&#8217;re from — it only asks, what will you contribute?”</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-reflections-after-10-years\"><strong><img alt=\"🌊\" class=\"wp-smiley\" src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f30a.png\" style=\"height: 1em;\" /> Reflections After 10 Years</strong></h2>\n\n\n\n<p>If I’ve learned anything over these ten years, it’s this:</p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You don’t need to be loud to be seen.</li>\n\n\n\n<li>You don’t need to do it all at once.</li>\n\n\n\n<li>You just need to keep showing up — honestly, consistently, and with curiosity.<br /></li>\n</ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-let-s-connect\"><strong>Let’s Connect</strong></h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><img alt=\"📧\" class=\"wp-smiley\" src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f4e7.png\" style=\"height: 1em;\" /><a href=\"https://www.linkedin.com/in/monika-rao-7261a185/\"> LinkedIn</a></li>\n\n\n\n<li> <img alt=\"💻\" class=\"wp-smiley\" src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f4bb.png\" style=\"height: 1em;\" /><a href=\"https://github.com/monika-12\"> GitHub</a></li>\n\n\n\n<li><a href=\"http://twitter.com/monikarao13\"> <img alt=\"🌐\" class=\"wp-smiley\" src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f310.png\" style=\"height: 1em;\" /> Twitter</a></li>\n</ul>\n\n\n\n<p>If you ever want to talk about testing, WordPress contributions, remote work, motherhood, or just career growth, feel free to reach out. I’d love to help, share, and learn with you.</p>\n\n\n\n<p></p>\n<p>The post <a href=\"https://heropress.com/essays/a-decade-with-wordpress-my-journey-of-growth-contribution-and-courage/\">A Decade with WordPress: My Journey of Growth, Contribution, and Courage</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, 30 Jul 2025 04: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:10:\"Monika Rao\";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:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:86:\"Open Channels FM: Designing for Clients Using Figma Systems and WordPress Block Themes\";s: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=104272\";s: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:93:\"https://openchannels.fm/designing-for-clients-using-figma-systems-and-wordpress-block-themes/\";s: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:217:\"In the first episode of Publishing Flow, host Derek and Ash Shaw talk about how Figma transformed their WordPress workflow, enhancing design collaboration, client workflows, and even open-sourcing their design system.\";s: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, 29 Jul 2025 12:22: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:5:\"BobWP\";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:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"Carlos Bravo: Enable xdebug on wordpress-develop repo\";s: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:32:\"https://carlosbravo.blog/?p=1222\";s: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:76:\"https://carlosbravo.blog/2025/07/28/enable-xdebug-on-wordpress-develop-repo/\";s: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:1492:\"<p>Just adding this for my future self&#8217;s health. First, update the PHP config file.</p>\n\n\n\n<pre class=\"wp-block-code\"><code>// Enable xdebug.\n\n...\nxdebug.mode=develop,debug\n...</code></pre>\n\n\n\n<p>The VSCode launch file:</p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"version\": \"0.2.0\",\n    \"configurations\": &#91;\n		{\n			\"name\": \"Listen for XDebug\",\n			\"type\": \"php\",\n			\"request\": \"launch\",\n			\"port\": 9003,\n			\"pathMappings\": {\n				\"/var/www\": \"${workspaceFolder}\",\n			},\n		},\n    ]\n}\n</code></pre>\n\n\n\n<p>Do not forget to update your <code>.env</code> file.</p>\n\n\n\n<pre class=\"wp-block-code\"><code>...\n\n# Where to run WordPress from. Valid options are \'src\' and \'build\'.\nLOCAL_DIR=src\n\n# The PHP version to use. Valid options are \'latest\', and \'{version}-fpm\'.\nLOCAL_PHP=latest\n\n# Whether or not to enable Xdebug.\nLOCAL_PHP_XDEBUG=true\n\n...</code></pre>\n\n\n\n<p>Beware of trying to make it work with AI; you may end up with some hallucinations and tons of files!</p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img alt=\"Screenshot of a code editor displaying a file tree with nine changed files, including php-config-enhanced.ini, launch.json, and xdebug-test.php.\" class=\"wp-image-1230\" height=\"280\" src=\"https://i0.wp.com/carlosbravo.blog/wp-content/uploads/2025/07/Screenshot-2025-07-28-at-18.16.29.png?resize=320%2C280&#038;ssl=1\" width=\"320\" /><figcaption class=\"wp-element-caption\">AI generated and updated files, that are not needed in my case.</figcaption></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, 28 Jul 2025 16:18:59 +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:12:\"Carlos Bravo\";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:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:109:\"Gutenberg Times: Gutenberg Changelog 119 – WordPress 6.8.2 and 6.9, Gutenberg 21.1, 21.2, and 21.3 Releases\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:53:\"https://gutenbergtimes.com/?post_type=podcast&p=40947\";s: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:121:\"https://gutenbergtimes.com/podcast/gutenberg-changelog-119-wordpress-6-8-2-and-6-9-gutenberg-21-1-21-2-and-21-3-releases/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:49786:\"<p>Birgit Pauli-Haack and guest Tammie Lister discuss the latest WordPress and Gutenberg updates, including WordPress 6.8.2 and 6.9, as well as Gutenberg plugin releases 21.1, 21.2, and 21.3. They highlight the renewed excitement around shipping features, the introduction of a core AI team, and significant developments such as Data Views, advanced admin design planning, and ongoing work on collaborative editing. The episode emphasizes the importance of experimenting with new tools, building muscle memory, and encouraging feedback to help shape the evolution of WordPress and Gutenberg.</p>\n\n\n\n<p><a href=\"https://gutenbergtimes.com/podcast/gutenberg-changelog-69-gutenberg-releases-wordpress-6-0-1-the-create-block-theme/#shownotes\">Show Notes</a> / <a href=\"https://gutenbergtimes.com/podcast/gutenberg-changelog-69-gutenberg-releases-wordpress-6-0-1-the-create-block-theme/#transcript\">Transcript</a></p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Editor: <a href=\"https://www.linkedin.com/in/sandy-reed/\">Sandy Reed</a></li>\n\n\n\n<li>Logo: <a href=\"https://markuraine.com/\">Mark Uraine</a></li>\n\n\n\n<li>Production: <a href=\"https://icodeforapurpose.com\">Birgit Pauli-Haack</a></li>\n</ul>\n\n\n\n<p class=\"has-larger-font-size\" id=\"shownotes\"><strong>Show Notes</strong></p>\n\n\n\n<p><a href=\"https://make.wordpress.org/core/2025/07/11/wordpress-6-9-planning-proposal-and-call-for-volunteers/\">WordPress 6.9 Planning Proposal and Call for Volunteers</a></p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https://make.wordpress.org/ai/2025/07/17/ai-building-blocks/\"><strong>AI Building Blocks for WordPress</strong></a>\n<ul class=\"wp-block-list\">\n<li><a href=\"https://make.wordpress.org/ai/2025/07/17/php-ai-api/\">PHP AI Client</a>  (<a href=\"https://github.com/WordPress/php-ai-client\">GitHub)</a></li>\n\n\n\n<li><a href=\"https://make.wordpress.org/ai/2025/07/17/abilities-api/\">Abilities API</a> (former Feature API) (<a href=\"https://github.com/WordPress/abilities-api\">GitHub</a>)</li>\n\n\n\n<li><a href=\"https://make.wordpress.org/ai/2025/07/17/mcp-adapter\">MCP Adapter</a> (<a href=\"https://github.com/WordPress/mcp-adapter\">GitHub</a>) </li>\n\n\n\n<li><a href=\"https://make.wordpress.org/ai/2025/07/17/ai-experiments-plugin\">AI Experiments Plugin</a> <a href=\"https://github.com/WordPress/ai\">(GitHub</a>)</li>\n</ul>\n</li>\n\n\n\n<li><strong>Ryan Welcher livestreams</strong>\n<ul class=\"wp-block-list\">\n<li><a href=\"https://www.youtube.com/watch?v=HqLXvOneHHw\">Is the Feature API the Future of WordPress?</a></li>\n\n\n\n<li><a href=\"https://www.youtube.com/watch?v=cwWcnZbsElQ\">Unlocking Potential: Feature API Meets WordPress and LLMs</a></li>\n</ul>\n</li>\n\n\n\n<li><strong>Jonathan Bossenger livestreams</strong>\n<ul class=\"wp-block-list\">\n<li><a href=\"https://www.youtube.com/watch?v=tee4mifo4kw\">Feature API  (Now Abilities API) updates &amp; building a block with Claude Code</a> </li>\n\n\n\n<li><a href=\"https://www.youtube.com/watch?v=_q-1aGvHfqo\">WordPress MCP &amp; Feature API updates </a></li>\n</ul>\n</li>\n</ul>\n\n\n\n<h2 class=\"wp-block-heading\">What&#8217;s released</h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https://wordpress.org/news/2025/07/wordpress-6-8-2-maintenance-release/\">WordPress 6.8.2 Maintenance Release</a> </li>\n\n\n\n<li><a href=\"https://make.wordpress.org/core/2025/07/18/whats-new-in-gutenberg-21-2-16-july/\">What’s new in Gutenberg 21.2? (16 July)</a></li>\n\n\n\n<li><a href=\"https://make.wordpress.org/core/2025/07/02/whats-new-in-gutenberg-21-1/\">What’s new in Gutenberg 21.1? (2nd July)</a></li>\n\n\n\n<li><a href=\"https://github.com/WordPress/gutenberg/releases/tag/v21.3.0-rc.1\">Gutenberg 21.3 RC 1 </a></li>\n</ul>\n\n\n\n<h2 class=\"wp-block-heading\">What’s in active development or discussed</h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https://github.com/WordPress/gutenberg/pull/70711\">Update Experiments settings screen to use DataForms</a></li>\n\n\n\n<li><a href=\"https://github.com/WordPress/gutenberg/issues/70751\">Template Versioning: preserve active plugin/theme templates</a></li>\n</ul>\n\n\n\n<p class=\"has-large-font-size\">Stay in Touch</p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<ul class=\"wp-block-list\">\n<li>Did you like this episode? <a href=\"https://lovethepodcast.com/gutenbergchangelog\"><strong>Please write us a review </strong></a></li>\n\n\n\n<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>\n\n\n\n<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>\n\n\n\n<li><em>Please write us a review on iTunes! <a href=\"https://gutenbergtimes.com/itunes/\">(Click here to learn how)</a></em></li>\n</ul>\n</div></div>\n\n\n\n<p class=\"has-large-font-size\" id=\"transcript\"><strong>Transcript</strong></p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:00:12]: Well, welcome to our 119th episode of the Good Merck Changelog podcast. In today&#8217;s episode, we&#8217;ll talk about WordPress 6.8.2, WordPress 6.9, Gutenberg plugin releases 21.1, 2 and 3. And then we have two couple of things that are still in the works that need your feedback and discussions. I&#8217;m your host, Birgit Pauli-Haack, curator at the Gutenberg Times and WordPress developer advocate and core contributor for WordPress. Tammie is joining me today and I&#8217;m so happy to be able to catch up with my dear friend. Tammie was the design lead on the Gutenberg Project Phase one and still contributes a ton to the project. She sponsored two days a week by a range of awesome companies and individuals, and she&#8217;s also a co-founder of Guildenberg, a company focused on empowering and supporting product makers and also creates products herself. Welcome Tammie to our show. How are you today?</p>\n\n\n\n<p><em>Tammie Lister</em> [00:01:10]: I&#8217;m great. How are you?</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:01:12]: Oh, I&#8217;m good, I&#8217;m good. Yeah. I&#8217;m still on Vacation Brain. It&#8217;s my second week back and it&#8217;s the first episode so I don&#8217;t know if I speak Norwegian, German, English or any other language.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:01:24]: So I think you just need to hold on to that Vacation Brain. It&#8217;s important right it for a while.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:01:31]: Well, it&#8217;s holding on to me actually quite a bit. So when you were last on the show it was January, that&#8217;s half a year ago. So a lot has happened since. Anything that stands out for you that you&#8217;re excited about, that you&#8217;re working on.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:01:48]: And that you, yeah, tiny really not significant thing called the core AI team that been released and also just everyone focusing together for 6.9. I feel the most significant thing I think is just the force that everyone is rejuvenated with working in this in the direction of features and the excitement everyone has about shipping. I don&#8217;t know about you, but there&#8217;s generally like a, a shipping is in the air. That’s what it feels like at the moment. People want to ship things and make things and then explore the things. And I think we&#8217;re going to find as we kind of go through the change log. That&#8217;s what caught me as I was, I was reading it, people are using these features and then going oops, I need this. Oops, I need this. And that is what makes everything better as well.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:02:37]: Yes, I agree with you. There&#8217;s a lot of creativity in the air. There&#8217;s a lot of excitement about what&#8217;s coming next. With the AI, but also just with how to work with the Gutenberg editor. Now that&#8217;s really at a total different level. Yeah, I totally get it. Okay, so let&#8217;s get started. </p>\n\n\n\n<h3 class=\"wp-block-heading\">Announcements</h3>\n\n\n\n<p>WordPress 6.9 well, the good news is there will be a second major release in 2025. Since the end of May, Automattic has said they&#8217;re contributing again to the open source project. And so some of the contributors are back, but there are also new ideas in there that are coming. So the core committers met in a quarterly meeting earlier. You&#8217;re one of the core committers, so you were at the meeting, but I know Cheltenham rules there.</p>\n\n\n\n<p><em>Tammie Lister </em>[00:03:23]: Yes.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:03:24]: And then out came a proposal that Jeff Paul published on the make blog with a planning proposal as well as the call for volunteers. So Beta 1 is scheduled for October 21st. If the release team that comes together kind of follows the plan and then the release candidate, which is very important for a lot of things, is November 11th, and the final release is then December 2nd in 2025. So from what I hear, and please correct me if I&#8217;m wrong or add to it what I&#8217;m missing, it&#8217;s going to be a little bit more improvements on the design tools. It&#8217;s the new admin design. At some point we will see something more in the release and there will also be maybe even just in experimental ways in Gutenberg collaborative editing. There&#8217;s some explorations, big explorations in the media library, what else.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:04:22]: So I think a lot of it&#8217;s being worked out at the moment and the roadmap post is due. So everything you say, I think it&#8217;s to be determined the boundaries of a lot of those things. But the best way that I can frame it is 6.9 will lay a lot of the groundwork for 7.0 as well. So for some of these things that we want, we have to do some infrastructure just like we had to do with Gutenberg in the phases we have to do infrastructure before. So just to suddenly go ta da, here&#8217;s an admin redesign that would be a little bit a lot for people. So how that happens in what ways, that happens in what areas, that is something that&#8217;s. It&#8217;s either I use the word sprinkles, that&#8217;s a weird word to use. But either some areas more functional could be in 6.9. I think it&#8217;s been worked out at the moment where that is the most useful. But at least friction, I think that&#8217;s the best way to. You know, it&#8217;s one of those Venn diagrams. How can we get the most feedback without causing the least issues at the same time? There&#8217;s been lots of different talks about how that could be done. Everyone will have an opinion and I think that&#8217;s just going to shape up over the next kind of few weeks and then we will see from there.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:05:31]: Yeah, yeah, I, I like that. You know, the, the. All those expirations and aspirations in the air. We&#8217;ll see where that all lands and. Yeah. Will you hear it?</p>\n\n\n\n<p><em>Tammie Lister</em> [00:05:40]: You.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:05:40]: You will hear it at the Gutenberg Changelog first, because a lot of things will happen in the Gutenberg plugins in the following releases. If my calculations are correct, I think 21.8 will be the plugin release that will make all the features into the 6.9 release. Could be also release candidate 20.9 or something like that. But yeah, something like that. So there are a few. We are at three now, so there are five more Gutenberg releases and we will find out what will make it and what will be still in experiments or just the underlying infrastructure. You mentioned it before. AI is in the air. Around WordCamp Europe there was a new core team announced and we talked about it a month ago with Annabella and Anne McCarthy. Vacation Brain. </p>\n\n\n\n<h3 class=\"wp-block-heading\">Community Contributions</h3>\n\n\n\n<p>So this week James LePage, one of the team reps, published a post called AI Building Blocks for WordPress. And he outlines first that it&#8217;s not going to be primarily in core. It&#8217;s more like everything is built as a canonical plugin, like a feature plugin, and to void kind of early login into a space that&#8217;s highly not settled and still exploratory, all the standards or something like that. So there are four plugins. One is the PHP AI client SDK. SDK stands for Software Development Kit. So for any that any developer who wants to include AI features can build an appliance for that. Then the Abilities API, you might have heard about it under the name Feature API. That has changed. It&#8217;s now Abilities API and that is that you can register features from your plugin that NNI can react on or act on. And then the MCP adapter, that&#8217;s Model Content protocol adapter for WordPress. And then the last one is the AI Experiments plugin, which is actually a showcase plugin to reel it all in. Yeah, so that&#8217;s kind of that what the post outlines.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:07:57]: Yeah, and I think the Experiments plugin is, as you say, it&#8217;s where everyone&#8217;s going to come together and use these things and also show people how to use these things and how they could implement them. We&#8217;ve had experiments in Gutenberg, we&#8217;ve kind of tucked away. We&#8217;ve also had experiments in design, we&#8217;ve had experiments in theme and I really love this because everyone is trying to work out how on earth they do AI, how on earth they do things where they can be useful in these projects. And one of these things can be maybe you do not know how to very few people do how to do PhPSD or MCP, all these kind of things but you really want to start learning that then being involved in the experiments plugin gives you an opportunity to kind of ride along and start to learn and discover with these teams that are already at that edge and exploring and it&#8217;s more on product kind of work in those kind of pieces.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:08:56]: Yeah, for sure. So if you also want to kind of Follow along Experience WordPress developers I know that Jon Bossenger has a live stream on Twitch where he kind of explores the new things and figures out a way to actually implement something. So he has used the Abilities API to create courses in Sensei via an AI client. So if you want to see how that&#8217;s going to work, go to the YouTube channel of Jon Bossenger. I definitely will share the link in the show notes about that. I also know that Ryan Welcher on his Twitch streams did quite a few experimentations with that lately. He&#8217;s doing his block development cookbook but afterwards he&#8217;s going to jump into AI again. But the previous editions definitely had some MCP and abilities API explorations there. That might be interesting for you because when you see an experienced developer kind of explore things and kind of also go detours. Yeah. You get a better way of thinking for yourself and your head around things that work.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:09:59]: Many, many of them are also exploring it like it&#8217;s a new thing for everybody even if you are an experienced developer. So being able to sit there and as someone who&#8217;s talking through and working through it really helps you kind of feel it&#8217;s not just you that maybe.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:10:14]: Doesn&#8217;t understand.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:10:17]: We&#8217;re all trying to work out where everything goes and how this new world functions.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:10:22]: Yeah. You are not alone.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:10:24]: Yes. Which is what&#8217;s also exciting. And one of the things that&#8217;s also mentioned in the Roadmap is Gutenberg Phase three. A lot of the pieces in there, from the admin redesign to collaborative editing, all of and the Media Lab, which I&#8217;m so excited about. Media is one of my little pet things. But being able to have all of that work be looked at as well, is going to be very exciting.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:10:49]: Yeah, yeah. For sure. Absolutely. Yeah. All right. </p>\n\n\n\n<h3 class=\"wp-block-heading\">What’s Released &#8211; WordPress 6.8.2</h3>\n\n\n\n<p>What&#8217;s released? Well, just this week came out WordPress 6.8.2 maintenance release with about 15 block editor fixes as well as 20 core tickets. A full list of bugs is in the release candidate announcement. You get from the release post block editor features where some of the bigger problems with the navigation link some fixed the query loop bug that overrode the query inherit attribute. Yeah. So it&#8217;s a nice good bug fix maintenance release that makes life a little bit easier and squashes some bugs. </p>\n\n\n\n<h3 class=\"wp-block-heading\">Gutenberg 21.1</h3>\n\n\n\n<p>And that brings us to Gutenberg 21.1 release. There were a few enhancements in there. Do you want to take it on and kick it off?</p>\n\n\n\n<h3 class=\"wp-block-heading\">Enhancements</h3>\n\n\n\n<p><em>Tammie Lister</em> [00:11:40]: Yeah, I&#8217;m going to start with the block library, which is always a good place to start. It&#8217;s been around for a while, but it still is really good to kind of refine it. And the big pieces here really. Comments pagination had some unwanted block margin. Little things like this though feel like they&#8217;re small but they&#8217;re really significant for something that you. You go to time and time again having that unwanted margin and there&#8217;s little refinements and to me it shows maturity and that little refinement coming through. And then this navigation block. I actually was part of this piece with the sub indicator. This shows sometimes a small thing can feel. So it&#8217;s where the flip submenu. So the submenu indicates whether something has a submenu or not. And it wasn&#8217;t showing it, it wasn&#8217;t visually indicating. And it seems like something would be a very easy commit. It is not because it has a lot more implications in testing. So it shows in collaboration how we should have more extensive testing helps as well.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:12:45]: Yeah, yeah, I can see that. And for the bottom margin, if they are unwanted kind of and removed, I can see quite a few theme developers who. Who fixes that on their theme with custom CSS. Now they need to kind of also remove the custom cms.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:13:02]: Yeah.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:13:02]: To fix that.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:13:03]: So which is good. But it also shows that if you are making these. So. So one of the things I always suggest is have a kind of hacks file or at least a section so you know that you&#8217;ve hacked it. So you know you&#8217;ve worked around the system, not just kind of hide it within your theme. And it&#8217;s really important to notice these releases and check back if you possibly can with and kind of the last one here in the block Library is remove screencast.com embed block variation. So again, if something isn&#8217;t getting used as much, been able to take that away.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:13:35]: Yeah, absolutely. And well, they also need to take away the O embed part in Core, not only in Gutenberg there. Yeah, so and then there were some updates on the interactivity API that&#8217;s certainly interesting for developers who have actually explored that already. There&#8217;s now support for new router regions where you can click on and jump to and it supports also new styles and script models on the client side navigation. And it also starts using TypeScript for some of the helpers and some of the components or things. I call them modules. So you can better test it against and make sure that your code is compliant there. So the next thing is really exciting for me because I&#8217;m always. I hear a lot of plugin developers kind of talking about extensibility and now we have one block is actually really easy to extend and allow additional block variations. That&#8217;s the social icons block. </p>\n\n\n\n<p>Now you can add any other service that is not maintained by Core easily in a block variation easily. And the PR is 70261 if you want to jump on it has some nice instructions on how to do this. I also know that Justin Tadlock is working on a tutorial for the block developer for the developer blog. Not Block, blog. I&#8217;m really excited about it because I&#8217;m or it came to a good timing for myself. I&#8217;m working on a block theme for the good work times and we have the podcast there, and the podcast needs additional things in there like the podcast name and the description is one thing, but you also need additional social icons where you can subscribe to the blog and to the podcast. So I identified seven of them and of course only one of them is in Core and I need to create the other six of them. I did my first trial on it and it was fairly easy to do. It gets a little bit complicated when you have your own styling to it. But if you&#8217;re just going to push it into the Gutenberg interface and let the user style it or change color pretty much, then it&#8217;s fairly easy to implement.</p>\n\n\n\n<h3 class=\"wp-block-heading\">Bug Fixes</h3>\n\n\n\n<p><em>Tammie Lister</em> [00:16:00]: So I guess we move on to bug fixes now and then. Bug fixes. This is one of my favorite sections really because it means we&#8217;re just kind of cleaning up a little bit. So calendar block colors do not change between global styles and theme JSON things like that we spoke about like the theme fixing things, things like that, really, really important. Quality of life changes, and then social links allow icon size to be reset and on a theme. Jason Styles. That&#8217;s 70380. That is really, really important as well. Again, a Quality of Life. And you were talking about hacks. There probably has been a hack that you had to put in to kind of work around that as well.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:16:39]: Yeah. For both of them for the calendar blog as well as for the social links.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:16:42]: Yeah, I can imagine there&#8217;s like a not important for the second one.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:16:50]: Yeah. Yeah. I also came to accustomed to study the bug fixes because sometimes you run into bugs and say is it still there and. Or is it not? And all of them. Oh, it&#8217;s not there anymore. And it&#8217;s kind of really.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:17:03]: And then you can just clean up your bug file, right?</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:17:06]: Yeah. And you can clean up your brain with the workarounds. Not only the theme files but also the memory stuff. Yeah. And that is pretty much what I found interesting in the Gutenberg 21.1 there&#8217;s a whole changelog with tooling and documentation updates and the release post actually has all the change log in there. So you can read up about that. </p>\n\n\n\n<h3 class=\"wp-block-heading\">Gutenberg 21.2</h3>\n\n\n\n<p>And we&#8217;re coming to Gutenberg 21.2 and here we see already some changes to the Data Views. It introduces the per page sizes to control the available size of the items per page. So that is something that comes from the admin where you can say it&#8217;s kind of getting feature part on the WP admin view you can say okay, I want 50 things on my page. Please do this also on the new Data View. So that&#8217;s cool.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:18:04]: Yeah, I love this. This also and the kind of next release shows that Data Views is getting used by people because it shows that we need to improve it. I am someone that has been using Data Views in situations and they are great, but they are quite limiting. And it means the more potential you have, the more easily it is to use for an implement. And it also means more feedback. So that&#8217;s what&#8217;s happening and how and improvements are happening. So yeah, the more things like this, whenever you see Data Views or API, that&#8217;s what gets me very happy. I like the other fixes, but this sets us. It&#8217;s moving us forward. And I think sometimes a lot of this can feel hidden because it&#8217;s more like the infrastructure in the sense. But Data Views, data Forms and API work, it really just moves us forward.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:18:53]: Yeah. So can you share in what kind of situations you use the Data Views?</p>\n\n\n\n<p><em>Tammie Lister</em> [00:18:59]: I&#8217;ve been using a lot of experimental, so one of the big things I&#8217;ve been doing is anytime I&#8217;m creating a plugin that&#8217;s pretty much what I use for my interface at the moment. I am trying to not have the normal the interface we use. I&#8217;m trying to use the Data Views from now on because it&#8217;s the way we&#8217;re going. So it feels a lot more natural to do. It&#8217;s easy to do it on the front and you can do it on the back. You can choose how much you have a little bit depending on what you want to do. You may have to do wrappers, all those kinds of different things. So. But again through a lot of it&#8217;s through experimentation but through doing experimentation you find the limitations. So there was a ticket that there&#8217;s been a few people having a conversation. The limitation on settings for example tangent to Data Views you can&#8217;t have a two column necessarily under a particular situation but if you want to do that there needs to be bug fixes. So it&#8217;s by using and by finding out we need to use them in particular situations. So again this having per pages and the one after this improving inline all of these kind of things allow you to be able to start to implement in different ways.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:20:11]: Yeah, yeah. And I can also see that there&#8217;s. There&#8217;s two effects in there with starting now to use the Data Views. One is you get a lot of experiments and practice in it. So experience is kind of you try to adopt it, see how you fail or the system fails and then you can improve upon it. But the muscle memory that you build that you kind of get into the new API really pushes you forward when things then land in core.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:20:39]: And I was lucky enough, I think it was back in November. Goodness me, at Core Dev Days there was an awesome workshop in it and, and that it feels a long time ago now, but it felt kind of like it wasn&#8217;t early with Data Views but it kind of felt that it was earlier and. But that version feels very far away from the version that we&#8217;re getting to play with now and the version now it&#8217;s a lot less grumpy when you implement it. So I would encourage everyone just if you, if you&#8217;re gonna make something and you just want to experiment with it, just start playing with it and see about implementing it. There&#8217;s some great stuff on the developer blog about using it which is just easy to follow. I think it&#8217;s been recently updated. Unless you would know that I think it&#8217;s been updated or recently updated.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:21:29]: Yeah, I think one mom did a blog post about this. Yeah, yeah, yeah. The next one is. Do you want to take the next one too?</p>\n\n\n\n<p><em>Tammie Lister</em> [00:21:38]: Yes. So that&#8217;s a block library one. So the block library add open in app toggle. That&#8217;s like a one those like tongue twisters open in new tab toggle to navigation block sidebar. Okay, so this one, what I like about this is it shows a consistency of interface and actually it shows it even more so if you and I the nerd that I am, I like reading back into tickets and. And actually it shows that. So when it got implemented, one of the last comments is we need to roll this out places to make sure it&#8217;s consistent. So it&#8217;s adding a consistency but then it needs to be rolled out to make sure it&#8217;s consistent in other places. So the interface that we have is great. But if it&#8217;s not consistent. So yeah, that. That&#8217;s what it does. It puts it in the relevant place for where you need the information at the right time and then it&#8217;s rolling it out. So it&#8217;s. It&#8217;s a small quality of life thing. But these. That&#8217;s the type of thing we need to do with the editor interface at the moment.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:22:41]: Absolutely. Yes, absolutely. Because you cannot just say oh, I&#8217;m in a different context. Why is it not working like that. Yeah, yeah.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:22:49]: And. And thinking we now know where people are looking at the time. Like you can make a best guess. You can be like me kind of. But there is a language that is becoming and the language that is refining and then that means we can take some things away and we can really refine where things go.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:23:05]: Yeah, there was. So the next thing is what the format library that improves the inline image replacement workflow. I have not quite figured out what that does, but I&#8217;m just recently discovered the inline image. Again. I kind of was at the early on image block fan and not doing anything in line with images. But I like when you do icons in there or cannot because the whole paragraph works differently when you have an image in there and then you have to fiddle with it.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:23:37]: Yeah.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:23:37]: And so they. They improve the workflow. I&#8217;m not sure if that&#8217;s getting there. It&#8217;s getting there. Yeah. So if you are using inline images. Yeah. Check it out and see if it really helps you with getting around that.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:23:51]: So in the block editor. So this ticket says allow replacing the post locked modal component 70586 but if you kind of dig into this the too long don&#8217;t read is prep for collaborative editing work. So it&#8217;s basically providing a filter for that which is such an enticing kind of part of it. So in order to be able to build again like what we were talking about, we want all these things in 6.9 and 7, but we need some infrastructure. We need that extensibility and we need the foundations to be able to do that. You can&#8217;t just slap a layer on it and ta da. It just works. So we need all this infrastructure.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:24:29]: Yeah. And it&#8217;s also a shift in kind of approach of things. We have 20 years was only one person editing a post and now we need to get ready that multiple people adding a post. So all the lock things need to be a little bit moving from a.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:24:44]: Book to an iPad.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:24:49]: This was really a book to an iPad. The iPad is still one person using it.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:24:53]: Well, yeah, but it&#8217;s multiple layered.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:24:55]: Yeah, it definitely gets more complex. Yeah. When multiple people do things and when instead of one.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:25:02]: Yeah, that&#8217;s a tin can with a bit of string to a zoom. There you go. That&#8217;s a random analogy.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:25:12]: Yeah, that&#8217;s a good analogy. It&#8217;s like, it&#8217;s like from the caveman to the. Yeah, the Middle Ages. Yeah. Yeah. We have some changes in the components library and there&#8217;s now the date calendar and date range calendar components. They seem to have been missing and now they&#8217;re here. So you can use them for your interfaces when you do events, something like that, or scheduling things. So you have more components to work with and you don&#8217;t have to build them yourself.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:25:46]: But that&#8217;s also part of the design system which we need. Right. So part of it is again the first version. It&#8217;s best bet. It&#8217;s like we think we know, but it when in phase one, when we were building an editor now we needed all these components and all these pieces because we were building an editor, we were making paragraphs and headings. That&#8217;s what we were doing. And it&#8217;s not that anymore.</p>\n\n\n\n<p>It&#8217;s a kit that you can build anything you possibly can think of. So therefore it needs all the pieces of an interface kit to be able to extend so the components. And it&#8217;s now a question of that. Does it need everything? No, because that&#8217;s a lot to maintain. But it&#8217;s certainly if something is used frequently and is going to be like really required by the interface frequently, then it needs to have it. So having our own components or at least having something like native is really, really important.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:26:44]: Yeah. Especially now when they get to the. The whole new admin is built on components greater now.</p>\n\n\n\n<p><em>Tammie Liste</em>r [00:26:52]: And it also means that product makers can use those components a lot easier.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:26:56]: Lovely. Yeah. You don&#8217;t have to make decisions about interfaces anymore.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:26:59]: Yes. I was like, I need a calendar, I need it to work, I need an age.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:27:04]: What are the attributes?</p>\n\n\n\n<p><em>Tammie Lister</em> [00:27:07]: Yeah. And then I think often people like is. Oh, it&#8217;s always going to look. No, you can style it into your heart&#8217;s content. It can be pink with sparkles if you really want. Maybe don&#8217;t do that. But you. But that&#8217;s the thing of a component. You are getting the bones and the structure and the muscle. You aren&#8217;t necessarily getting the makeup.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:27:29]: But it&#8217;s a weird analogy day. Yeah. But it&#8217;s good. Yeah. Yeah. For the Interactivity API, maybe we kind of need to think about some of the knowledge is there. But the two additional PRs that came into good 20.1 will prioritize the custom. Click event handlers for full page navigation that&#8217;s now enabled and then also Preserve media. Preserve media attributes on the initial style sheet after client side navigation. So it&#8217;s a client side navigation. It&#8217;s a full page navigation that has been more stable on the. With the interactivity API. So router feature that was started last plugin released and now it&#8217;s coming. It came in an additional feature there.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:28:21]: And moving on from that and I&#8217;m just going to kind of have a note about API. We likely are going to see more APIs because we should. Because that then shows that you can extend. There&#8217;s been talk about should menus have something like that with the templates API we&#8217;ve seen with site editor sort post types alphabetically within the add template modal. That&#8217;s 70562. Again, all of these things before maybe we would have had something that wasn&#8217;t an API. But an API is a far better way of doing this. It&#8217;s a far more modern approach of doing this and it&#8217;s the proper way to do extensibility.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:28:57]: Yeah. And you have to know how you build it first before you can extend this. Yeah. Right.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:29:03]: So you have to.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:29:04]: Yeah, you have to know what.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:29:05]: What you&#8217;re going to build. And the thing is you can&#8217;t particularly to undertake an API because there&#8217;s a maintenance burden. And I think this is always something particularly like doing work in extensibility. Yes. You could support everything, but unless you have a time machine, that&#8217;s a lot. So really being considerate, particularly once you have an API of just how useful is that? How much of a burden is that going to support is really, really important.</p>\n\n\n\n<h3 class=\"wp-block-heading\">Bug Fixes</h3>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:29:35]: Yeah, absolutely. And we are in the bug fixes again. I like the first one that I want to point out that it&#8217;s the image box it preserves now the line breaks when the caption comes from the media library. So there was a disconnect. Yeah, absolutely. Where you have to do it twice. Why is this losing my. My line breaks and now I have to do it again. Yeah. So now it can do it automatically. It&#8217;s smart enough. And the same is fixed now with the RSS block. Some of the. Well, WordPress allows you to put markup into the title, but when the RSS block pulls in the title it displayed the raw coding instead of the. Yeah, now it kind of just strips it out and shows a very consistent title display in your RSS block for from other sites.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:30:33]: So this is in bug fixes, but it&#8217;s quite important. It&#8217;s enable support for showing individual block variations in style book.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:30:41]: Oh yeah, yeah. That&#8217;s pretty much my most favorite feature enhancement. I think it&#8217;s enhancement but it&#8217;s on a bug fix because you were trying to look to click on the style variations and it wouldn&#8217;t come so there was expectations enables it in the right.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:31:01]: Section is basically.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:31:06]: What happened was when you wanted to style the button block in your site in the styles, you were only able to style the default one. But when you clicked on the outline, you got back to the default one. You couldn&#8217;t style the outline. You had to use a theme JSON or some other JSON file for it or plugin for that. I don&#8217;t know how hard the fix was, but it&#8217;s there. I think that&#8217;s it. </p>\n\n\n\n<h3 class=\"wp-block-heading\">Gutenberg 21.3</h3>\n\n\n\n<p>So we&#8217;re coming for Gutenberg 21.3. Do you want to start out again because it&#8217;s your favorite pieces.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:31:38]: So the first section is Data views under enhancement. So again this really shows the data views are getting used and that&#8217;s too long don&#8217;t read. I guess this episode is these features are getting used by people and these feature getting therefore improvements and iterations and people working on them. So there&#8217;s two particular things to call out or there&#8217;s several things at least there&#8217;s add the data field type 70657, and then add group by field support to grid layout. So this is about grouping items by fields and allows you to organize amounts of data and extend layouts such as table layout in the future. So it&#8217;s setting that groundwork and allowing grouping and it also supports the data Field type. So it&#8217;s again setting up for something that you can do now and allowing you. And also it links in with the new calendar component. So it&#8217;s that kind of link in with the new components as well.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:32:36]: Yes. So it had a date type field, date time field type. And now there&#8217;s also a date field type that&#8217;s just a date here. It&#8217;s kind of. You need it for the events calendar in the ticket.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:32:49]: Yeah. It says filtering and editing features will be implemented in the future.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:32:53]: Yes. Yeah. And then for the block library, the cover block now supports a poster image. So users with large video file or slow Internet connection see still an image in there before the video loads. That&#8217;s kind of an enhancement for slower connections. Or if you do it locally and you can&#8217;t get the video from another place. Yeah, so that&#8217;s pretty cool. And then the post content block has now an add name selector, a tag name selector. That&#8217;s kind of the part where you identify semantic ways for the. For the cost. Post content. Is it a main content? It&#8217;s a section content. It&#8217;s an article kind of semantic thing. Missing words here. Tags, tags. HTML. Semantic HTML tags. I think the. The technical term for that is.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:33:44]: Yeah, there was one we haven&#8217;t called out, but I&#8217;d like to mention about layout. Adding max limit to row span and column in grid, which is a quality life, which I think is really important as well.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:33:55]: Excellent. Yeah. Oh yeah, here I see it. Yes, it&#8217;s absolutely. Yeah. And that also shows that there&#8217;s a work to be done on the Grid blog. And that might. Might be. It might not come to 6.9, but it&#8217;s definitely coming. It&#8217;s better. It&#8217;s back on people&#8217;s task list. Yeah. Under the bug fixing there was nothing really stand out for me.</p>\n\n\n\n<h3 class=\"wp-block-heading\">Bug Fixes</h3>\n\n\n\n<p><em>Tammie Lister </em>[00:34:18]: It just looks like a lot of quality of life and.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:34:20]: Yeah, well, some blocks good bug.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:34:22]: Fixing to me, which is. There&#8217;s been a lot of activity in this release which is really good and there&#8217;s a big section of quality and documentation, which always makes me happy.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:34:33]: Absolutely. So that was it. There was one. Oh, that&#8217;s what I was looking for. Yeah. There&#8217;s one that says remove public APIs for getting images. That has to do with the list view. That there are images in the. In the list view to identify some of the blocks. When you have a cover block that you see the image of that there was an implementation for that, but that is still experimental and there was a shift in how experiments are actually implemented in Gutenberg so people are not tempted to use experimental public APIs anymore. Yeah. So if you find that confusing. It definitely is, but it&#8217;s also for your own good, so to speak. For the good of the maintenance safety. Absolutely. For future safety. But of course, there&#8217;s an acknowledgment that there are plenty of experimental things still in Gutenberg that all have been used in production for many years. Yeah, that was it. That was the Gutenberg release. </p>\n\n\n\n<h3 class=\"wp-block-heading\">What’s in Active Development or Discussed</h3>\n\n\n\n<p>Now we have what&#8217;s in active development or discussed. We can certainly not talk about everything, but we wanted to talk about the update experiment Settings screens to use the data forms. There&#8217;s a PR by Fabian who said, okay, so Gutenberg has an experiment screen where you can check the on or off some of the experiments, like for the collaborative editing or for the grid layout for some forms. And he said, well, if we do want other people to use the data views, we probably should rewrite that experiment settings page in a Gutenberg. So I really love that initiative. Yeah.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:36:15]: Experiment should be experimental.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:36:19]: Say that again.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:36:21]: The experiment should be experimental.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:36:23]: Absolutely, absolutely. Well, a few plugin releases before Anne went through and actually gave some section headers in there. So they were not just added to the list and not kind of clustered together.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:36:37]: And that&#8217;s where there was a. Like, under certain circumstances the two column can be worked out. So that&#8217;s how we find out the limitations.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:36:45]: Right.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:36:45]: Like by using this, all these features again, we have to use them. This is what we&#8217;ve learned time and time again. They&#8217;re great, they&#8217;re amazing, but we need to use them, we need to implement them. Even we can&#8217;t put them in a beta and say, oh, just do some usability testing. No, we need to build with them. We need to get our hands dirty and need to see, oh my goodness, you can&#8217;t do this. Oh, this doesn&#8217;t work with this type of data. That&#8217;s what we need to happen. So using it in the plugin makes a lot of sense in a way that doesn&#8217;t cause a negative experience. And that page isn&#8217;t going to hopefully cause a negative experience.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:37:25]: Well, if you want to learn how to do this, yeah, that&#8217;s a kind of an interesting page to look at the code to learn from it and kind of say, maybe you can implement it in your own one page settings page.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:37:38]: It looks so much better when you look at it. You look at and no shade. Because at the time the settings pages were amazing in WordPress. But times have changed and looking at the two columns or the new Iterations. Even the single version is night and day. It really is.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:37:59]: Yeah. When you see the before and after, you see. Really see the difference. Okay, I want to live there. I don&#8217;t want to live there anymore. Yes.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:38:07]: I want to be there in that world. World has white space.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:38:14]: Yeah, the road has white space. A couple of days ago I showed my husband, he is also a programmer, but he is a programmer from the early database days. Yeah like a clipper and ebay and all that. And then he sees some of the. And he looked at the screen and said well what&#8217;s all the white space there?</p>\n\n\n\n<p><em>Tammie Lister</em> [00:38:43]: That was the thing like back then it costs, it cost bandwidth. Like every line was a cost. I remember when I learned you couldn&#8217;t have have large space taken up because it costs. Now it doesn&#8217;t. Now I just want all the space because it doesn&#8217;t. Well, it does cost, but it doesn&#8217;t cost as much now. It almost costs us more to not have it because it costs us like a negative user experience which is weird, wibbly, upside downy world to live in. But that&#8217;s what we have. Of course we don&#8217;t go too far to the extreme where you can actually implement it or use it because too much white space. Space is weird. But yeah, just be able to breathe in an interface.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:39:21]: Yeah. And. But it&#8217;s interesting that these visual DNA is still in. In some people&#8217;s minds. Right. That&#8217;s what that. What I kind of took away from it said go away, go back to your 90s, go back to your terminal.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:39:37]: Go back to your courier terminal.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:39:39]: No, he says why are you doing command line? Isn&#8217;t that so 80s didn&#8217;t we call go away with? Okay. So yeah, it&#8217;s interesting discussions in Pauli-Haack&#8217;s home. So we have a second thing that we wanted to talk about that&#8217;s the PR by Luigio Teschio and he is working on exploring template versioning to preserve active plugin and theme templates instead of letting it be overwritten by database. And I don&#8217;t know how that&#8217;s going to work. Have you looked at that?</p>\n\n\n\n<p><em>Tammie Lister</em> [00:40:18]: I haven&#8217;t really looked at it yet, but I&#8217;m really curious to follow it. And I think just exploring different ways of doing things is really interesting as well.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:40:28]: Yeah. So I leave that link in the.</p>\n\n\n\n<p><em>Tammie Lister</em> [00:40:31]: Call for feedback and thoughts on it, which is a really interesting perspective. I think real world use cases is something I was trying to think about and that&#8217;s the kind of feedback I would like to give and that&#8217;s what I&#8217;ll be going back to it with trying to add that type of thinking.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:40:48]: Excellent. Excellent. So, well, I guess we&#8217;re at the end of the show. This is it. And as always, dear listeners, thank you so much for being here. And if you want, you can leave us a review on any of your favorite podcast apps. And if you&#8217;re on Spotify, the review is you can also leave comments. So we can have a little conversation there as well, if you want to. But the show notes will be published on Gutenbergtime.com/Podcast. This is episode 119. If you have questions or suggestions or news you want to include us, 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> so, Tam, is there anything that you want our listeners to take away from it that we haven&#8217;t talked about?</p>\n\n\n\n<p><em>Tammie Lister</em> [00:41:35]: I think the big one is if you can start experimenting and exploring things like data views and data forms in your product, because now is the time to do that. And then start giving feedback, because there&#8217;s lots to come this year that you&#8217;ll be able to end early next year. So being able to, as you mentioned, start that muscle memory and start learning with it is really, really important.</p>\n\n\n\n<p><em>Birgit Pauli-Haack</em> [00:41:57]: Excellent. Yeah, that&#8217;s a great way to end this podcast episode. And thank you all for listening. Thank you, Tammie, for being here. And goodbye. And I&#8217;ll see you at WordCamp. Yes, thanks for having me. All right, take care. </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:\"Sat, 26 Jul 2025 15:23:55 +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:33;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"Gutenberg Times: WP-Admin Redesign, Block theme adoption — Weekend Edition 335\";s: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=40940\";s: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:86:\"https://gutenbergtimes.com/wp-admin-redesign-block-theme-adoption-weekend-edition-335/\";s: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:18505:\"<p>Hi,</p>\n\n\n\n<p>ICYMI, organizers of WordCamp US (WCUS) <a href=\"https://x.com/WordCampUS/status/1948389752274559339\">announced</a> Danny Sullivan, search liaison at Google, as the keynote speaker. It&#8217;s hugely relevant now that sites are dealing with decreasing clicks from search engines. The brilliant <strong>Rae Morey</strong> of <em>The Repository</em> has the skinny for you about <a href=\"https://www.therepository.email/googles-danny-sullivan-to-keynote-wordcamp-us-2025-as-speaker-lineup-begins-to-take-shape\">what else is happening at WCUS</a>.</p>\n\n\n\n<p>I am really getting excited for WordCamp US. Are you, too? <a href=\"https://us.wordcamp.org/2025/tickets/\">Did you get your ticket yet?</a> I would love to meet you and catch up! </p>\n\n\n\n<p>You might have to juggle family plans and necessities, though. You might need to get kids to school or enjoy the last summer camping trip over Labor Day weekend. Or you might be apprehensive about traveling to the US in general. All good reasons. And I will miss you. We can catch up afterward. <img alt=\"🤗\" class=\"wp-smiley\" src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f917.png\" style=\"height: 1em;\" /></p>\n\n\n\n<p>Enjoy this week&#8217;s updates. </p>\n\n\n\n<p>Yours, <img alt=\"💕\" class=\"wp-smiley\" src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f495.png\" style=\"height: 1em;\" /><br /><em>Birgit</em></p>\n\n\n<section class=\"wp-block-newsletterglue-group\" style=\"padding-top: 10px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; margin-top: 0px; margin-bottom: 0px;\">\n<div class=\"wp-block-group has-light-background-background-color has-background\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p><strong>Table of Contents</strong></p>\n\n\n\n<nav class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/wp-admin-redesign-block-theme-adoption-weekend-edition-335/#0-word-press-release-information\">Developing Gutenberg and WordPress</a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/wp-admin-redesign-block-theme-adoption-weekend-edition-335/#admin-redesign-abilities-api-and-routing\">Admin Redesign, Abilities API, and Routing</a></li></ol></li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/wp-admin-redesign-block-theme-adoption-weekend-edition-335/#0-p\">Plugins, Themes, and Tools for #nocode Site Builders and Owners</a></li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/wp-admin-redesign-block-theme-adoption-weekend-edition-335/#2-word-press-6-0-1-and-6-1-scheduled\">Theme Development for Full Site Editing and Blocks</a></li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/wp-admin-redesign-block-theme-adoption-weekend-edition-335/#3-building-themes-for-fse-and-word-press\">Building Blocks and tools for the block editor</a></li></ol></nav>\n</div></div>\n</section>\n\n<div class=\"wp-block-newsletterglue-showhide ng-block\" width=\"100%\"></div>\n\n\n<h2 class=\"wp-block-heading\" id=\"0-word-press-release-information\">Developing Gutenberg and WordPress</h2>\n\n\n\n<p>First-time release lead <strong>Aki Hamano</strong> made <a href=\"https://github.com/WordPress/gutenberg/releases/tag/v21.3.0-rc.1\">Gutenberg 21.3 RC available for testing.</a> </p>\n\n\n\n<p><strong>Tammie Lister</strong> and I included Gutenberg 21.1, 21.2, and 21.3 in our latest Gutenberg Changelog episode recording. We also talked about WordPress 6.9, the AI Team, and more. The episode will drop on your favorite podcast app over the weekend.</p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img alt=\"\" class=\"wp-image-40972\" height=\"185\" src=\"https://i0.wp.com/gutenbergtimes.com/wp-content/uploads/2025/07/Screenshot-2025-07-25-at-10.53.45.png?resize=652%2C185&#038;ssl=1\" width=\"652\" /></figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"admin-redesign-abilities-api-and-routing\">Admin Redesign, Abilities API, and Routing</h3>\n\n\n\n<p>Lead architect of Gutenberg <strong>Matias Ventura</strong> published two issues on GitHub for broad discussion of the next iteration of the Admin Design and tied together concepts of the Command Palette with the Abilities API. </p>\n\n\n\n<p>In <a href=\"https://github.com/WordPress/gutenberg/issues/70913\"><strong>Admin Materials and Surfaces</strong></a>, Ventura outlines the next iteration of the Admin redesign with screenshots. He breaks it down into three main building blocks. You can think of it like organizing a house:</p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Materials</strong> are like the rooms and spaces (the foundation, main areas, and pop-up spaces)</li>\n\n\n\n<li><strong>Concepts</strong> are like the furniture and appliances that go in those rooms (navigation menus, content lists, forms, etc.)</li>\n\n\n\n<li><strong>Screens</strong> are like how you arrange everything together for different purposes (living room setup vs. kitchen setup)</li>\n</ul>\n\n\n\n<p>The goal is to make WordPress&#8217;s admin area more flexible so users can customize their workspace, and plugin developers can create interfaces that fit naturally with the rest of the system. The updates need to ensure consistency, flexibility, scalability, and clarity across the entire admin and plugin experience. <a href=\"https://github.com/WordPress/gutenberg/issues/70913\"> To learn more details, consult the GitHub post</a>. </p>\n\n\n\n<p>In the <a href=\"https://github.com/WordPress/gutenberg/issues/70710\"><strong>Abilities &amp; Workflows Overview</strong></a>, Ventura outlines plans to create a unified system for handling keyboard shortcuts, commands, and AI-powered workflows. This would enable creating a &#8220;smart assistant&#8221; for WordPress that can help users accomplish tasks more efficiently.</p>\n\n\n\n<p>The post aims to show how contributors can connect these three things that are currently separate and also creates a shared language to discuss these concepts. </p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Abilities</strong>—Callable functions with well-defined descriptions, inputs, and outputs schemas that both humans and AI can understand and use</li>\n\n\n\n<li><strong>Workflows</strong>—Chains of abilities, possibly requiring user interaction via form controls along the way to accomplish complex tasks</li>\n\n\n\n<li><strong>Visual Workflow Editor</strong>—A drag-and-drop interface where users can create custom workflows without coding</li>\n</ol>\n\n\n\n<p>In short, the idea is to make it possible that you instead of manually creating a new page (going to Pages → Add New → entering title → setting up template), you could use a workflow that asks for the page title upfront, automatically creates it, and takes you straight to editing &#8211; all triggered by a single command.</p>\n\n\n\n<p>In his overview issue, <a href=\"https://github.com/WordPress/gutenberg/issues/70862\"><strong>Admin Redesign: A solid routing foundation</strong></a>, <strong>Riad Benguella</strong> shares insights from the site editor work and discusses plans to improve the admin dashboard&#8217;s structure by changing how pages load and connect. Using advancements from the performance team on speculative loading and view transitions, as well as various new libraries, should help the admin page load more quickly and smoothly and improve the developer experience for contributors as well as 3rd-party product builders. </p>\n\n\n\n<p>The challenging aspect is ensuring backward compatibility in WordPress so that thousands of plugins continue to function well while creating a new, faster foundation.</p>\n\n\n\n<p>All three GitHub issues are ready to be discussed with the larger site builder and developer community. It&#8217;s the moment to take part in the next iteration of the admin design by providing feedback and sharing use cases.</p>\n\n\n\n<p>In this week&#8217;s podcast episode, <strong>Tammie Lister</strong> makes a case to developers to work with the current iteration of DataViews and Data Form for plugins to become familiar with the approaches, develop muscle memory, and provide feedback on what doesn&#8217;t work yet to make sure it&#8217;s included in the following iterations of the Admin Design work. </p>\n\n\n\n<div class=\"wp-block-group has-light-background-background-color has-background\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><img alt=\"🎙\" class=\"wp-smiley\" src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f399.png\" style=\"height: 1em;\" /> The latest episode is <a href=\"https://gutenbergtimes.com/podcast/gutenberg-changelog-119-wordpress-6-8-2-and-6-9-gutenberg-21-1-21-2-and-21-3-releases/\">Gutenberg Changelog 119—WordPress 6.8.2 and 6.9, Gutenberg 21.1, 21.2, and 21.3 Releases</a> with Tammie Lister. </p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-no-vertical-margin\"><img alt=\"Tammie Lister and Birgit Pauli-Haack recording Gutenberg Changelog 119\" class=\"wp-image-40972\" height=\"184\" src=\"https://i0.wp.com/gutenbergtimes.com/wp-content/uploads/2025/07/Screenshot-2025-07-25-at-10.53.45.png?resize=652%2C184&#038;ssl=1\" width=\"652\" /></figure>\n\n\n\n<p class=\"has-small-font-size\"><em>If you are listening via Spotify, please leave a comment. If you listen via other podcast apps, please leave a review. It&#8217;ll help with the distribution.</em></p>\n</div></div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"0-p\">Plugins, Themes, and Tools for #nocode Site Builders and Owners</h2>\n\n\n\n<p><strong>Wes Theron</strong>, Automattic, published a new video to teach you how to  <strong><a href=\"https://www.youtube.com/watch?v=zU7JKgwnwjs\">use the Group Block</a></strong>. Besides adding a Group block to your canvas, he covered how you can nest multiple Group blocks and control them via the ListView. He also has tips on styling a group block, organizing your layout, and previewing it on mobile devices or locking it against accidental changes.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p><strong>Simon Cooke</strong> from Human Made put out an interesting piece called <a href=\"https://humanmade.com/full-site-editing/full-site-editing-vs-leading-page-builders-a-strategic-comparison/\"><strong>Full Site Editing vs. Leading Page Builders: A Strategic Comparison</strong></a>. He explains why going with Full Site Editing can be a game changer—it&#8217;s built right into the WordPress core. This means it&#8217;s generally faster, more secure, and way easier to manage when things get big. On the flip side, page builders can really bog things down and cause a headache with plugins, especially for larger teams.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p>The <a href=\"https://wordpress.org/plugins/view-transitions/\">View Transitions </a>plugin by <strong>Felix Arntz</strong> played the main character in <strong>Jamie Marsland&#8217;</strong>s video <a href=\"https://www.youtube.com/\"></a><a href=\"https://www.youtube.com/\"></a><a href=\"https://www.youtube.com/watch?v=eQu5UhWskuM\"><strong>This FREE WordPress Plugin Is a Must-Have for Every Website!</strong></a> It makes your WordPress site to feel faster, smoother, and more like a modern app. Marsland feels that anyone&#8217;s hardly talking about it.</p>\n\n\n<div class=\"wp-block-newsletterglue-showhide ng-block\" width=\"100%\">\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n\n</div></figure>\n</div>\n\n\n<p><strong>Joe Simpson Jr.</strong> gave a talk at <strong>WordCamp Monclair</strong>: <strong><a href=\"https://wordpress.tv/2025/07/25/a-journey-from-page-builders-to-blocks-in-wordpress/\">A Journey from Page Builders to Blocks in WordPress</a></strong> and it now available on WordPressTV. <br />If you’re still hanging on to the Classic Editor or those tried-and-true theme methods, you’re not alone—and this session is right up your alley. Simpson takes a leisurely stroll through a real-world site rebuild, sharing the bumps and surprises that come with moving from classic setups or page builders to full site editing with blocks. He&#8217;ll talk through how to pick the right tools for your needs, compare the different ways to build a site these days, and help you figure out when it might finally be time to make the switch. Simpson also even looks back at how Gutenberg has evolved over the years. Whether you’re new to WordPress or just a bit slow to embrace the changes, there’s something here for you.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"2-word-press-6-0-1-and-6-1-scheduled\">Theme Development for Full Site Editing and Blocks</h2>\n\n\n\n<p>Cloudways&#8217; <strong><a href=\"https://x.com/iiarehman\">Abdul Rehman</a></strong> set out to explain <a href=\"https://www.cloudways.com/blog/wordpress-hybrid-themes/\"><strong>WordPress Hybrid Themes: What They Are, Why They Matter, and How to Build One in 2025</strong></a>. He found<br />Hybrid WordPress themes are the best of both worlds—they mix old-school classic theme structure with cool new block features. You get more design freedom without ditching your old plugins or custom code. Perfect if you want flexibility but aren’t ready for a full block theme leap.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p>At WordCamp Montclair, <strong>Beth Soderberg</strong>—who’s been using blocks since the early days—shared <a href=\"https://wordpress.tv/2025/07/25/my-process-for-building-a-custom-wordpress-theme-in-2025/\"><strong>how she builds custom WordPress themes in 2025</strong></a>. She walked us through her current process of building a block theme. She talked about choosing base themes and explained how her tools and workflow have changed. Soderberg also broke down how she decides when to use the editor and when it’s better to dive into code, plus showed how blocks can handle page structure instead of relying on old-school templates. She wrapped up with some tips on setting up the site editor so it’s easy for anyone to manage a block-based site.</p>\n\n\n<section class=\"wp-block-newsletterglue-callout undefined not-color-set\" style=\"border-color: #f9f9e5; border-radius: 22px; border-style: solid; border-width: 0; padding-top: 20px; padding-bottom: 20px; padding-left: 20px; padding-right: 20px; text-align: left; margin-left: 0; margin-right: 0; margin-top: 0px; margin-bottom: 0px; background-color: #f9f9e5;\">\n<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 2025&#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. The previous years are also available: <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>\n</section>\n\n\n<h2 class=\"wp-block-heading\" id=\"3-building-themes-for-fse-and-word-press\">Building Blocks and tools for the block editor</h2>\n\n\n\n<p>If you found last week&#8217;s four-hour Block Development Cookbook video was a little too much to get started, <strong>Ryan Welcher</strong> began the work of slicing up the cookbook into individual recipes videos. Here is <a href=\"https://www.youtube.com/watch?v=K4COA6no19k\">his announcement video</a> and first recipe: <strong><a href=\"https://www.youtube.com/watch?v=ogf0qOAmkIo\">Save Time With This Block Binding Trick!</a></strong></p>\n\n\n<div class=\"wp-block-newsletterglue-showhide ng-block\" width=\"100%\">\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n\n</div></figure>\n</div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n<section class=\"wp-block-newsletterglue-callout undefined not-color-set\" style=\"border-color: #eeeeee; border-radius: 26px; border-style: solid; border-width: 0; padding-top: 20px; padding-bottom: 20px; padding-left: 20px; padding-right: 20px; text-align: left; margin-left: 0; margin-right: 0; margin-top: 0px; margin-bottom: 0px; background-color: #f3efe9;\">\n<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>\n\n\n\n<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>\n\n\n\n<p><img alt=\"GitHub all releases\" src=\"https://img.shields.io/github/downloads/bph/gutenberg/total?style=for-the-badge\" /></p>\n</section>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Questions? Suggestions? Ideas? </em><br /><em>Don&#8217;t hesitate to send <a href=\"mailto:pauli@gutenbergtimes.com\">them via email</a> or</em><br /><em> send me a message on WordPress Slack or Twitter @bph</em>.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<p class=\"has-text-align-center has-small-font-size\">For questions to be answered on the <a href=\"http://gutenbergtimes.com/podcast\">Gutenberg Changelog</a>, <br />send them to <a href=\"mailto:changelog@gutenbergtimes.com\">changelog@gutenbergtimes.com</a></p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Fri, 25 Jul 2025 23:19: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: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:34;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:84:\"Open Channels FM: Managing Team Growth and Delegation in WordPress Plugin Businesses\";s: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=103823\";s: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:91:\"https://openchannels.fm/managing-team-growth-and-delegation-in-wordpress-plugin-businesses/\";s: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:348:\"In this episode of WP Behind the Builds series, host Mark Westguard chats with Maarten Belmans of Studio Wombat to explore the ins and outs of running a WordPress plugin business. Maarten shares his journey from leaving a cushy IT consulting job to traveling Australia and launching his first WordPress plugin. The conversation covers how [&#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:\"Thu, 24 Jul 2025 13:22:10 +0000\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}s:32:\"http://purl.org/dc/elements/1.1/\";a:1:{s:7:\"creator\";a:1:{i:0;a:5:{s:4:\"data\";s:5:\"BobWP\";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:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:102:\"WPTavern: #178 – Adam Silverstein Explores Transformative Browser Features Impacting WordPress Sites\";s: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=197768\";s: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://wptavern.com/podcast/178-adam-silverstein-explores-transformative-browser-features-impacting-wordpress-sites\";s: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:79151:\"<details>Transcript<div>\n<p>[00:00:19] <strong>Nathan Wrigley:</strong> Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.</p>\n\n\n\n<p>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, how new, native browser features, are transforming what&#8217;s possible on the web.</p>\n\n\n\n<p>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 and paste that URL into most podcast players.</p>\n\n\n\n<p>If you have a topic that you&#8217;d like us to feature on the podcast, I&#8217;m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox and use the form there.</p>\n\n\n\n<p>[00:01:10] <strong>Adam Silverstein:</strong> So on the podcast today we have Adam Silverstein.</p>\n\n\n\n<p>Adam is a WordPress Core committer and works to fix bugs and improve modern web capabilities. He&#8217;s also a Developer Relations Engineer on Chrome&#8217;s Web Platform team at Google, and there he focuses on making the open web better for everyone.</p>\n\n\n\n<p>Adam is here to break down how the rapid evolution of browser technology can supercharge your WordPress sites. We are doing this by referencing his presentation at WordCamp Europe 2025, in which he covered multiple new features of browsers, which can be used by WordPress users to bring a variety of experiences to their websites. In many cases these are browser APIs and features, and are quietly redefining what&#8217;s possible on the web. From CSS powered popovers, and scroll driven animations, to speculative loading that speeds up your page transitions. Adam explains how these advancements are changing what&#8217;s possible for both developers and end users.</p>\n\n\n\n<p>The conversation sheds light on the collaboration between browser vendors, Chrome, Firefox, Safari, and Edge, through initiatives like Interop and Baseline, paving the way for more consistent and robust features across platforms.</p>\n\n\n\n<p>Adam also talks about practical topics central to the WordPress community, like how the Popover API and native CSS carousels reduce JavaScript bloat, make sites more accessible, and deliver a better overall user experience.</p>\n\n\n\n<p>He shares exciting new frontiers, such as browser-based image processing, powered by WebAssembly, which is paving the way for universal support of modern formats like AVIF and Ultra HDR, and even running AI locally in your browser, no API key or cloud server required.</p>\n\n\n\n<p>He provides concrete examples on how these technologies can be leveraged in WordPress via Core updates, canonical plugins, and Gutenberg experiments, with a special focus on how developers can get involved and offer feedback to help shape future web standards. Prepare to look at your browser in a whole new light, truly.</p>\n\n\n\n<p>Whether you&#8217;re a theme designer, plugin developer, or site owner simply curious about what&#8217;s next, this episode is for you.</p>\n\n\n\n<p>If you&#8217;re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you&#8217;ll find all the other episodes as well.</p>\n\n\n\n<p>And so without further delay, I bring you Adam Silverstein.</p>\n\n\n\n<p>[00:03:47] <strong>Nathan Wrigley:</strong> I am joined on the podcast by Adam Silverstein. Hello, Adam.</p>\n\n\n\n<p>[00:03:51] <strong>Adam Silverstein:</strong> Hello.</p>\n\n\n\n<p>[00:03:53] <strong>Nathan Wrigley:</strong> This is our second conversation. We had a conversation, I want to say four years ago, maybe more in San Diego, think. And at that point we talked about images, AVIF, WebP, those kind of things. We might get into that today.</p>\n\n\n\n<p>Adam&#8217;s been working with Google for many, many years. Making the web a faster place, I think is a fair way to sum up your career. Just tell us a little bit about yourself, just so that, because this is a fairly technical topic and you are honestly going to have to teach me an awful lot as we speak. Let us know what your credentials are, why people should listen to what you have to say.</p>\n\n\n\n<p>[00:04:21] <strong>Adam Silverstein:</strong> Oh, wow. Being a Googler is not good enough, huh? Well, I&#8217;ve been doing WordPress for a long, long time. I think I started, first started contributing back in 3.6. So I&#8217;m deeply involved in the Core project. I am a Core committer, which is something that I consider an honor, a privilege, and a responsibility. There&#8217;s not that many of us in the world, but I&#8217;m one of the people that actually commits code to WordPress.</p>\n\n\n\n<p>And I used to have my own run, my own agency, tiny me agency, but building sites for clients directly. Then I wound up at 10up. Learned to build enterprise sites, and work with large teams, and do a lot of planning. And then eventually made my way to Google where I&#8217;ve been doing developer relations work. I&#8217;m trying to educate developers and bring things like all these new APIs that I talked about in this talk, so that people can learn about it.</p>\n\n\n\n<p>[00:05:05] <strong>Nathan Wrigley:</strong> Have you been focused more or less entirely on WordPress, or are you in any way engaged with the Chrome team?</p>\n\n\n\n<p>[00:05:11] <strong>Adam Silverstein:</strong> Yeah. So our team kind of organisationally was under Chrome, like that was kind of where we sit. We worked with other, like I&#8217;ve worked with Drupal and TYPO3. So I&#8217;ve worked with some of the other CMSs out there, especially like the open source ones. So that&#8217;s kind of been in my purview, but I would say primarily focused on WordPress. That&#8217;s where I&#8217;ve had the most experience and am most comfortable.</p>\n\n\n\n<p>[00:05:32] <strong>Nathan Wrigley:</strong> It&#8217;s kind of interesting because on my computer, obviously I have a browser using Chrome, it&#8217;s kind of one of the most benign pieces of software that&#8217;s there, in that it doesn&#8217;t really have a task that&#8217;s assigned to it. I have a music editing piece of software, and I go there for that. And I have a video editing piece of software, and on it goes.</p>\n\n\n\n<p>[00:05:49] <strong>Adam Silverstein:</strong> Yes. And you&#8217;re running those in your browser.</p>\n\n\n\n<p>[00:05:51] <strong>Nathan Wrigley:</strong> Right. But also the browser is just this open thing, you know, you can basically do anything in it, and so incredibly powerful. And it feels like in the last few years it&#8217;s got way more powerful. But most of that is entirely hidden because I open it up and it looks broadly the same today as it did five years ago. You know, the UI may have changed a little bit.</p>\n\n\n\n<p>[00:06:13] <strong>Adam Silverstein:</strong> Right. But what&#8217;s changed is what you can do with it, right? So you talked about editing video or editing audio in your browser. Like, that was not something that was possible five or 10 years ago when we had blue links and HTML. And it was basically, we were publishing newspapers on the web. That was the limit of what we could do.</p>\n\n\n\n<p>[00:06:29] <strong>Nathan Wrigley:</strong> I have an app, it&#8217;s called Descript. I don&#8217;t know if you&#8217;ve come across it, but it&#8217;s a full audio, video editing suite entirely in the browser.</p>\n\n\n\n<p>[00:06:37] <strong>Adam Silverstein:</strong> And famously Adobe released Photoshop. Runs in the browser. The full Photoshop. Yeah, I mean it&#8217;s like mind blowing that that&#8217;s even possible.</p>\n\n\n\n<p>[00:06:45] <strong>Nathan Wrigley:</strong> So the capabilities of the browser have dramatically increased. And you&#8217;ve just done, or you&#8217;re about to do? Just done.</p>\n\n\n\n<p>[00:06:54] <strong>Adam Silverstein:</strong> Yes.</p>\n\n\n\n<p>[00:06:55] <strong>Nathan Wrigley:</strong> Okay. Firstly, how did It go?</p>\n\n\n\n<p>[00:06:56] <strong>Adam Silverstein:</strong> It went great. Packed room. I think people got something out of it. People gave me good feedback.</p>\n\n\n\n<p>[00:07:00] <strong>Nathan Wrigley:</strong> And it was called Modernising WordPress with New Web Platforms. And I&#8217;m just going to read a bit of the blurb that went with that. It says, WordPress is a powerful platform for building websites of all shapes and sizes. To truly thrive, WordPress is embracing the latest advancements in web technology. This talk will explore how developers and site owners can leverage cutting edge web platform capabilities to create next generation WordPress experiences. And then there&#8217;s a little bit more which mentions web APIs and so on and so forth. So that really is going to be the core of this discussion.</p>\n\n\n\n<p>Now, caveat emptor, dear listener, I have nowhere near enough knowledge to ask you these questions. But I&#8217;m going to hope that you are going to help me through it.</p>\n\n\n\n<p>So first stop then, let&#8217;s just go through a whole laundry list of these different APIs. What are some of the fun things that a browser can do now, that it couldn&#8217;t do previously?</p>\n\n\n\n<p>[00:07:53] <strong>Adam Silverstein:</strong> So in the talk, I sort of break it into three areas. There are features that help developers do things that maybe we could do, but we struggled or relied on heavy JavaScript libraries to do.</p>\n\n\n\n<p>There&#8217;s things that help users by creating better experiences on the web than we previously had the ability to do.</p>\n\n\n\n<p>And then the third category is things that previously were just impossible. Just things that we can now do, like running Photoshop in the browser, we mentioned that we could not do before.</p>\n\n\n\n<p>So I did not explore, this is not, the talk was not like an exhaustive list of all the APIs, but it was rather sort of a selection of ones that I thought were interesting. Most of them are new. They are sometimes available only in one browser, not in all the browsers. So they&#8217;re things that are coming to the web platform. Some of them were already on the web platform.</p>\n\n\n\n<p>So let&#8217;s go through them. I&#8217;ll see if I can remember them all. I have my little slide deck here.</p>\n\n\n\n<p>So in the category of helping developers, the first one that I talked about is this thing called the Popover API. So popovers are simply like dialogues or elements that you want to hover above the rest of the page content. And in WordPress we use these extensively in the admin. Like for example, the pointers that you get when you install a new plugin. Or if you open a dialogue, or even like mobile menus use a popover.</p>\n\n\n\n<p>And we have it in Gutenberg. And so we already have this technology, but it relies on JavaScript, and it&#8217;s actually surprisingly complicated to do a popover. You have to pay attention to always being at the highest level. And if there&#8217;s another popover, how do you handle that? And you have to make sure it&#8217;s accessible, so when the user hits the escape key, the popover closes.</p>\n\n\n\n<p>And if it&#8217;s a pointer that&#8217;s trying to point to a new feature, say in a menu, how do you handle when the user resizes the window and that element moves? These are very complicated things. And in JavaScript that means you&#8217;ve got a heavy library that&#8217;s running just to do this simple popover thing.</p>\n\n\n\n<p>So with this new CSS based popover API, you can create a popover with just a couple of lines in your code, and the browser takes care of all of the complicated parts of actually doing the popover.</p>\n\n\n\n<p>[00:09:49] <strong>Nathan Wrigley:</strong> So just pausing there for a moment. The whole power of CSS, I&#8217;m going to say three years, this has been capturing my attention. CSS seems to be able to do a load of programmatic things now that it didn&#8217;t used to be able to. So in this case it&#8217;s, I don&#8217;t know, it&#8217;s calculating the height of the viewport and figuring out is there another thing, how much further to move it down? All of this being handled natively in the browser.</p>\n\n\n\n<p>[00:10:13] <strong>Adam Silverstein:</strong> Exactly. And I think like your point is very true, like CSS capabilities have grown tremendously, and the ability to do sophisticated layouts. And all of these kind of feature things that typically might require JavaScript, now we can do directly in CSS, even things like calculations.</p>\n\n\n\n<p>So CSS is a programming language just like JavaScript, right? People like to poo poo it and and so forth, but it&#8217;s quite powerful. And a lot of these features that I&#8217;m talking about are based on CSS.</p>\n\n\n\n<p>[00:10:36] <strong>Nathan Wrigley:</strong> It&#8217;s kind of interesting, if the 18-year-old me was beginning again, I think CSS would be the thing that I would do first. I think I would learn that inside and out before ever looking at JavaScript. Because I you&#8217;ve got the foundation of modern CSS, and I know there&#8217;s a lot of W3C things that are still being decided and what have you, and obviously the browsers have got various different capabilities. But so much that we would&#8217;ve relied on for JavaScript is now capable with CSS, but unexplored I think by many.</p>\n\n\n\n<p>[00:11:08] <strong>Adam Silverstein:</strong> Right. So this feature popover is available in all the browsers. It&#8217;s in Baseline. So Baseline is the set of features that developers should be looking at for deciding what they can use. Baseline is a somewhat new concept, so people might not be aware of it. But it is basically a way of knowing which features are available on all the major browsers. So if you see a feature that is labeled Baseline, like in the MDN docs, that means it&#8217;s available on all the browsers. You can count on it as a developer.</p>\n\n\n\n<p>So in my talk, I covered a lot of APIs that are actually not in Baseline yet. They&#8217;re still in development. They maybe are available only in Chrome, or Chrome and Edge, or maybe Chrome and Edge and Firefox, but not Safari. As developer, those are the APIs you need to be a little bit wary of, right, because you wanna build something that&#8217;s going to work for everyone.</p>\n\n\n\n<p>In many cases, the API will gracefully degrade, it just won&#8217;t work in the non-supporting browser. But in the case of like a popover, if it is supported in all the browsers, so you&#8217;re safe to use it. If it wasn&#8217;t, you would need to have that JavaScript as a fallback. So some of these APIs are, you know, new and experimental, but the browser vendors are all planning on adding support for them. So I only choose APIs that actually browser vendors have indicated their support.</p>\n\n\n\n<p>[00:12:14] <strong>Nathan Wrigley:</strong> Can we just pause there a moment because I began my journey with the web, oh, Internet Explorer 5 kind of days. You probably remember the days as well as I do, and it was chaos, you know? I mean, really we had to try and fix a whole bunch of things that Internet Explorer did differently from all the other browsers. The browsers didn&#8217;t agree on almost anything. They went off in completely different directions.</p>\n\n\n\n<p>That, I&#8217;m going to say, over the last five or maybe more, maybe more like eight years, there seems to have been a real confluence of, and I don&#8217;t know if that&#8217;s done from like a senior management level, but it does seem like Mozilla is talking to Chromium, Chromium is talking to Safari, and a lot of the people seem to attend the same conferences and talk the same language. They may adopt it at different rates, but they&#8217;re all trying to get to the same point, the open web.</p>\n\n\n\n<p>[00:13:00] <strong>Adam Silverstein:</strong> Yes. And in fact, they&#8217;ve developed an approach to collaborate on this, and that is called Interop. So the Interop effort is sort of a group effort by all of the browsers to agree upon a set of features that they&#8217;re going to work on for each calendar year. So there&#8217;s Interop 2025, there&#8217;ll be one for 2026, and so forth.</p>\n\n\n\n<p>And these features are, they come from either the browser&#8217;s needs, what they want to build, or from developers. So there&#8217;s an open process where they open a GitHub repo each fall and developers can go and submit. And we&#8217;ve actually had some from WordPress that made it in and influenced what browsers do.</p>\n\n\n\n<p>So as developers are out there working, they&#8217;re finding pain points, they&#8217;re struggling to do this or struggling to do that, or it doesn&#8217;t work well in one browser. It works in one browser, but not the other. Interop is sort of the effort each year to come up with a set that the browsers agree upon working on. And those features hopefully all land in Baseline the following year.</p>\n\n\n\n<p>I remember those days very well, and that&#8217;s why we have things like jQuery, right? So we had all these libraries that were built with this promise of sort of normalising the capabilities. Now, you&#8217;re absolutely right, the browsers have realised this is a problem for developers and they&#8217;ve come together to form a standard, and that is the Baseline thing that I mentioned.</p>\n\n\n\n<p>So they&#8217;re always building new APIs on their own, and some of them will never make it into all the browsers, and they may go away or they may change. But if they make it into Baseline, you can be sure that you can use them. And that&#8217;s what&#8217;s different, right? We have this set of features that we can rely on.</p>\n\n\n\n<p>[00:14:21] <strong>Nathan Wrigley:</strong> I kind of feel we lost a decade somewhere of real productivity. You know, the browsers could have been capable of a whole lot more than they are now. I mean, we&#8217;re happy with where we&#8217;ve got, but it does feel like we lost, this proprietary approach to browsers really wasn&#8217;t in the best interest of anybody. But you can see how it grew out of Microsoft and all of these other organizations.</p>\n\n\n\n<p>I&#8217;m guessing that Google with its Chromium browser, Chromium based browser, the fact that that became utterly dominant was probably quite a pivotal point. You know, it was in the sort of eighties and nineties percent, adopted by 80 or 90%. I guess Google was able to push things through a little bit more.</p>\n\n\n\n<p>[00:14:59] <strong>Adam Silverstein:</strong> Perhaps, like they do often lead on features. I mean, I wouldn&#8217;t say they&#8217;re always the lead on features, sometimes Safari has a great idea and they want to develop it, and with Firefox as well. But they do have a huge effort going into it. And, you know, of course Microsoft famously adopted Chromium as the engine for Edge. And so Microsoft is actively contributing as well to Chromium, which is the core of Chrome.</p>\n\n\n\n<p>So yes, I think the dominance did allow them to sort of lead on features and have the other browsers sort of need to follow. If Chrome is going to ship a feature, everyone&#8217;s going to use it. But I don&#8217;t know if that&#8217;s always the case. You know, when you read these, I&#8217;ve read some of these proposals, you know, the browser vendors, they talk to each other in the open, right?</p>\n\n\n\n<p>So these aren&#8217;t like private conversations that are happening in a room somewhere. They are all into open source software. So they&#8217;re, you know, there&#8217;s a repo where like, for example, Chrome will come in and say, we&#8217;re working on this new API, we would like feedback from the teams building Mozilla and Safari about if this is a good feature, are you going to support this? And that&#8217;s like typically early in the process where they try to get that feedback so they know whether this is something that is likely to land in the platform.</p>\n\n\n\n<p>[00:16:02] <strong>Nathan Wrigley:</strong> I don&#8217;t really know whether it was the best thing for one browser to sort of win out, but it certainly seems now that the dust has settled, it seems that that was a fairly good thing to happen.</p>\n\n\n\n<p>[00:16:11] <strong>Adam Silverstein:</strong> Yeah, I mean, I think if we had only had one browser, that would not be good. I mean, Apple is definitely dominant on mobile in markets where iPhones are very popular.</p>\n\n\n\n<p>[00:16:21] <strong>Nathan Wrigley:</strong> North America, for example.</p>\n\n\n\n<p>[00:16:22] <strong>Adam Silverstein:</strong> Exactly. North America and Europe, I think as well. Although if you look at most of the world, it&#8217;s actually Android that is far more dominant. So that&#8217;s where Chrome gets a big percentage of its users because Android is the default browser there, just as Safari is the default browser on iOS devices</p>\n\n\n\n<p>[00:16:35] <strong>Nathan Wrigley:</strong> I guess there was the whole Chromebook thing as well with, you know Google trying to promote this idea of a browser computer, for want of a better word.</p>\n\n\n\n<p>[00:16:43] <strong>Adam Silverstein:</strong> Chrome OS.</p>\n\n\n\n<p>[00:16:44] <strong>Nathan Wrigley:</strong> Yeah, Chrome OS exactly. And but the idea that, when it first came out, I remember looking at Chromebooks and thinking, yeah, it&#8217;s intriguing. It can do Google Docs, but where&#8217;s the video editing? Where&#8217;s the audio editing? I&#8217;m guessing like a modern Chromebook is a full swap out for a, it just doesn&#8217;t have the physical storage memory in some cases.</p>\n\n\n\n<p>[00:17:01] <strong>Adam Silverstein:</strong> It doesn&#8217;t have any. It&#8217;s, well, I mean, it has some for caching, but basically you log in and that&#8217;s your computer. Someone else logs in, it&#8217;s their computer. It&#8217;s fully in the cloud.</p>\n\n\n\n<p>[00:17:09] <strong>Nathan Wrigley:</strong> It&#8217;s pretty amazing.</p>\n\n\n\n<p>[00:17:10] <strong>Adam Silverstein:</strong> Although I will say, I bought a cheap Chromebook, like 150 bucks, refurbished, but I bought it to travel with so that I didn&#8217;t have to carry around my eight pound MacBook Pro. And because I&#8217;m a developer, I figured out how to do development work on it. You can install Linux on it and run, you know, Docker and all the things that you can do on a desktop machine.</p>\n\n\n\n<p>Does take some effort, like that&#8217;s not built in. But they are actually full computers, it&#8217;s just that the way the operating system is set up is this sort of cloud-based thing.</p>\n\n\n\n<p>But it&#8217;s quite, I think they&#8217;re amazing honestly. And, like I said, very inexpensive and also like bulletproof. You never have problems with them because your whole world is basically the browser.</p>\n\n\n\n<p>[00:17:47] <strong>Nathan Wrigley:</strong> And it kind of boots in half a moment, and it&#8217;s so secure.</p>\n\n\n\n<p>[00:17:51] <strong>Adam Silverstein:</strong> Yeah. They&#8217;re fantastic, and especially for like schools or corporate settings because it has all that management built in. I think they&#8217;re great computers. I would definitely recommend them, especially for people who don&#8217;t want to spend all the money that it takes to get, you know, and especially like you&#8217;re saying, everything&#8217;s in the browser these days. So there&#8217;s really, you don&#8217;t need a desktop computer to do most things.</p>\n\n\n\n<p>[00:18:10] <strong>Nathan Wrigley:</strong> Yeah. I think we painted a picture of the power of the browser, we&#8217;ve done well there. We got kind of hijacked a little bit. So you were talking about popovers, that was the first thing. Let&#8217;s return to that. What&#8217;s one of the other things mentioned?</p>\n\n\n\n<p>[00:18:20] <strong>Adam Silverstein:</strong> Next on my list is this Scroll Animations API. So this is animations like CSS animations that are either triggered or tied to a scroll event. So you could think about, like Slider Revolution has this feature in it, or you&#8217;ve seen it on like Apple&#8217;s website where you&#8217;re scrolling and as you&#8217;re scrolling an image is fading in or something is being revealed. Or another good example is like a reading indicator that Medium has at the top of the page as you scroll down.</p>\n\n\n\n<p>So we can do these things today with JavaScript, but it involves paying attention to the user scroll position, and this kind of heavy handed approach to monitoring the user. With CSS scroll driven animations, it&#8217;s just a couple of lines of CSS and suddenly you&#8217;ve tied an animation to scrolling.</p>\n\n\n\n<p>[00:19:01] <strong>Nathan Wrigley:</strong> So again, all handled by CSS, no need for a JavaScript library. Any impact in, I mean, these JavaScript libraries are famous for sort of bogging things down, tons of bloat and what have you. I&#8217;m guessing that because it&#8217;s shipping in the browser, that is minimal to say the least, almost non-existent.</p>\n\n\n\n<p>[00:19:17] <strong>Adam Silverstein:</strong> Yes, and the animations are CSS animations, so they&#8217;re not happening on the main thread. JavaScript famously has one main thread, and if you have something running on that main thread, it&#8217;s going to interfere with other JavaScript. So if you can get rid of some of the JavaScript on your website, that&#8217;s freeing up that thread for the other JavaScript that you have, that you want to do to track your analytics or to, whatever else you&#8217;re trying to do on your page with JavaScript. This is one less piece of JavaScript you need on your site.</p>\n\n\n\n<p>[00:19:42] <strong>Nathan Wrigley:</strong> The feature that you&#8217;ve just mentioned is something that I guess WordPress developers are going to be particularly interested in. They love all that stuff.</p>\n\n\n\n<p>[00:19:48] <strong>Adam Silverstein:</strong> Yes, clients love it. They love animations. And again, this is something that&#8217;s very lightweight, right? The argument against these types of animations is they&#8217;re typically very heavy.</p>\n\n\n\n<p>The other advantages of using CSS based features versus JavaScript is accessibility. Often these features, I mean this isn&#8217;t necessarily true with scroll driven, but like with the carousels, it&#8217;s got that accessibility built in. It&#8217;s got the escaping out of the dialogue.</p>\n\n\n\n<p>Again and again we see that, when you build something in JavaScript, I&#8217;m going to talk in a minute about CSS carousels. When you build it in JavaScript, if you want to make it accessible, there&#8217;s a lot of extra work that goes into doing that well. If the browser builds the feature in as like a fundamental, almost like an HTML component, then the expectation is the browser will take care of that for you. So as a developer, you won&#8217;t even have to pay attention to it.</p>\n\n\n\n<p>[00:20:36] <strong>Nathan Wrigley:</strong> I&#8217;m guessing that in the case of the one you&#8217;ve just described, that&#8217;s really easy to map onto this podcast because a WordPress user, they&#8217;re using a page builder or something like that. They&#8217;re going to have encountered these options, you know, somewhere buried in the settings for this image component is a fade in on scroll.</p>\n\n\n\n<p>And I&#8217;m guessing that in the future in WordPress, this might be some sort of toggle in a block, an image block or something like that. You&#8217;ll just switch it on, assign some characteristics to it like, I don&#8217;t know, fade to 50% at halfway through the viewport. And that will just create the CSS, but all done inside of a panel of a block.</p>\n\n\n\n<p>[00:21:11] <strong>Adam Silverstein:</strong> Yeah, I did exactly that as a pull request and have a link to that in my talk. Yeah, that&#8217;s a great example. It could be an image, it could be a header block.</p>\n\n\n\n<p>I guess one question I have as a Core committer is whether that is actually Core territory. We have this long standing philosophy in WordPress that it&#8217;s kind of the 80 20 rule that a feature that we land in Core should benefit 80% of users, otherwise it belongs in plugin territory.</p>\n\n\n\n<p>That said, one of the things we&#8217;re talking about now is this idea of canonical blocks. So there&#8217;s a lot of new blocks being proposed in Gutenberg right now, and the question is like, how many blocks do you actually want to ship with the editor? There&#8217;s a zillion different things you could think of building a block for, or a feature like animation, say for images like we&#8217;re talking about. But if it&#8217;s not valuable for all users, does it really belong in Core? And does it just overload the list of blocks they have to choose from, or the list of features they have to choose from? Why not just let plugins extend it?</p>\n\n\n\n<p>The other idea, like I said is this idea of canonical blocks. So you could have a block that&#8217;s developed by the Core team, is supported by Core, and is directly installable in the admin, in a like clearly labeled way that this is a Core product. But actually not ship it with WordPress. So it&#8217;s something that you could install with one click. I mean, we actually haven&#8217;t defined exactly what a canonical block or plugin is, but this is sort of what my idea is. It&#8217;s something that&#8217;s like, you&#8217;re one step away from having it installed.</p>\n\n\n\n<p>[00:22:27] <strong>Nathan Wrigley:</strong> Yeah, it feels like a canonical plugin, at least feels to me like something which has the security guarantee of Core, plus the updating guarantee of Core. Basically if you install it, it&#8217;s going to work with the latest version of WordPress, plus the all the backwards compatibility. I kind of like the idea of, like Apple ship with things like iOS, like Core animations. A plugin which just enables the animations in Core blocks.</p>\n\n\n\n<p>[00:22:51] <strong>Adam Silverstein:</strong> Right. Like the capability might already be there. I mean, you know, so one of the other APIs that I talked about in another section is the Speculative Loading API. So this is a good example. And this is actually shipping in WordPress 6.8. And this is the ability for the browser to prefetch the resources for a page that a user is about to navigate to.</p>\n\n\n\n<p>And in WordPress, we shipped it in the most conservative mode possible, which essentially is the user needs to click down on the link, and then before they let go of their mouse, so the time between the mouse down and mouse up event is when the browser is prefetching the resources for that link.</p>\n\n\n\n<p>So if the user clicks down on the link, we&#8217;re very confident that they&#8217;re actually going to navigate. Although it is possible to drag away and not navigate. 90% of users are going to follow that link or more. And so the idea is not to waste prefetching for links that users never visit.</p>\n\n\n\n<p>However it is possible to configure this API in a more bold manner where it will, for example, prefetch links that you hover over, which is going to give you much more of a head start, but also a lower hit ratio where, you know, some people will hover over links and they never click on them. So it depends on your use case.</p>\n\n\n\n<p>So I&#8217;ve already seen, so we landed the API in WordPress at the very conservative level. There&#8217;s already a plugin out that lets users configure that API for their own site, so they can adjust the default settings.</p>\n\n\n\n<p>There&#8217;s another setting that&#8217;s even more aggressive where it actually pre-renders the page. And in that setting, it&#8217;s almost as if you&#8217;ve loaded the page you&#8217;re about to navigate to in another tab, and when you click the link, it&#8217;s like switching tabs. It&#8217;s an instantaneous transition. It&#8217;s like amazing.</p>\n\n\n\n<p>However, you know, if you&#8217;re pre-rendering every page a user hovers over, that&#8217;s going to be a huge additional load on your server. So there is a trade off there. But maybe you have like a large call to action button on your homepage that 50% of your users are going to click on. Go ahead and prefetch that. They&#8217;re going to get a better experience. You&#8217;re going to get a better conversion rate if that page loads faster.</p>\n\n\n\n<p>[00:24:45] <strong>Nathan Wrigley:</strong> if memory serves, this is a browser API, Speculation Rules API and everybody&#8217;s got it switched on in 6.8 and beyond. But it&#8217;s in conservative, and it&#8217;s prefetch not pre-render, it&#8217;s click. And honestly, the chances of you not wishing to get to that page are pretty, like you say, you could slide away. But yeah, if you were to download the speculation rules, I can&#8217;t remember what the name of the plugin is. Anyway, the plugin, the option there is to do things like pre-render, or hover. And then, yeah. You could get into a real mess with the server and, you know, just wasteful.</p>\n\n\n\n<p>[00:25:23] <strong>Adam Silverstein:</strong> Yeah. If you, especially if you&#8217;re on like a light end server, but maybe you want that, like the most important. Like, let&#8217;s say you have an e-commerce store and you&#8217;re really trying to get people to add things to your cart. You know, there&#8217;s all kinds of studies that show that if your pages load faster, and it&#8217;s even buy like things like a hundred milliseconds, the conversion ratio is much higher. People are quick to abandon slow sites. I mean, there&#8217;s all kinds of data on that.</p>\n\n\n\n<p>So you may decide it&#8217;s worth investing the additional resources and dedicated hosting and caching so that you can prefetch and pre-render and get that faster navigation. This API enables that type of navigation that is, you really can&#8217;t get that without this API because it&#8217;s basically letting the browser know, it&#8217;s okay to like start loading resources before I even visit a page.</p>\n\n\n\n<p>[00:26:06] <strong>Nathan Wrigley:</strong> Yeah, I keep having this thought that at some point Chrome&#8217;s going to come up with, it&#8217;s going to know a whole year in advance all pages that I wish to visit and just load them all for me.</p>\n\n\n\n<p>[00:26:15] <strong>Adam Silverstein:</strong> Well, I did actually an experiment with AI to see, like ask AI which link is the user most likely to click on? And I tried it both with just literally dropping the HTML of the webpage in the AI, as well as drawing a screenshot. And I tried it on a very simple page, so like a WordPress plugin page. There&#8217;s a large blue button that says download. Probably the most likely link that users will click on. But the AI was like very good at identifying that. So in theory you could imagine that the browser could actually predict into some degree what users, based on their behavior, are going to click on, or based on the layout of the site.</p>\n\n\n\n<p>[00:26:50] <strong>Nathan Wrigley:</strong> So this is a, curious new world in which we live, isn&#8217;t it? So there could be heuristics about what I&#8217;m literally doing with the mouse. So the mouse is, I don&#8217;t know, approaching a button. That&#8217;s a fairly strong indication. And also, I guess the speed.</p>\n\n\n\n<p>[00:27:05] <strong>Adam Silverstein:</strong> Yeah, if it&#8217;s paused over the button.</p>\n\n\n\n<p>[00:27:07] <strong>Nathan Wrigley:</strong> Right, or slowing down, the speed is sort of coming to a terminus. Yeah. This is all really interesting.</p>\n\n\n\n<p>The 6.8, the Speculative Loading in 6.8, what I really like about that is that there&#8217;s zero configuration. It just works. So it&#8217;s using this fabulous new feature of the browser, but also no technical knowledge whatsoever. Absolutely none. And it would hopefully just save you a bunch of, well, your visitors a bunch of time.</p>\n\n\n\n<p>[00:27:33] <strong>Adam Silverstein:</strong> Exactly.</p>\n\n\n\n<p>[00:27:34] <strong>Nathan Wrigley:</strong> Yeah. Fabulous. Okay, that&#8217;s another one. Any others?</p>\n\n\n\n<p>[00:27:37] <strong>Adam Silverstein:</strong> Oh my gosh, so many. We did touch briefly on CSS carousels, but let&#8217;s just cover that again. So over half of WordPress websites load some sort of slider or JavaScript library.</p>\n\n\n\n<p>[00:27:49] <strong>Nathan Wrigley:</strong> Like them or hate them, they&#8217;re there.</p>\n\n\n\n<p>[00:27:49] <strong>Adam Silverstein:</strong> Yes. And even if people don&#8217;t use them, they seem to load them because I don&#8217;t know if half of sites all have sliders, but in any case, this is a very popular feature for WordPress sites. And of course there&#8217;s many plugins out there that do this, and they all rely on a JavaScript library. There are several very popular ones. They&#8217;re very full featured libraries. They do all the things that you need for a carousel.</p>\n\n\n\n<p>Now we can do that with CSS, so you don&#8217;t need the JavaScript library. Now, there may be advanced features that the JavaScript libraries will be able to do that will add some functionality. But the goal of the CSS implementation is to basically be feature parity with what you can do now with JavaScript. So all kinds of carousels</p>\n\n\n\n<p>with buttons that you can click, with little indicators as to which slider, which image you&#8217;re on. You know, just all the features that you can imagine in a carousel. There&#8217;s a great demo site on the chrome.dev site of just like a zillion different carousels.</p>\n\n\n\n<p>[00:28:41] <strong>Nathan Wrigley:</strong> What does the DOM look like for that?</p>\n\n\n\n<p>[00:28:43] <strong>Adam Silverstein:</strong> It&#8217;s so simple. It&#8217;s like you have the images themselves, and you have a couple of pseudo elements like scroll marker, and there&#8217;s some for the scroll arrows. I don&#8217;t actually remember all the deals because I haven&#8217;t built one. But it&#8217;s all done using like CSS selectors essentially to indicate which elements are the control elements, and which elements are the target elements. And you can even do things like grouping them so that like when you hit the right arrow, it&#8217;s like a page of things moving back and forth, like several elements.</p>\n\n\n\n<p>Like I said, they&#8217;ve tried to address all of the features. And again, here you would be able to do a CSS based carousel, that means no JavaScript required, right? You don&#8217;t need to load that giant JavaScript library. It&#8217;s going to be immediately available, right? So JavaScript takes some time to load. It&#8217;s going to work more quickly. And it&#8217;s also hopefully going to have accessibility built in. So you don&#8217;t have to worry about if your JavaScript library is keeping up with accessibility standards. It&#8217;s going to be a standard web component.</p>\n\n\n\n<p>[00:29:36] <strong>Nathan Wrigley:</strong> Okay, okay. Of course. Yeah, if everybody&#8217;s implementing the same thing, it&#8217;s not this weirdy JavaScript thing that you downloaded from somewhere.</p>\n\n\n\n<p>And okay, another question about, just sticking on that one for a moment. Will that be performant in the sense of, I don&#8217;t know, if I&#8217;ve got a carousel of 15 images, will the 15th one be loading at the moment.</p>\n\n\n\n<p>[00:29:56] <strong>Adam Silverstein:</strong> Lazy loaded?</p>\n\n\n\n<p>[00:29:57] <strong>Nathan Wrigley:</strong> Yeah, exactly.</p>\n\n\n\n<p>[00:29:57] <strong>Adam Silverstein:</strong> You would hope so, yes. I mean, I think in general it will be more performant than a JavaScript implementation. Unless the JavaScript implementation is doing some magic that the browser&#8217;s not aware of, like lazy loading. I think that is, will be built in. But you, again, don&#8217;t have that JavaScript running on the main thread doing the actual animations. All the animations are CSS animations.</p>\n\n\n\n<p>[00:30:16] <strong>Nathan Wrigley:</strong> It&#8217;s kind of curious because that example, I&#8217;ve always liked how they look but I&#8217;ve always been persuaded that it&#8217;s the wrong thing to implement because of the JavaScript bloat, the inaccessibility. So they kind of went into that pariah status for a while. But if done right, there&#8217;s absolutely no reason not to implement it.</p>\n\n\n\n<p>[00:30:36] <strong>Adam Silverstein:</strong> Yeah. And I think, you know, like you said, clients love them, they&#8217;re very popular. I think one of the arguments that I&#8217;ve heard about them is that data shows that most users never navigate beyond like the second image. So there is sort of questionable value there, especially if you&#8217;ve got one that say has 30 images in it on your homepage. Maybe that&#8217;s not such a great idea.</p>\n\n\n\n<p>But maybe if you have three products that you want to feature at the top and you don&#8217;t know how to feature them all, a slider is a good way to have three things that the user can see all in the same space. So I think they have their uses, but I think there is the sort of resistance to using them from developers is based on solid data.</p>\n\n\n\n<p>[00:31:09] <strong>Nathan Wrigley:</strong> It&#8217;s interesting as well because given, I don&#8217;t know the, bad reputation they have, it&#8217;s kind curious that that got made.</p>\n\n\n\n<p>[00:31:16] <strong>Adam Silverstein:</strong> Right. So this actually brings us to a good point. Where do the browser vendors come up? Why are they building these things right? So the reason they decided to build CSS Carousel is this is an area that developers have struggled with.</p>\n\n\n\n<p>Like I said, there are several libraries that are well established that have built really good sliders, but that&#8217;s taken a long time, right? And they still have accessibility challenges.</p>\n\n\n\n<p>This is something that a lot of developers want to build, their clients are demanding it, and they&#8217;ve typically struggled to actually build something quality. So this is the impetus for a lot of these features that I talked about is places that developers are struggling. And that Interop project that I mentioned earlier, that&#8217;s where developers can give their feedback to the browser vendors about which features they feel are lacking.</p>\n\n\n\n<p>That was the sort of like the last question of my talk was to developers, what are you struggling, what are you constantly using JavaScript for? What are you finding that&#8217;s still incompatible between browsers? Because I think that&#8217;s actually really important to get feedback from developers. The browser builders are in a room somewhere, they&#8217;re doing their thing. You know, they&#8217;re not out here building WordPress websites, so they&#8217;re not building Gutenberg. So we as developers have a responsibility to give feedback to the actual browser vendors so they know what we need, what we&#8217;re struggling with.</p>\n\n\n\n<p>[00:32:27] <strong>Nathan Wrigley:</strong> You may not know the answer to this question, but does Chrome in a default setup where I install Chrome and then just click yes, yes, yes to everything that I&#8217;m asked. Does it provide heuristics back to Google about things like that? There&#8217;s millions of people interacting with carousels, for example.</p>\n\n\n\n<p>[00:32:44] <strong>Adam Silverstein:</strong> I&#8217;m going to say, well, going to say no because they&#8217;re, Chrome does collect data, but you have to opt in. By default, you would not have that box checked.</p>\n\n\n\n<p>[00:32:51] <strong>Nathan Wrigley:</strong> But it is possible.</p>\n\n\n\n<p>[00:32:52] <strong>Adam Silverstein:</strong> Yes. And many people do. Many people do provide that. And most of that data is available publicly. So that data is anonymised and then made available publicly as part of the CrUX, the Chrome user experience data set. And that&#8217;s an open public data set that you can query using BigQuery. If you have a website or a product that&#8217;s very popular, you can get amazing data about how many sites are using it, about the performance of those sites, about growth over time. There&#8217;s all kinds of data out there.</p>\n\n\n\n<p>Of course, again, it&#8217;s a subset of the web. It&#8217;s not every website on the web because there&#8217;s a privacy concern about this data. So the only data that&#8217;s reported is when the pages or sites have enough visitors that you couldn&#8217;t track back to individual users. So it is a limited data set. Small sites with low traffic won&#8217;t appear in it. However, it&#8217;s incredibly valuable. And if you build a popular plugin, for example, this is a great way for you to gather data about how your plugin is being used, because some of the sites that install it will be in that data set and it&#8217;s public data.</p>\n\n\n\n<p>[00:33:51] <strong>Nathan Wrigley:</strong> Yeah. I&#8217;ll put a link to that in the show notes. That&#8217;s CrUX. CrUX. So that&#8217;s interesting. So there&#8217;s two routes there. There&#8217;s the heuristics provided by the browser if you opt in, but also it sounds to me like there are open channels communicating through people like you, if you&#8217;re a developer.</p>\n\n\n\n<p>[00:34:04] <strong>Adam Silverstein:</strong> Like me, or like the Interop process that I mentioned earlier, where they open up a GitHub repo each year and you can just open an issue saying, here are the things that we&#8217;re struggling with. And I mentioned like Gutenberg actually did that.</p>\n\n\n\n<p>For a couple years I was posting on the WordPress blog, hey, Interop is open, let&#8217;s give feedback. We did have one, at least one year where the Gutenberg team went in and made a long list of things that where they found incompatibilities. And some of those made their way into actual interrupt tasks. So it is incredibly valuable to give that feedback. And the browsers want to know, they want to build products that developers like to use.</p>\n\n\n\n<p>[00:34:36] <strong>Nathan Wrigley:</strong> Okay. next, if there is a next.</p>\n\n\n\n<p>[00:34:38] <strong>Adam Silverstein:</strong> Oh yes. Okay, so now we&#8217;re getting into, I think I hopped around a little bit, but the next section was about improving user experience. So the first one is actually a really simple one that I think is really cool. It&#8217;s customisable select.</p>\n\n\n\n<p>[00:34:49] <strong>Nathan Wrigley:</strong> Oh, so good.</p>\n\n\n\n<p>[00:34:50] <strong>Adam Silverstein:</strong> Yes. So the select element traditionally has been rendered by the operating system. And that means, so if you have a select list, like a dropdown, you&#8217;re going to see a bunch of words and you&#8217;re going to be able to scroll through those. But if you want to make it more visual, say add some images or icons next to each word, you really couldn&#8217;t do that. If you wanted to do that, you&#8217;d reach for a JavaScript library that would render the select element graphically, but wasn&#8217;t really a select element.</p>\n\n\n\n<p>So this is the ability to actually put HTML inside your select elements. So a great example of that is icons and images in the dropdown. So, for example, I gave a lot of different examples of how we can use this in WordPress Core, but one is in the media library where we filter by media type. We can add like nice little icons. So if you&#8217;re looking for, you know, the videos, you get a nice little video icon. It just makes it easier for users to find what they&#8217;re looking for.</p>\n\n\n\n<p>And again, this is still a semantic select element, so it&#8217;s going to be accessible just like a regular select element. If the browser doesn&#8217;t support this feature, it&#8217;s just going to fall back to a regular select element.</p>\n\n\n\n<p>It&#8217;s also going to autofill correctly, right? So another example I gave was a currency selector that adds flags for the country of the currency. A nice, helpful thing. If your browser knows that you use the Euro, it&#8217;s going to select the Euro because autofill is this great technology that helps us select things that we always select. But if it&#8217;s a JavaScript do hickey, the browser has no idea what&#8217;s going on inside there, so autofill will not work correctly. So it has some real key advantages over traditional, you know, the way we would build these before. Now we can just do full on HTML select elements.</p>\n\n\n\n<p>[00:36:21] <strong>Nathan Wrigley:</strong> It&#8217;s the kind of thing that once you&#8217;ve seen it, it&#8217;s like, why.</p>\n\n\n\n<p>[00:36:25] <strong>Adam Silverstein:</strong> Why didn&#8217;t that exist before?</p>\n\n\n\n<p>[00:36:27] <strong>Nathan Wrigley:</strong> Because we just have the OS. It just looks like an OS selector. So on my Mac, it looks like a Mac. On my phone, it looks like Android, whatever that would be. Which leads me to that actually. So on the phone, same experience because it&#8217;s not stepping outside of the browser. if I&#8217;ve got those flags, for example, or I&#8217;ve got coloured backgrounds or rounded corners or whatever it may be, Because it&#8217;s not reaching out to the OS to create this select, it&#8217;ll work on any device.</p>\n\n\n\n<p>[00:36:53] <strong>Adam Silverstein:</strong> Right.</p>\n\n\n\n<p>[00:36:54] <strong>Nathan Wrigley:</strong> Nice.</p>\n\n\n\n<p>[00:36:54] <strong>Adam Silverstein:</strong> And it&#8217;s CSS controlled, right? So you could do a different mobile implementation than your desktop implementation.</p>\n\n\n\n<p>[00:36:59] <strong>Nathan Wrigley:</strong> Yeah. I mean, it&#8217;s profoundly brilliant when you see. I&#8217;ll put some links to some demos somewhere into the shownotes.</p>\n\n\n\n<p>[00:37:06] <strong>Adam Silverstein:</strong> You know, I&#8217;ve got several pull requests open both in Core and in Gutenberg to add these features into the select elements that we already have. It&#8217;s kind of a simple enhancement. And again, like if your browser doesn&#8217;t support it, you don&#8217;t really, there&#8217;s no harm, right? You don&#8217;t benefit from the feature, but you don&#8217;t lose anything either. I love that one. You know, I&#8217;m hoping that form plugins in our ecosystem will adopt it.</p>\n\n\n\n<p>[00:37:25] <strong>Nathan Wrigley:</strong> Oh, no doubt. I mean, why wouldn&#8217;t you, basically? that&#8217;s a brilliant one. Thank you. Next.</p>\n\n\n\n<p>[00:37:30] <strong>Adam Silverstein:</strong> Another one that, this one actually pairs really well with the Speculative Loading API and it&#8217;s called, the View Transitions API.</p>\n\n\n\n<p>And this one is really cool because it basically turns your static website into a, kind of a fluid app-like experience. And in the slide deck, I have this great demo video of just a classic theme, where the users just clicking through to different pages. So you&#8217;re on say, the archive list and you&#8217;ve got a list of titles. And you click on a title and it&#8217;s going to take you to the single post page. And what happens is the browser actually navigates between those two states. So you see the title that you just clicked on, grow and expand, and it winds up in the position where it will be on the page you&#8217;re navigating to.</p>\n\n\n\n<p>Same thing like with the featured image. Let&#8217;s say you have featured images and those appear in a list and you click on the featured image, the image will grow to where it&#8217;s going to be in the final position. So it creates a smooth animation between the different pages of your site, or states of a single page app.</p>\n\n\n\n<p>And these are again, CSS animation, so you can control them. It has an auto mode where it picks the animation for you, so you really can do a very, just few lines, and get this effect working, but you can also customise it. So if you want the page to say scroll left when you hit the next button and scroll to the right when you hit the back button, you can implement it that way.</p>\n\n\n\n<p>[00:38:45] <strong>Nathan Wrigley:</strong> So the place I&#8217;ve seen this before really is on mobile applications.</p>\n\n\n\n<p>[00:38:48] <strong>Adam Silverstein:</strong> On apps. You see it on apps, right. Because it creates this fluid experience. We are used to on the web this idea of, you click on a link and then there&#8217;s kind of like a little bit of a wait. Then boom, there&#8217;s a refresh and the next page starts loading. And this kind of bridges that gap. It&#8217;s something that changes how users perceive your website. It doesn&#8217;t really change what&#8217;s loading. It&#8217;s the same before and after states. What it&#8217;s doing is creating that transition between the two states.</p>\n\n\n\n<p>[00:39:12] <strong>Nathan Wrigley:</strong> It feels more like you&#8217;re on a journey as opposed to these little stops along the way to get to the final destination. It just creates this sort of fluid, endless experience. And I believe, I think I saw one of your colleagues, Felix Arntz, I believe he&#8217;s got a plugin, like a feature plugin out.</p>\n\n\n\n<p>[00:39:30] <strong>Adam Silverstein:</strong> It is. It just shipped. It&#8217;s part of the Performance Lab plugin suite. So that is basically going to add a way for themes to just opt in. So we have a feature in WordPress where you can be, add themes support. And you can say, my theme supports this feature. So if themes opt in, they can just enable this API and just, you instantly get the navigations.</p>\n\n\n\n<p>We fortunately benefit in Core from a lot of consistent naming for things. Like the class names on titles tend to be consistent among all the Core themes. And even in the ecosystem, a lot of people have stuck to those standards. And that makes it really straightforward to sort of choose the correct elements for the transitions.</p>\n\n\n\n<p>Because part of setting this up is you sort of need to tell the browser, this is the title element. On the previous page, this is the title element on the next page. I want you to navigate between those two. And fortunately, at least for the Core themes, that&#8217;s pretty standard to do. So there is a pretty straightforward way to like implement it across all the core themes.</p>\n\n\n\n<p>[00:40:23] <strong>Nathan Wrigley:</strong> I just want to remind the listener that, you may have got lost, we&#8217;re not talking about WordPress per se. We&#8217;re kind of talking about what the browser enables WordPress to do. So these view transitions, of course they can be implemented by a WordPress website, but it is in effect the browser that&#8217;s doing the hard work here.</p>\n\n\n\n<p>You don&#8217;t have to be tied to WordPress, you could do this in HTML and CSS if you so wish to do it. But it&#8217;s easy to imagine that this is some clever JavaScript thing that somebody&#8217;s implemented in WordPress. And it&#8217;s just not that. This is just happening inside the browser.</p>\n\n\n\n<p>[00:40:53] <strong>Adam Silverstein:</strong> No, these are all browser features and, yeah, the talk is kind of like, how do they apply to WordPress? How WordPress use them?</p>\n\n\n\n<p>[00:40:59] <strong>Nathan Wrigley:</strong> I can imagine a world in the future where this feature in particular will have been massively overused. You know, people will, like scrolling animations for the, you know, this grows and this shrinks, and let&#8217;s see how that&#8217;ll settle. But the implementations that I&#8217;ve seen are just magnificent. They give you that, I don&#8217;t know, I&#8217;m on my phone, I use a music app, and I go to the next song and somehow the little icon for that song grows in this nice fluid way. Things fade in and fade out. Text becomes bigger, and it&#8217;s all happening. And It just encapsulates the screen perfectly. It gives everything the perfect place. And instead of it being a moment where it all just changes, everything slides into place. And it just feels natural, and we&#8217;ve got it coming in the browser.</p>\n\n\n\n<p>[00:41:39] <strong>Adam Silverstein:</strong> It is amazing. Yeah. It&#8217;s, a pretty cool feature.</p>\n\n\n\n<p>[00:41:41] <strong>Nathan Wrigley:</strong> Yeah. Okay, next.</p>\n\n\n\n<p>[00:41:42] <strong>Adam Silverstein:</strong> Okay. So I did talk about what you mentioned, we talked about modern images before. So I did talk a little bit about modern image formats, just a kind of love of mine. I honed in on. HDR imagery. So we all, most of us have smartphones these days that actually take high dynamic range images, right? Previously we had standard dynamic range, but now all of our phones take multiple exposures and combine those to create an HDR image.</p>\n\n\n\n<p>We have long had the ability to save images in HDR with formats like AVIF, WebP supports it. However, the challenge comes when you upload those images to WordPress and then you try to use them on a standard definition monitor, an SDR monitor, right? So you&#8217;ve got an HDR image, but suddenly you&#8217;re displaying it on a monitor that can&#8217;t display HDR, and you have to sort of, re downsize it to that lower bit depth, and that degrades the image greatly.</p>\n\n\n\n<p>So there is a new format available that&#8217;s ISO standard, and it&#8217;s called Ultra HDR. And this is a combination of standard jpeg SDR imagery with a gain map metadata layer. So it&#8217;s a single image format that includes both the SDR data as well as the data required to render the HDR version of the image. So it&#8217;s a full HDR image when you view it on a monitor that can support it, but on a monitor that doesn&#8217;t support it, you can just use the SDR image, you don&#8217;t need to do some conversion to try to create that alternate image.</p>\n\n\n\n<p>[00:43:09] <strong>Nathan Wrigley:</strong> I&#8217;ve never heard of this, so I&#8217;m going to try and parse it in real time. Let&#8217;s see how this works. So I&#8217;m imagining an image and I&#8217;m imagining like a CSS gradient over the top, There&#8217;s a bit of metadata which does something. The underlying image is unchanged, but there&#8217;s something gone over the top.</p>\n\n\n\n<p>[00:43:25] <strong>Adam Silverstein:</strong> Yes, it&#8217;s called a gain map.</p>\n\n\n\n<p>[00:43:27] <strong>Nathan Wrigley:</strong> Right, so gain mapping. And I can put that on, put that off. So it&#8217;s metadata transforming the image, but the image is the same.</p>\n\n\n\n<p>[00:43:33] <strong>Adam Silverstein:</strong> Yes.</p>\n\n\n\n<p>[00:43:35] <strong>Nathan Wrigley:</strong> Interesting.</p>\n\n\n\n<p>[00:43:35] <strong>Adam Silverstein:</strong> Yes. So I am a programmer and I deeply know about how WordPress media works, but I am not a photographer. However, there have been some great contributions from photographers who really know this space well. And they&#8217;ve come in and helped us on the media team really understand the challenges of handling these types of images and publishing them to the web, right?</p>\n\n\n\n<p>So I have a link in the slide to one of those guys and his photography website. He&#8217;s a software developer and a photographer. And he&#8217;s got like those sliders you can kind of see before and after and see what the difference is between SDR and HDR imagery. And you realise, oh my God, HDR images are amazing. So the point of this feature, or the thing that I&#8217;m talking about is to try to let people actually be able to use HDR images on their WordPress websites.</p>\n\n\n\n<p>[00:44:17] <strong>Nathan Wrigley:</strong> That&#8217;s fascinating. So a metadata layer living on top of an image, which visibly transforms it, but not just to add, I don&#8217;t know, to change the hue or the tint of it, to render a better image of a higher quality. Gosh that&#8217;s fascinating.</p>\n\n\n\n<p>[00:44:32] <strong>Adam Silverstein:</strong> Yep. So the challenge we have in WordPress is the ability to process these images. So in WordPress, when you upload an image, it goes to the backend, to the web server, and then we process it, we convert it to various sizes for different display sizes. So you get a different image when you&#8217;re browsing the site on a mobile or a desktop or a high definition screen. We have all different sizes, and themes can add sizes.</p>\n\n\n\n<p>And all of that image processing happens using a couple of image processing libraries. GD and Imagick are the two that we support natively. Those libraries do not support the latest format, so Ultra HDR was maybe just added to Imagick. It will take years before that library, the new version of the library is actually available to WordPress sites. So even a format like AVIF that&#8217;s been around for quite a while now, is only supported by 30% of WordPress servers. So only 30% of WordPress sites can actually upload AVIFs and get the full, you know, various sizes that they need.</p>\n\n\n\n<p>So that&#8217;s a limitation of the architecture of WordPress. And one of the next features that I talked about is something that will help us leapfrog that limitation. Browser based image processing. Exactly right. So what I&#8217;m talking about here is WebAssembly.</p>\n\n\n\n<p>So WebAssembly is the ability to run code that was written in another language like C or C++, that targeted a machine language, is meant to be run natively on the hardware. So that, for example, these image processing libraries, and also newer image processing libraries, can be run directly in the browser.</p>\n\n\n\n<p>And what this gives us the ability to do is ship the latest version of the image library directly with WordPress. We no longer have to rely on hosts doing the messy and difficult process of upgrading servers, very challenging thing for hosts to do, to get the latest version of the Imagick library. We can just ship that library directly in the browser. And that gives us the ability to make every WordPress site support AVIF, and it also gives us the ability to do things we simply can&#8217;t do today on the backend.</p>\n\n\n\n<p>A good example of that is converting gif or gifs to movies, right? This is a common performance recommendation. Gifs are very heavy. You convert them to a native video element and they behave just the same for users, but they&#8217;re much lighter because the compression is so much smarter. Can&#8217;t do that in WordPress right now. Neither of the image libraries support that ability. But there are image processing libraries that handle this, and we can run those directly in the browser.</p>\n\n\n\n<p>[00:46:52] <strong>Nathan Wrigley:</strong> Let me see if I&#8217;ve got this right. So in this world of the future, it&#8217;ll be possible, let&#8217;s say in the block editor, I drag in a, I don&#8217;t know, a jpeg or something, but I could convert that on the fly to an AVIF for example.</p>\n\n\n\n<p>[00:47:05] <strong>Adam Silverstein:</strong> Yes. Even if your server didn&#8217;t support AVIF.</p>\n\n\n\n<p>[00:47:06] <strong>Nathan Wrigley:</strong> Even if. So it&#8217;s literally in the browser.</p>\n\n\n\n<p>[00:47:09] <strong>Adam Silverstein:</strong> Yes</p>\n\n\n\n<p>[00:47:09] <strong>Nathan Wrigley:</strong> Okay. First thing is that quick.</p>\n\n\n\n<p>[00:47:11] <strong>Adam Silverstein:</strong> Well, okay, so it&#8217;s not quick on the backend either, right? But it is asynchronous, so you can continue working on your post while it&#8217;s happening.</p>\n\n\n\n<p>[00:47:18] <strong>Nathan Wrigley:</strong> Right. So you wouldn&#8217;t necessarily see anything.</p>\n\n\n\n<p>[00:47:20] <strong>Adam Silverstein:</strong> Right. You would that it was processing. And of course it would depend on how large your image is, how many subsized images you&#8217;re creating. But no, it&#8217;s not fast. It&#8217;s a slow process, but it&#8217;s a one time thing each time you upload an image.</p>\n\n\n\n<p>[00:47:31] <strong>Nathan Wrigley:</strong> That was next question. It&#8217;s a one time thing. So the movie thing that you just described, where you got the gif to a movie, again, a one-time thing?</p>\n\n\n\n<p>[00:47:38] <strong>Adam Silverstein:</strong> Yes.</p>\n\n\n\n<p>[00:47:39] <strong>Nathan Wrigley:</strong> So we upload it. In the background, asynchronously, it&#8217;s converting it, and then at some point it gets saved, I guess as a .mov file or something like that? inside the media library?</p>\n\n\n\n<p>[00:47:50] <strong>Adam Silverstein:</strong> And this is actually not some future technology you&#8217;ll be able to use someday. You can use this today by installing Pascal&#8217;s Media Experiments plugin. So my colleague Pascal has swisspidy as his handle, people know him by that. But he&#8217;s got the Media Experiments plugin, and that will let you do all these things that I&#8217;m talking about today. And it is experimental, so beta software, but, check it out because it really demonstrates what we can do.</p>\n\n\n\n<p>There&#8217;s also a PR already open in Gutenberg with a whole roadmap for landing this feature. It is already sort of an experimental feature in Gutenberg. So if you install the Gutenberg plugin and you go into experiments, you can actually enable this feature. I don&#8217;t think it has all of the things that he has in the plugin, but it has sort of the additional framework for it.</p>\n\n\n\n<p>[00:48:28] <strong>Nathan Wrigley:</strong> If I were, well, I am fairly non-technical, this is the kind of stuff I expect, I think. You just drag an image from any device of any kind into the editor, whatever that editor interface is be it Gutenberg or, you know, whatever. It should just handle that. You know, there shouldn&#8217;t be a proclivity for we prefer this thing or we prefer that thing. It should just do it and whatever output I want, I want it as an AVIF, I want it as a WebP. Okay. we&#8217;ll just transform it in the background. I know there&#8217;s a ton of technological milestones to be achieved and overcome with that, but that is, I think, the expectation. The web should just work like that. Everything should convert and be easy, and drag and droppable and, yeah.</p>\n\n\n\n<p>[00:49:10] <strong>Adam Silverstein:</strong> Yeah, and famously, several years ago, Apple started storing images in the HEIC format, which is a better compression than jpeg. However, it&#8217;s not a web safe format. I think Safari is the only browser that supports it. So when we upload HEICs to WordPress now, we do convert them to jpegs for users.</p>\n\n\n\n<p>However, that only happens if your server supports HEIC images. Again, we rely on the server libraries, and that statistic is very similar to AVIF. It&#8217;s about 30% of sites. Fortunately Apple does automatically convert them if you upload them from your phone. But people do get into this problem where they wind up with HEIC images on their desktop and they&#8217;re trying to upload them to their WordPress, and then it will get rejected if your server doesn&#8217;t support it.</p>\n\n\n\n<p>[00:49:50] <strong>Nathan Wrigley:</strong> Yeah, this whole thing of, I&#8217;ve got images. It&#8217;s an image. Well, it&#8217;s in the wrong format. It&#8217;s an image.</p>\n\n\n\n<p>[00:49:55] <strong>Adam Silverstein:</strong> Right? Why do I have to care?</p>\n\n\n\n<p>[00:49:57] <strong>Nathan Wrigley:</strong> It shouldn&#8217;t matter. Yeah, okay. That&#8217;s a perfect example. Okay, so images, anything else?</p>\n\n\n\n<p>[00:50:02] <strong>Adam Silverstein:</strong> The other one that I think is really cool that maybe people don&#8217;t know about is running AI directly in your browser. So there&#8217;s a great library called Transformers.js that lets you run a whole bunch of different models, kind of, it acts as an interface.</p>\n\n\n\n<p>So just like the large language models that we have online, like Gemini and ChatGPT. You can actually run smaller versions of those directly in your browser. And some of the advantages of that are the data is private. There&#8217;s no API key required, or cost to you to use these. You can ship an AI directly with your product. So imagine you have a software, a plugin that is designed for company bulletin boards. You don&#8217;t really want that data going out to some remote API, but you&#8217;d like to give users a way to summarise the conversation from yesterday. A language model running in your browser is capable of doing that.</p>\n\n\n\n<p>[00:50:49] <strong>Nathan Wrigley:</strong> Where does it live.</p>\n\n\n\n<p>[00:50:50] <strong>Adam Silverstein:</strong> It runs in the memory of the browser and it gets downloaded in cache. So there is a large download when you first start using it to actually download the model. And then it&#8217;s cached, with the browser storage APIs.</p>\n\n\n\n<p>[00:51:01] <strong>Nathan Wrigley:</strong> It&#8217;s persistent.</p>\n\n\n\n<p>[00:51:03] <strong>Adam Silverstein:</strong> It&#8217;s persistent, yes.</p>\n\n\n\n<p>[00:51:03] <strong>Nathan Wrigley:</strong> Okay. Switch the machine off, switch the machine on.</p>\n\n\n\n<p>[00:51:05] <strong>Adam Silverstein:</strong> Yes. It&#8217;ll stay cached in your, browser. Browser has the ability to store files.</p>\n\n\n\n<p>[00:51:08] <strong>Nathan Wrigley:</strong> I&#8217;m guessing the constraints around what it can do compared to, I don&#8217;t know, ChatGPT 4o or whatever is much more minimal.</p>\n\n\n\n<p>[00:51:15] <strong>Adam Silverstein:</strong> Significant. Right. This is in the browser, you&#8217;re probably going to get the performance maybe that you got out of the models a year ago or a year and a half ago. Remember when.</p>\n\n\n\n<p>[00:51:24] <strong>Nathan Wrigley:</strong> Oh not that bad then.</p>\n\n\n\n<p>[00:51:25] <strong>Adam Silverstein:</strong> Yeah. Not that bad, right? And you can imagine that a year or two from now, they&#8217;re just going to get better. And there have been dramatic improvements, and even like new approaches to how they&#8217;re doing them. So they&#8217;re getting quite good. They&#8217;ll never be as good as the large language models that are running in the cloud that have abundant resources.</p>\n\n\n\n<p>There&#8217;s also hybrid models, right, where you use the local version when that&#8217;s all you have available, your offline, say, for example. Or you have a more complex query, then it can go to the cloud. There&#8217;s different ways of approaching that. But you can build a hybrid system, but the point of, the ability to run it in the browser, is to actually be able to do everything locally, and not rely necessarily on a cloud provider.</p>\n\n\n\n<p>[00:52:00] <strong>Nathan Wrigley:</strong> It really feels at the minute as if Google is in a big pivot towards AI.</p>\n\n\n\n<p>[00:52:06] <strong>Adam Silverstein:</strong> Absolutely.</p>\n\n\n\n<p>[00:52:07] <strong>Nathan Wrigley:</strong> In fact, it kind of feels like if you were to describe it as a race, it feels like Google is kind of nudging ahead at this moment in time. I just watched some of the bits and pieces from Google IO.</p>\n\n\n\n<p>[00:52:16] <strong>Adam Silverstein:</strong> Yes. Really impressive.</p>\n\n\n\n<p>[00:52:16] <strong>Nathan Wrigley:</strong> It was pretty profound in many respects. But also, can you constrain that AI? So for example, could I limit it to one, well, let&#8217;s say website? It can only be used and consumed by this thing. I don&#8217;t know if there would be a need for that. I&#8217;m just wondering, is it available to all the things or can you constrain it?</p>\n\n\n\n<p>[00:52:35] <strong>Adam Silverstein:</strong> I mean, so there are actually aI things being built into the browser where you&#8217;ll get AI in the browser itself. But this is not really that, this is more like it&#8217;s running inside your app. So it would be constrained. And I see this as something that we&#8217;ll start to see like plugins, shipping AI with their plugin, and it doesn&#8217;t require you to have ChatGPT or some other service provider, it just has the AI built in.</p>\n\n\n\n<p>Maybe it&#8217;s identifying objects in an image. Or maybe it&#8217;s reviewing comments as to whether they&#8217;re spam. So things like that where it&#8217;s a pretty straightforward AI capability, it works really well on these smaller models. And so that&#8217;s something that I could imagine would just be built into a plugin. You would add this AI feature, but it doesn&#8217;t require that you sign up for a ChatGPT account, and get an API key and install it. You know, there&#8217;s a lot of barriers, I guess, to using the cloud models.</p>\n\n\n\n<p>[00:53:23] <strong>Nathan Wrigley:</strong> Yeah. I feel like you&#8217;ve left the most interest, well, not the most interesting, but the bomb is there. My head is kind of a bit taken by that one because I can really, I mean, everybody&#8217;s fascinated by AI, the possibilities of it. But it&#8217;s always an API key. It&#8217;s always a go off somewhere else. I mean, maybe it hasn&#8217;t been for people such as yourself, but I did not know that it was possible in the browser.</p>\n\n\n\n<p>And if it&#8217;s only a year behind, honestly, the stuff that I want to do with it is give it a corpus of information and filter that a little bit and give me a summary of it. That&#8217;s what I&#8217;m using it for. I&#8217;m imagining that all of that would be possible in the browser at no monetary cost.</p>\n\n\n\n<p>[00:53:59] <strong>Adam Silverstein:</strong> Exactly. Right. Because you&#8217;re doing the computing yourself on your own platform.</p>\n\n\n\n<p>[00:54:03] <strong>Nathan Wrigley:</strong> And I would imagine, like I said, Google leaning into this, that&#8217;s only going to get more investment from them.</p>\n\n\n\n<p>[00:54:10] <strong>Adam Silverstein:</strong> Yeah. I mean, there is, yes, there&#8217;s a lot of investment going on in AI right now, so it&#8217;s pretty exciting. Yeah, and I did have, you know, I did talk a little bit about just how AI is going to impact all of our workflows and stuff, but that&#8217;s not really in the, it was kind of an expansion because it&#8217;s not actually a web capability, per se.</p>\n\n\n\n<p>[00:54:25] <strong>Nathan Wrigley:</strong> Yeah. Well, I think maybe that&#8217;s the perfect place to end it. Unless you&#8217;ve got some cataclysmic thing which can trump that.</p>\n\n\n\n<p>[00:54:30] <strong>Adam Silverstein:</strong> Nope. That was the end of talk. The last slide was really just asking for feedback from developers. So that would be my last thing to say is just, you know, try to give feedback. I&#8217;m always open. My DMs are open on WordPress Core Slack. And like I said, there&#8217;s the interop thing where you can actually open up a ticket.</p>\n\n\n\n<p>[00:54:45] <strong>Nathan Wrigley:</strong> So, again, dear listener, just remember all of this, the browser is doing this. It sounds like it&#8217;s WordPress doing it, or it sounds like some other third party service. It&#8217;s not, it&#8217;s all in The browser and it&#8217;s fascinating. The browser is definitely more powerful today than it was yesterday. Adam Silverstein, thank you so much for chatting to me.</p>\n\n\n\n<p>[00:55:02] <strong>Adam Silverstein:</strong> Yeah, thank you.</p>\n</div></details>\n\n\n\n<p>On the podcast today we have <a href=\"https://profiles.wordpress.org/adamsilverstein/\">Adam Silverstein</a>.</p>\n\n\n\n<p>Adam is a WordPress Core committer, and works to fix bugs and improve modern web capabilities. He’s also a Developer Relations Engineer on Chrome’s Web Platform team at Google, and there he focuses on making the open web better for everyone.</p>\n\n\n\n<p>Adam is here to break down how the rapid evolution of browser technology can supercharge your WordPress sites. We’re doing this by referencing his presentation at WordCamp Europe 2025, in which he covered multiple new features of browsers, which can be used by WordPress users to bring a variety of experiences to their websites.</p>\n\n\n\n<p>In many cases, these are browser APIs and features, and are quietly rdefining what’s possible on the web. From CSS-powered popovers and scroll-driven animations to speculative loading that speeds up your page transitions. Adam explains how these advancements are changing what’s possible for both developers and end-users.</p>\n\n\n\n<p>The conversation sheds light on the collaboration between browser vendors, Chrome, Firefox, Safari, and Edge, through initiatives like Interop and Baseline, paving the way for more consistent and robust features across platforms.</p>\n\n\n\n<p>Adam also talks about practical topics central to the WordPress community, like how the Popover API and native CSS carousels reduce JavaScript bloat, make sites more accessible, and deliver a better overall user experience.</p>\n\n\n\n<p>He shares exciting new frontiers, such as browser-based image processing powered by WebAssembly, which is paving the way for universal support of modern formats like AVIF and Ultra HDR, and even running AI locally in your browser, no API key or cloud server required.</p>\n\n\n\n<p>He provides concrete examples on how these technologies can be leveraged in WordPress via Core updates, canonical plugins, and Gutenberg experiments, with a special focus on how developers can get involved and offer feedback to help shape future web standards. Prepare to look at your browser in a whole new light, truly.</p>\n\n\n\n<p>Whether you’re a theme designer, plugin developer, or site owner simply curious about what’s next, this episode is for you.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Useful links</h2>\n\n\n\n<p><a href=\"https://europe.wordcamp.org/2025/session/modernizing-wordpress-with-new-web-platform-features/\">Modernizing WordPress with new Web Platform Features</a> &#8211; Adam&#8217;s presentation at WordCamp Europe 2025</p>\n\n\n\n<p><a href=\"https://new.drupal.org/home\">Drupal</a></p>\n\n\n\n<p><a href=\"https://typo3.org/\">TYPO3</a></p>\n\n\n\n<p><a href=\"https://www.descript.com/\">Descript</a></p>\n\n\n\n<p><a href=\"https://developer.chrome.com/blog/introducing-popover-api/\">Popover API</a></p>\n\n\n\n<p><a href=\"https://web.dev/baseline/\">Baseline</a></p>\n\n\n\n<p><a href=\"https://developer.mozilla.org/en-US/\">MDN docs</a></p>\n\n\n\n<p><a href=\"https://en.wikipedia.org/wiki/Interop\">Interop</a></p>\n\n\n\n<p><a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_scroll-driven_animations\">Scroll Animations API</a></p>\n\n\n\n<p><a href=\"https://www.sliderrevolution.com/\">Slider Revolution</a></p>\n\n\n\n<p><a href=\"https://chrome.dev/carousel/\">Chrome Dev carousel demos</a></p>\n\n\n\n<p><a href=\"https://developer.chrome.com/docs/crux\">CrUX</a></p>\n\n\n\n<p><a href=\"https://cloud.google.com/bigquery\">BigQuery</a></p>\n\n\n\n<p><a href=\"https://developer.chrome.com/blog/a-customizable-select\">Customisable Select demos</a></p>\n\n\n\n<p><a href=\"https://wordpress.org/plugins/performance-lab/\"> Performance Lab plugin</a></p>\n\n\n\n<p><a href=\"https://en.wikipedia.org/wiki/Ultra_HDR\">Ultra HDR</a></p>\n\n\n\n<p><a href=\"https://www.php.net/manual/en/book.image.php\">GD</a></p>\n\n\n\n<p><a href=\"https://www.php.net/manual/en/book.imagick.php\">Imagick</a></p>\n\n\n\n<p><a href=\"https://webassembly.org/\">WebAssembly</a></p>\n\n\n\n<p><a href=\"https://github.com/swissspidy/media-experiments\"> Pascal Birchler&#8217;s Media Experiments plugin</a></p>\n\n\n\n<p><a href=\"https://huggingface.co/docs/transformers.js/index\"> Transformers.js</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, 23 Jul 2025 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:36;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:59:\"Weston Ruter: Instant Back/Forward Navigations in 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:33:\"https://weston.ruter.net/?p=35588\";s: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:82:\"https://weston.ruter.net/2025/07/23/instant-back-forward-navigations-in-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:36679:\"<p class=\"is-style-text-subtitle is-style-text-subtitle--2\">The new <a href=\"https://wordpress.org/plugins/nocache-bfcache/\"><strong>No-cache BFCache</strong></a> plugin enables instant back/forward navigations, particularly while logged in. See <a href=\"https://weston.ruter.net/category/wordpress/feed/#demos\">demos below</a> for the impact this has on browsing.</p>\n\n\n\n<p>The speed of page navigations in WordPress has seen a big boost in 6.8 with the introduction of <a href=\"https://make.wordpress.org/core/2025/03/06/speculative-loading-in-6-8/\">Speculative Loading</a>. When paired with the original <a href=\"https://wordpress.org/plugins/speculation-rules/\">feature plugin</a>, site visitors can experience instant page navigations thanks to its opt-ins for prerendering and “moderate eagerness”. However, WordPress does not enable such instant navigations by default. WordPress core must take a conservative approach since prerendering may cause compatibility problems, like with analytics or ads. There is also a sustainability concern with moderate prerendering since a user may momentarily hover over a link but not intend to follow it at all; this results in an unused prerender, which can waste a user&#8217;s bandwidth (and CPU to a limited extent) as well as increase the load on the web server (which can be problematic on shared hosts without page caching). Furthermore, even when prerendering is enabled, not all visitors may be able to experience instant page loads because: </p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Moderate eagerness is limited on mobile devices (where there is no hover heuristic on touch screens).</li>\n\n\n\n<li>Speculative Loading is not enabled when a user is logged in. (<strong>Updates:</strong> See <a href=\"https://github.com/WordPress/performance/pull/2097\">PR</a> which introduces a frontend opt-in, and the <a href=\"https://github.com/westonruter/speculative-loading-admin\">Speculative Loading Admin</a> plugin for a backend opt-in.)</li>\n\n\n\n<li>The Speculation Rules API is currently only <a href=\"https://caniuse.com/mdn-html_elements_script_type_speculationrules\">supported</a> in Chromium, leaving Safari and Firefox users out.</li>\n</ol>\n\n\n\n<p>Nevertheless, there is a much older web platform technology that enables “prerendering” <em>and</em> which is supported in all browsers: the <a href=\"https://developer.mozilla.org/en-US/docs/Glossary/bfcache\">back/forward cache</a> (bfcache). This instant page navigation involves no network traffic and no CPU load. Previously visited pages are stored in memory as a snapshot with their entire state so that they can be restored instantly. Navigating to pages stored in bfcache is as fast as switching open browser tabs.</p>\n\n\n\n<p>Back/forward history navigations are very common, as according to the <a href=\"https://web.dev/articles/bfcache\">web.dev article</a> on bfcache:</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Chrome usage data shows that 1 in 10 navigations on desktop and 1 in 5 on mobile are either back or forward. With bfcache enabled, browsers could eliminate the data transfer and time spent loading for billions of web pages every single day!</p>\n</blockquote>\n\n\n\n<p>Also learn more via the <a href=\"https://youtu.be/Y2IVv5KnrmI\">following video</a>:</p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n\n</div></figure>\n\n\n\n<p>While Speculative Loading enables prerendering, bfcache involves “pre<em>vious</em>-rendering”.</p>\n\n\n\n<p>The good news is that 84% of WordPress origins in <a href=\"https://httparchive.org/\">HTTP Archive</a> are already bfcache-eligible (based on <a href=\"https://gist.github.com/gilbertococchi/083c1516149cf5f70b103451d1790cbc\">this query</a> from <a href=\"https://github.com/gilbertococchi\">Gilberto Cocchi</a>). <strong>However, the most frequent user of your site may still not be able to experience instant page navigations via bfcache: <em>you!</em></strong> While browsing around the WP Admin and navigating the frontend of your site, the pages most likely aren&#8217;t eligible for bfcache due to various <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Performance_API/Monitoring_bfcache_blocking_reasons#blocking_reasons\">blocking reasons</a>. This sluggish experience extends not only to administrators but also to users of sites which require authentication, including e-commerce (e.g. WooCommerce), social (e.g. BuddyPress), and any membership sites. The 84% metric above doesn&#8217;t take into account these types of WordPress sites since HTTP Archive exclusively crawls public URLs without authentication. Users browsing WordPress sites on shared hosts or when on a slow connection will be especially frustrated by slow back/forward navigations. Enabling instant back/forward navigations will not only make your users happier (especially you), but it can also improve your <abbr title=\"Core Web Vitals\">CWV</abbr> passing rate <a href=\"https://developer.chrome.com/blog/crux-navigation-types\">in <abbr title=\"Chrome User Experience Report\">CrUX</abbr></a>.</p>\n\n\n\n<p>I&#8217;ve been on a mission to bring back bfcache (or rather to bring it forward).</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"stale-content-in-page-caches\">Stale Content in Page Caches</h2>\n\n\n\n<p>Before going further, I wanted to call out a potentially negative consequence of navigating cached pages. While instant back/forward navigations can provide a big performance boost to the user experience, they can also be a source of confusion when navigating to a cached page with stale content. </p>\n\n\n\n<p>Consider the case of an e-commerce site, where a user is on the shopping cart page. From there, they click a link to a related product, and from that product page they add it to the cart dynamically (e.g. via Ajax). At this point, if they hit the back button to return to the cart page and the cart is restored from a page cache, they may not see the newly added product in the cart. A user can simply reload the page to fix this, but this can also be handled automatically. </p>\n\n\n\n<p>As described in the “<a href=\"https://web.dev/articles/bfcache#update-data-after-restore\">Update stale or sensitive data after bfcache restore</a>” section of the web.dev post, the <code>pageshow</code> event with the <code>persisted</code> property (further <a href=\"https://weston.ruter.net/category/wordpress/feed/#jit-page-cache-invalidation\">discussed</a> below) indicates when a page was restored from bfcache. This event can be used to update the DOM with the latest shopping cart details. In fact, WooCommerce already <a href=\"https://github.com/woocommerce/woocommerce/blob/47845a498f0918a90d60ab3adca204d13a712cde/plugins/woocommerce/client/blocks/assets/js/base/context/hooks/cart/use-store-cart-event-listeners.ts#L40-L50\">implements this</a> for its cart:</p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-typescript\"><span class=\"hljs-keyword\">const</span> refreshCachedCartData = ( event: PageTransitionEvent ): <span class=\"hljs-function\"><span class=\"hljs-params\">void</span> =&gt;</span> {\n	<span class=\"hljs-keyword\">if</span> ( event?.persisted || getNavigationType() === <span class=\"hljs-string\">\'back_forward\'</span> ) {\n		dispatch( cartStore ).invalidateResolutionForStore();\n	}\n};\n<span class=\"hljs-comment\">/* ... */</span>\n<span class=\"hljs-built_in\">window</span>.addEventListener( <span class=\"hljs-string\">\'pageshow\'</span>, refreshCachedCartData );</code></span></pre>\n\n\n<p>Simply searching a plugin&#8217;s codebase for “pageshow” (e.g. <a href=\"https://github.com/search?q=repo%3Awoocommerce%2Fwoocommerce%20pageshow&amp;type=code\">in Woo</a>) should indicate whether bfcache navigations are accounted for. </p>\n\n\n\n<p>Note also that stale content is also an issue <a href=\"https://github.com/WordPress/performance/issues/1774\">we&#8217;ve faced</a> with Speculative Loading, especially when using non-conservative eagerness.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Breaking Caching to Preserve Privacy</h2>\n\n\n\n<p>My bfcache work began two years ago when I started collaborating on <a href=\"https://core.trac.wordpress.org/ticket/55491\">#55491</a> to eliminate the use of the <a href=\"https://developer.chrome.com/docs/web-platform/deprecating-unload\">deprecated</a> <code>unload</code> event handler in WordPress core. Not only does this event fire unreliably, but it also has the side effect of making a page <a href=\"https://web.dev/articles/bfcache#never-use-the-unload-event\">ineligible for bfcache</a> via the “<a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Performance_API/Monitoring_bfcache_blocking_reasons#unload-listener\">unload-listener</a>” blocking reason. I had <a href=\"https://github.com/GoogleChromeLabs/wpp-research/pull/75\">queried</a> HTTP Archive myself at the time, and I found it to be the second most common blocking reason. So in <a href=\"https://core.trac.wordpress.org/changeset/56809\">r56809</a> we eliminated all uses of <code>unload</code>, including from:</p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Heartbeat API</li>\n\n\n\n<li>Post locking in the classic editor</li>\n\n\n\n<li>Post previews</li>\n</ul>\n\n\n\n<p>However, even with the use of <code>unload</code> eliminated, I was confused why I wasn&#8217;t finding pages to be eligible for bfcache in my testing. (The removal of <code>unload</code> in core likely didn&#8217;t make a dent in bfcache eligibility in HTTP Archive since only <a href=\"https://github.com/GoogleChromeLabs/wpp-research/pull/75#:~:text=Lastly%2C%20in%20heartbeat%2Dscript%2Dpresence.sql%20I%20check%20to%20see%20how%20common%20the%20Heartbeat%20script%20actually%20is%3A\">0.25%</a> of unauthenticated pages had the Heartbeat API present.) It turns out that several weeks before I started working on this, a <a href=\"https://core.trac.wordpress.org/changeset/55968\">commit</a> had landed which <em>intentionally</em> broke browser page caching (both bfcache and HTTP cache): the <code>no-store</code> directive was added to the <code>Cache-Control</code> response header for logged-in users. (Specifically, this was added to the <code><a href=\"https://developer.wordpress.org/reference/functions/wp_get_nocache_headers/\">wp_get_nocache_headers()</a></code> function.) This introduced the “<a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Performance_API/Monitoring_bfcache_blocking_reasons#response-cache-control-no-store\">response-cache-control-no-store</a>” bfcache blocking reason, which was actually the <a href=\"https://github.com/GoogleChromeLabs/wpp-research/pull/75#:~:text=Pages%20whose%20main%20resource%20has%20cache%2Dcontrol%3Ano%2Dstore%20cannot%20enter%20back/forward%20cache.\">most common reason for ineligibility</a>, just above <code>unload</code> in my HTTP Archive query. The reason for adding this is found in <a href=\"https://core.trac.wordpress.org/ticket/21938\">#21938</a> which proposed adding the <code>no-store</code> directive in order to explicitly <em>disable</em> caching so that authenticated pages do not get stored in the browser cache. This was followed up with <a href=\"https://core.trac.wordpress.org/ticket/61942\">#61942</a> to also send <code>no-store</code> on the frontend while a user is logged in. The rationale for this is rooted in privacy, per the commit message:</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The intention behind this change is to prevent sensitive data in responses for logged in users being cached and available to others, for example via the browser history after the user logs out.</p>\n</blockquote>\n\n\n\n<p>Consider an administrator who is logged in to WordPress on a shared computer and is working on something sensitive, like managing API keys on an admin screen. A malicious person could navigate back to that admin screen via the back button after the user had logged out. Nevertheless, the “bad guy” will need to act fast because a browser won&#8217;t store cached pages indefinitely; Chrome, for example, holds onto pages in bfcache for <a href=\"https://developer.chrome.com/docs/web-platform/bfcache-ccns#:~:text=The%20bfcache%20timeout%20for%20Cache%2DControl%3A%20no%2Dstore%20pages%20is%20also%20reduced%20to%203%20minutes%20(from%2010%20minutes%20used%20for%20pages%20which%20don%27t%20use%20Cache%2DControl%3A%20no%2Dstore)%20to%20further%20reduce%20risk.\">10 minutes</a>. (Tip: When using a shared computer, always exit the browser after logging out of all sites when ending work.) So while <code>no-store</code> here does improve privacy, it does so at the expense of the user experience by degrading the performance of back/forward navigations. Even when pages aren&#8217;t eligible for bfcache, removing <code>no-store</code> still improves back/forward navigation performance since pages can be served from the browser&#8217;s HTTP cache (although the DOM has to be re-built and scripts have to be re-executed).</p>\n\n\n\n<p><strong>Surely there must be a way to preserve privacy and promote performance together.</strong></p>\n\n\n\n<p>It&#8217;s important to note that the <code>no-store</code> directive not only prevents pages from being cached by the browser, but it also preserves privacy by preventing proxies from caching pages, per <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control#no-store\">MDN</a>:</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The <code>no-store</code> response directive indicates that any caches of any kind (private or shared) should not store this response.  </p>\n</blockquote>\n\n\n\n<p>Keeping authenticated pages out of page caches prevents embarrassing scenarios like serving a user the shopping cart page for another user. Nevertheless, there is a more tailored <code>Cache-Control</code> mechanism for this purpose: the <code>private</code> directive. Again, per <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control#private\">MDN</a>:</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The private response directive indicates that the response can be stored only in a private cache (e.g., local caches in browsers). ¶ You should add the private directive for user-personalized content, especially for responses received after login and for sessions managed via cookies. ¶ If you forget to add private to a response with personalized content, then that response can be stored in a shared cache and end up being reused for multiple users, which can cause personal information to leak.</p>\n</blockquote>\n\n\n\n<p>This is what was originally requested in <a href=\"https://core.trac.wordpress.org/ticket/57627\">#57627</a>, but both <code>private</code> and <code>no-store</code> were added together, with the <a href=\"https://core.trac.wordpress.org/changeset/55968\">commit</a> message reasoning:</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The <code>private</code> directive complements the <code>no-store</code> directive by specifying that the response contains private information that should not be stored in a public cache. Some proxy caches may ignore the <code>no-store</code> directive but respect the <code>private</code> directive, thus it is included.</p>\n</blockquote>\n\n\n\n<p>So how can the <code>private</code> directive be retained for proxies, while removing the <code>no-store</code> directive so that a user can benefit from browser caching but not at the expense of privacy?</p>\n\n\n\n<h2 class=\"wp-block-heading\">Preserving Privacy while Caching</h2>\n\n\n\n<p>In order to omit the <code>no-store</code> directive and enable instant back/forward navigations while preserving privacy, a way is needed to evict pages from the browser cache when a user logs out. In my research, there are three mechanisms to do this, with various degrees of browser support.</p>\n\n\n\n<h3 class=\"wp-block-heading\">The <code>Clear-Site-Data</code> Header</h3>\n\n\n\n<p>The most straightforward mechanism to invalidate pages from bfcache would at first seem to be the <code>Clear-Site-Data</code> HTTP response header. This is supposedly Baseline 2023 Newly Available, but there is an asterisk: “Some parts of this feature may have varying levels of support.” Per <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Clear-Site-Data\">MDN</a>, this header “sends a signal to the client that it should remove all browsing data of certain types (cookies, storage, cache) associated with the requesting website.” In fact, the <code>cache</code> directive for this header seems to be exactly what is needed, as it even <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Clear-Site-Data#cache\">explicitly calls</a> out bfcache:</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>The server signals that the client should remove locally cached data (the browser cache, see <a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Caching\">HTTP caching</a>) for the origin of the response URL. Depending on the browser, this might also clear out things like pre-rendered pages, <a href=\"https://developer.mozilla.org/en-US/docs/Glossary/bfcache\">backwards-forwards cache</a>, script caches, WebGL shader caches, or address bar suggestions.</p>\n</blockquote>\n\n\n\n<p>However, note the word “might”. In my testing, sending this header does currently evict pages from bfcache in Chrome. But, there is an <a href=\"https://github.com/w3c/webappsec-clear-site-data/issues/73\">open spec question</a> for whether Clear-Site-Data should clear bfcache; it mentions <a href=\"https://github.com/w3c/webappsec-clear-site-data/issues/68\">dropping</a> the <code>cache</code> directive entirely, and it suggests that a different <code>executionContexts</code> directive may be more appropriate (but its browser support is even worse and it may be <a href=\"https://github.com/w3c/webappsec-clear-site-data/issues/59\">dropped</a> from the spec). Firefox <a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=1671182\">dropped support</a> for the <code>cache</code> directive but then <a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=1930500\">restored</a> it, although in testing it seems Firefox only evicts pages from the HTTP cache and not from bfcache. Finally, Safari doesn&#8217;t seem to evict pages from either the HTTP cache or bfcache when this header is sent. </p>\n\n\n\n<p>When/if browser support for this is improved, implementing eviction of pages from browser caches could be as simple as:</p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-php\">add_action(\n	<span class=\"hljs-string\">\'clear_auth_cookie\'</span>,\n	<span class=\"hljs-function\"><span class=\"hljs-keyword\">function</span> <span class=\"hljs-params\">()</span> </span>{\n		header( <span class=\"hljs-string\">\'Clear-Site-Data: \"cache\"\'</span> );\n	}\n);</code></span></pre>\n\n\n<p>Ultimately, while this header seems to be tailor-made for evicting pages from browser caches, it cannot be relied on since it is clearly not widely available in Baseline, and not even “newly available” either. There is also a Chromium bug (<a href=\"https://issues.chromium.org/issues/40233601\">40233601</a>) where sending this header can greatly delay page response times, possibly causing a logout link to take half a minute to respond. The final mark against <code>Clear-Site-Data</code> is that the header requires a secure context (HTTPS), so the WordPress sites still on HTTP could not evict pages from browser caches using this header (although privacy could be the last of their concerns at this point).</p>\n\n\n\n<p>So to preserve privacy, another browser page cache invalidation method is currently needed.</p>\n\n\n\n<h3 class=\"wp-block-heading\">Broadcast Channel</h3>\n\n\n\n<p>Going back to the aforementioned bfcache <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Performance_API/Monitoring_bfcache_blocking_reasons#blocking_reasons\">blocking reasons</a>, one of them is “<a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Performance_API/Monitoring_bfcache_blocking_reasons#broadcastchannel-message\">broadcastchannel-message</a>”:</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>While the page was stored in back/forward cache, a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\">BroadcastChannel</a> connection on the page received a message to trigger a <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent\">message</a> event.</p>\n</blockquote>\n\n\n\n<p>I went down a rabbit hole with this one, thinking I could leverage this blocking reason as a bfcache eviction mechanism. In my discarded implementation, all authenticated pages include a script which listens to a broadcast channel such as “auth_change”. Then, to evict authenticated pages from bfcache upon a successful logout (or logging in as another user), a script can be included on the page which simply broadcasts an arbitrary message to this same “auth_change” broadcast channel. This causes the eviction of any authenticated pages in bfcache which are listening to messages from this broadcast channel.</p>\n\n\n\n<p>I was seeing very promising results with this approach, where pages were being successfully evicted from bfcache in Chromium (Chrome/Edge) and Firefox. Nevertheless, eviction was not happening in Safari, which apparently has not yet implemented this blocking reason. <em>However</em>, this approach fell apart once I closed DevTools.</p>\n\n\n\n<p>Normally when DevTools is open I have “Disable cache” checked in the Network panel. This disables the HTTP cache, but not the bfcache. What I would see then is if I navigated around the WP Admin and then logged out in a second tab, hitting the back button in the first tab would immediately take me to the login screen. This is exactly what I wanted. However, once I closed DevTools, I started seeing pages served from the browser&#8217;s HTTP cache when navigating back/forward. Because the <code>no-store</code> directive is removed, this means the browser may actually serve pages from HTTP cache when navigating back/forward, even when the <code>Cache-Control</code> header has <code>no-cache</code>, <code>must-revalidate</code>, and <code>max-age=0</code>. And here, when the user logged out, they shouldn&#8217;t be served from either HTTP cache or bfcache to preserve privacy. So this was not a viable approach in the end.</p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"jit-page-cache-invalidation\">Just-in-time Page Cache Invalidation</h3>\n\n\n\n<p>Ultimately, the most reliable solution I&#8217;ve found to invalidate pages from both bfcache and the HTTP cache is to do so just-in-time with JavaScript: When a page is restored from a browser cache and it is determined to be stale, the page contents are wiped and the page is reloaded. This approach is also referenced in the aforementioned “<a href=\"https://web.dev/articles/bfcache#minimize-no-store\">Update stale or sensitive data after bfcache restore</a>” section on web.dev, although I&#8217;m accounting for pages not only restored from bfcache but also the HTTP cache. </p>\n\n\n\n<p>My implementation involves the creation of a new session token when the user authenticates. This session token is served in the HTML with each authenticated page, and it is also set as a <code>wordpress_​bfcache_​session_​{COOKIEHASH}</code> cookie which can be read by JavaScript. When a user logs out, this session token cookie is cleared. Whenever a page is loaded, the session token in the HTML is compared with the current session token in the cookie. When they don&#8217;t match, then the page is invalidated. If a page is served from bfcache, then the <a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Window/pageshow_event\"><code>pageshow</code> event</a> (with <code>persisted</code> true) is used to do this check; if a page is served from the HTTP cache, then the check is done when the script module is executed. If the user had logged out, then reloading the page will take them to the login screen which, after authenticating, will redirect them back to the page they had been on.</p>\n\n\n\n<p>As this page cache invalidation mechanism depends on JavaScript, scripting must be enabled to be eligible to omit the <code>no-store</code> directive from the <code>Cache-Control</code> header. This JavaScript detection can be done when the user submits the login form.</p>\n\n\n\n<p>This implementation has been made available in a new plugin: <strong>No-cache BFCache</strong>. It is available <a href=\"https://wordpress.org/plugins/nocache-bfcache/\">on WordPress.org</a> and <a href=\"https://github.com/westonruter/nocache-bfcache/\">on GitHub</a>. This is a feature plugin to implement <a href=\"https://core.trac.wordpress.org/ticket/63636\">#63636</a> in WordPress core.</p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\"><a href=\"https://wordpress.org/plugins/nocache-bfcache/\">No-cache BFCache</a></blockquote>\n</div></figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"demos\">Demos</h2>\n\n\n\n<p>In the following demos, I have Slow 4G network emulation enabled along with CPU throttling. This is in order to better simulate what an average user may experience when navigating, such as on a mid-range device potentially with a WordPress site on a shared host.</p>\n\n\n\n<h3 class=\"wp-block-heading\">Demo: Navigating the WordPress Admin</h3>\n\n\n\n<p>After navigating from the Dashboard to the posts list table and then opening a post to edit, you can see the difference in speed navigating back and forth through the browser history:</p>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h4 class=\"wp-block-heading has-text-align-center\">Without bfcache</h4>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n\n</div></figure>\n</div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h4 class=\"wp-block-heading has-text-align-center\">With bfcache</h4>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n\n</div></figure>\n</div>\n</div>\n\n\n\n<h3 class=\"wp-block-heading\">Demo: Navigating the WordPress Frontend</h3>\n\n\n\n<p>Here you can see me draft a message in a BuddyPress activity update. Then I navigate to another URL, and then I go back and forward:</p>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h4 class=\"wp-block-heading has-text-align-center\">Without bfcache</h4>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n\n</div><figcaption class=\"wp-element-caption\">The drafted BuddyPress activity update is lost when navigating away from the page before submitting. The activity feed and Tweet have to be reconstructed with each back/forward navigation.</figcaption></figure>\n</div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h4 class=\"wp-block-heading has-text-align-center\">With bfcache</h4>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n\n</div><figcaption class=\"wp-element-caption\">The drafted BuddyPress activity update is preserved when navigating away from the page without submitting. The activity feed and Tweet do not have to be reconstructed when navigating to previously visited pages via the back/forward buttons.</figcaption></figure>\n</div>\n</div>\n\n\n\n<h2 class=\"wp-block-heading\">Appendix</h2>\n\n\n\n<p>WooCommerce has been serving pages with <code>no-store</code> even for unauthenticated users on its Cart, Checkout, and Account pages. This slowed down navigating a store, even though Woo already implements support for ensuring a cart is up-to-date via the <code>pageshow</code> event, as <a href=\"https://weston.ruter.net/category/wordpress/feed/#stale-content-in-page-caches\">mentioned</a> above. The lack of bfcache means not only that navigating back to the cart is much slower than it needs to be, but there can also be data loss, for example an entered coupon but accidentally not applied. In PR <a href=\"https://github.com/woocommerce/woocommerce/pull/58445\">#58445</a> the sending of <code>no-store</code> was removed. This is slated to be part of v10.1. See <a href=\"https://github.com/woocommerce/woocommerce/pull/58445#issuecomment-3014404754\">before/after demo videos</a>.</p>\n\n\n\n<p>Similarly, in Jetpack certain admin screens are sending <code>no-store</code> which slow down back/forward navigations. In Jetpack 14.9, PR <a href=\"https://github.com/Automattic/jetpack/pull/44322\">#44322</a> removes this and greatly speeds up navigating to/from Jetpack admin screens, as seen in the <a href=\"https://github.com/Automattic/jetpack/pull/44322#:~:text=no%2Dstore.-,Demo%20Video,-Compare%20navigating%20back\">demo videos</a>.</p>\n\n\n\n<p>Sometimes the instantaneous navigations enabled by bfcache (and prerendering in Speculative Loading) can be a bit jarring, since pages load faster than expected. So the No-cache BFCache pairs well with the <a href=\"https://wordpress.org/plugins/view-transitions/\">View Transitions</a> plugin which now features an Admin View Transitions opt-in. This helps smooth the overall experience.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<p>Special thanks to <a href=\"https://kinsta.com/\">Kinsta</a> for <a href=\"https://github.com/sponsors/westonruter\">sponsoring</a> part of my time contributing to WordPress while I&#8217;ve been <a href=\"https://weston.ruter.net/2025/05/14/a-decade-as-a-core-committer-my-wordpress-contribution-history/\">between full time roles</a>. I also <a href=\"https://www.youtube.com/watch?v=d_I_JsFi2M0&amp;t=842s\">discussed</a> this bfcache project in my “<a href=\"https://youtu.be/d_I_JsFi2M0\">From Cassette Tapes to Core Commits: Weston Ruter’s WordPress Journey</a>” interview with <a href=\"https://www.linkedin.com/in/rogerwilliamsmedia?lipi=urn%3Ali%3Apage%3Ad_flagship3_profile_view_base_contact_details%3BSVYGJ1iQReyyHVN4aXnkag%3D%3D\">Roger Williams</a> last week.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<p class=\"has-medium-font-size\">Where I&#8217;ve shared this, if you want to boost:</p>\n\n\n\n<ul class=\"wp-block-social-links is-layout-flex wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a class=\"wp-block-social-link-anchor\" href=\"https://www.linkedin.com/posts/westonruter_instant-backforward-navigations-in-wordpress-activity-7353696655562452995-zu-E?utm_source=share&#038;utm_medium=member_desktop&#038;rcm=ACoAAACIeJ0BUsdEu-G5aiGg1JkXrMQ-C6tbCsI\"><svg height=\"24\" version=\"1.1\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"></path></svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn</span></a></li>\n\n<li class=\"wp-social-link wp-social-link-bluesky  wp-block-social-link\"><a class=\"wp-block-social-link-anchor\" href=\"https://bsky.app/profile/weston.ruter.net/post/3lumkutpuv22l\"><svg height=\"24\" version=\"1.1\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.3,4.2c2.3,1.7,4.8,5.3,5.7,7.2.9-1.9,3.4-5.4,5.7-7.2,1.7-1.3,4.3-2.2,4.3.9s-.4,5.2-.6,5.9c-.7,2.6-3.3,3.2-5.6,2.8,4,.7,5.1,3,2.9,5.3-5,5.2-6.7-2.8-6.7-2.8,0,0-1.7,8-6.7,2.8-2.2-2.3-1.2-4.6,2.9-5.3-2.3.4-4.9-.3-5.6-2.8-.2-.7-.6-5.3-.6-5.9,0-3.1,2.7-2.1,4.3-.9h0Z\"></path></svg><span class=\"wp-block-social-link-label screen-reader-text\">Bluesky</span></a></li>\n\n<li class=\"wp-social-link wp-social-link-mastodon  wp-block-social-link\"><a class=\"wp-block-social-link-anchor\" href=\"https://mastodon.social/@westonruter/114901525584434540\"><svg height=\"24\" version=\"1.1\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M23.193 7.879c0-5.206-3.411-6.732-3.411-6.732C18.062.357 15.108.025 12.041 0h-.076c-3.068.025-6.02.357-7.74 1.147 0 0-3.411 1.526-3.411 6.732 0 1.192-.023 2.618.015 4.129.124 5.092.934 10.109 5.641 11.355 2.17.574 4.034.695 5.535.612 2.722-.15 4.25-.972 4.25-.972l-.09-1.975s-1.945.613-4.129.539c-2.165-.074-4.449-.233-4.799-2.891a5.499 5.499 0 0 1-.048-.745s2.125.52 4.817.643c1.646.075 3.19-.097 4.758-.283 3.007-.359 5.625-2.212 5.954-3.905.517-2.665.475-6.507.475-6.507zm-4.024 6.709h-2.497V8.469c0-1.29-.543-1.944-1.628-1.944-1.2 0-1.802.776-1.802 2.312v3.349h-2.483v-3.35c0-1.536-.602-2.312-1.802-2.312-1.085 0-1.628.655-1.628 1.944v6.119H4.832V8.284c0-1.289.328-2.313.987-3.07.68-.758 1.569-1.146 2.674-1.146 1.278 0 2.246.491 2.886 1.474L12 6.585l.622-1.043c.64-.983 1.608-1.474 2.886-1.474 1.104 0 1.994.388 2.674 1.146.658.757.986 1.781.986 3.07v6.304z\"></svg><span class=\"wp-block-social-link-label screen-reader-text\">Mastodon</span></a></li>\n\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a class=\"wp-block-social-link-anchor\" href=\"https://x.com/westonruter/status/1947932105599815923\"><svg height=\"24\" version=\"1.1\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"></path></svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter</span></a></li>\n\n<li class=\"wp-social-link wp-social-link-threads  wp-block-social-link\"><a class=\"wp-block-social-link-anchor\" href=\"https://www.threads.com/@westonruter/post/DMcW7QUOfrC?xmt=AQF0RmSf6xjzbuDgVlvigocp0pk-4R0eBjA7GUIEXS4bQw\"><svg height=\"24\" version=\"1.1\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.3 11.3c-.1 0-.2-.1-.2-.1-.1-2.6-1.5-4-3.9-4-1.4 0-2.6.6-3.3 1.7l1.3.9c.5-.8 1.4-1 2-1 .8 0 1.4.2 1.7.7.3.3.5.8.5 1.3-.7-.1-1.4-.2-2.2-.1-2.2.1-3.7 1.4-3.6 3.2 0 .9.5 1.7 1.3 2.2.7.4 1.5.6 2.4.6 1.2-.1 2.1-.5 2.7-1.3.5-.6.8-1.4.9-2.4.6.3 1 .8 1.2 1.3.4.9.4 2.4-.8 3.6-1.1 1.1-2.3 1.5-4.3 1.5-2.1 0-3.8-.7-4.8-2S5.7 14.3 5.7 12c0-2.3.5-4.1 1.5-5.4 1.1-1.3 2.7-2 4.8-2 2.2 0 3.8.7 4.9 2 .5.7.9 1.5 1.2 2.5l1.5-.4c-.3-1.2-.8-2.2-1.5-3.1-1.3-1.7-3.3-2.6-6-2.6-2.6 0-4.7.9-6 2.6C4.9 7.2 4.3 9.3 4.3 12s.6 4.8 1.9 6.4c1.4 1.7 3.4 2.6 6 2.6 2.3 0 4-.6 5.3-2 1.8-1.8 1.7-4 1.1-5.4-.4-.9-1.2-1.7-2.3-2.3zm-4 3.8c-1 .1-2-.4-2-1.3 0-.7.5-1.5 2.1-1.6h.5c.6 0 1.1.1 1.6.2-.2 2.3-1.3 2.7-2.2 2.7z\"></svg><span class=\"wp-block-social-link-label screen-reader-text\">Threads</span></a></li></ul>\n\n\n\n<p></p>\n<p>The post <a href=\"https://weston.ruter.net/2025/07/23/instant-back-forward-navigations-in-wordpress/\">Instant Back/Forward Navigations in WordPress</a> appeared first on <a href=\"https://weston.ruter.net\">Weston Ruter</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, 23 Jul 2025 07:51:21 +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:12:\"Weston Ruter\";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:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:82:\"Jonathan Desrosiers: Implementing AI in Open Source Without Losing the Human Touch\";s: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:37:\"https://jonathandesrosiers.com?p=6434\";s: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:101:\"https://jonathandesrosiers.com/2025/07/implementing-ai-in-open-source-without-losing-the-human-touch/\";s: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:14027:\"<p class=\"\">AI is reshaping how we interact with technology and with each other. In large, collaborative Open Source communities like <a href=\"https://wordpress.org/\">WordPress</a>, the shift towards AI is exciting, but it brings unique challenges when applied across a global contributor base.</p>\n\n\n\n<p class=\"\">There are extreme stances on both sides of the argument. On one side: “AI everything.” On the other: “AI has no place here.” I am somewhere in the middle. Watching. Listening. Experimenting.</p>\n\n\n\n<p class=\"\">I spend a lot of time <a href=\"https://jonathandesrosiers.com/2019/06/wordpress-triage-team-3-month-reflection/\">thinking about contributor workflows and triage</a>. This post is a reflection on how we might integrate AI into those areas in thoughtful ways, without losing the human qualities that make Open Source great.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ai-is-just-the-newest-kind-of-automation\">AI Is Just the Newest Kind of Automation</h2>\n\n\n\n<p class=\"\">Automation is not new. WordPress has embraced automation in many forms over the years: build scripts, linting tools, unit testing, continuous integration workflows, and more. AI is simply another form of automation. It only does what we configure it to do. We haven’t reached any kind of singularity just yet.</p>\n\n\n\n<p class=\"\">But with great power comes great responsibility. Just because we can doesn’t mean we should. Every proposed use of AI should be <a href=\"https://maintaine.rs/desrosj\">measured against</a> our <a href=\"https://wordpress.org/about/philosophy/\">core values</a>: putting the users first, backwards compatibility, democratizing publishing, and making WordPress welcoming to contributors of all skill levels.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-should-always-be-human\">What Should Always Be Human?</h2>\n\n\n\n<p class=\"\">Before we introduce AI into the community, we need to answer one critical question: What <em><strong>must</strong></em> be human? If we first identify those things and declare them sacred, we can then begin to explore how to best surround and support them with AI-related tools.</p>\n\n\n\n<p class=\"\">Related to that is another important question: What do people <em><strong>expect</strong></em> to be human? And where do those expectations align or conflict with perception, or the tasks that actually make us more productive?</p>\n\n\n\n<figure class=\"wp-block-image alignwide size-full wp-lightbox-container\"><img alt=\"A person standing alone in front of a large, bright white screen, with only their silhouette visible against the light background.\" class=\"wp-image-6439 not-transparent\" height=\"1707\" src=\"https://jonathandesrosiers.com/wp-content/uploads/2025/07/96466603e98a99495.95027958-scaled.jpg\" width=\"2560\" /><button class=\"lightbox-trigger\" type=\"button\">\n			<svg fill=\"none\" height=\"12\" viewBox=\"0 0 12 12\" width=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n				<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\"></path>\n			</svg>\n		</button><figcaption class=\"wp-element-caption\"><a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0</a> licensed <a href=\"https://wordpress.org/photos/photo/untitled-post-submission-621/\">photo</a> by <a href=\"https://www.nilovelez.com/\">Nilo Velez</a> from the <a href=\"https://wordpress.org/photos/\">WordPress Photo Directory</a>.</figcaption></figure>\n\n\n\n<p class=\"\">From personal experience, I hate when I’m forced to interact with AI or a chat bot when I was instead expecting (or hoping for) a human. Rarely am I surprised in a good way. More often I’m frustrated and disappointed by limitations and rigid structure. Expectations matter.</p>\n\n\n\n<p class=\"\">The right approach could be to let each contributor configure the level of AI support they want to meet their needs and expectations.</p>\n\n\n\n<p class=\"\">Some common-sense boundaries might include the following:</p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-the-first-and-last-interaction-on-every-ticket-should-always-be-human\">The first and last interaction on every ticket should always be human</h3>\n\n\n\n<p class=\"\">Creating a ticket in a large project takes courage. A human response is a sign of respect and gratitude. Every reporter is owed at least two human responses. That human interaction sets the tone, builds trust, and encourages continued participation. Tactfully sprinkling AI in the middle is acceptable.</p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ai-should-not-be-used-for-evaluating-ideas-or-making-decisions\">AI should not be used for evaluating ideas or making decisions</h3>\n\n\n\n<p class=\"\">Verifying a patch, helping adhere to coding standards, providing suggestions for improvement, or flagging potential issues based on past commit activity are all great opportunities to use AI. But using AI to actually make decisions becomes quite risky.</p>\n\n\n\n<p class=\"\">I think it’s safe to say that the overwhelming majority of contributors expect final decisions to be made by humans. However, AI could support the evaluation of ideas by identifying possible consequences, providing historical context, fact-checking, and validating rationale.</p>\n\n\n\n<p class=\"\">There could also be an option to request deeper AI insight using a keyword, like <code>needs-ai-feedback</code>, when necessary.</p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ai-can-break-down-cultural-and-language-barriers\">AI can break down cultural and language barriers</h3>\n\n\n\n<p class=\"\">Global collaboration is a strength of Open Source, but it also introduces communication challenges. Language barriers, social norms, and tone differences can unintentionally create friction. AI has the potential to help us bridge those gaps. It can assist with translating intent, softening language, and suggesting more inclusive phrasing. By helping contributors express themselves clearly and interpret others more generously, AI can promote empathy and reduce misunderstandings.</p>\n\n\n\n<p class=\"\">While there are <a href=\"https://es.wordpress.org/support/\">localized support resources</a> for the WordPress project, it’s generally expected that when contributing you are doing so in English. But what if AI were used to automatically translate any message, allowing someone to contribute in their native tongue? <a href=\"https://jonathandesrosiers.com/2025/07/the-ghosts-of-unactivated-contributors/\">How many more contributors could we activated</a> with something like this?</p>\n\n\n\n<p class=\"\">When used thoughtfully, AI can enhance human conversations across cultures rather than replace them.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-ai-as-a-contributor-onboarding-tool\">AI as a Contributor Onboarding Tool</h2>\n\n\n\n<p class=\"\">AI is great for handling beginner-leaning tasks. So how can we use AI to level up contributors that are just getting involved?</p>\n\n\n\n<p class=\"\">This is also tricky because Open Source projects <em>need</em> contributors of all levels to ensure a healthy pipeline. We don’t want to replace them since the novice contributors of today are potentially future maintainers and leaders. Instead, we should focus on how to support and empower them.</p>\n\n\n\n<figure class=\"wp-block-image alignwide size-full wp-lightbox-container\"><img alt=\"A large, empty auditorium with rows of numbered blue seats with yellow trim.\" class=\"wp-image-6444 not-transparent\" height=\"1707\" src=\"https://jonathandesrosiers.com/wp-content/uploads/2025/07/957645e31e382a517.41452423-scaled.jpg\" width=\"2560\" /><button class=\"lightbox-trigger\" type=\"button\">\n			<svg fill=\"none\" height=\"12\" viewBox=\"0 0 12 12\" width=\"12\" xmlns=\"http://www.w3.org/2000/svg\">\n				<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\"></path>\n			</svg>\n		</button><figcaption class=\"wp-element-caption\"><a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0</a> licensed <a href=\"https://wordpress.org/photos/photo/957645e31e/\">photo</a> by <a href=\"https://wordpress.org/photos/author/tomlach/\">Tomek Lach</a> from the <a href=\"https://wordpress.org/photos/\">WordPress Photo Directory</a>.</figcaption></figure>\n\n\n\n<p class=\"\">AI could assist new contributors in a number of ways: explaining the history behind a change, suggesting further reading, answering questions, and setting expectations by describing what usually happens next for similar tickets.</p>\n\n\n\n<p class=\"\">The number one thing I hear from new contributors is that it’s too hard to find something to do. That’s ironic, given how much work there is. Unfortunately, most of it just isn’t easy to find.</p>\n\n\n\n<p class=\"\">With the right prompts, AI could help new contributors by doing things like:</p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">Ask qualifying questions and use its understanding of contributor expectations and process to suggest appropriate tickets.</li>\n\n\n\n<li class=\"\">Provide detailed descriptions of what needs to be done and why it matters.</li>\n\n\n\n<li class=\"\">Recommend logical next steps or related tickets based on interest and skill level.</li>\n</ul>\n\n\n\n<p class=\"\">These types of interaction could help people get started and build confidence more quickly.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-preserving-the-human-voice\">Preserving the Human Voice</h2>\n\n\n\n<p class=\"\">Another fun idea: What if we trained AI bots in the style of long-time contributors? That kind of tool could preserve institutional knowledge while making expert guidance more accessible.</p>\n\n\n\n<p class=\"\">Many have joked before: “If only we could clone <a href=\"https://profiles.wordpress.org/sergeybiryukov/\">Sergey</a>.” Maybe AI makes the kind of mentorship our most prolific contributors provide more scalable. With well-documented public contributions, we could build agents trained on a contributor’s feedback patterns (with clear disclaimers that they are approximations, not endorsements, of course).</p>\n\n\n\n<p class=\"\">It could also be component-specific. Perhaps there’s a Jonathan bot that responds to feedback requests on Build/Test Tool tickets. Or perhaps a <a href=\"https://aaron.jorb.in/\">Jorbin bot</a> that offers a clever pun before sharing deep historical context. These bots wouldn’t replace the people behind them; they could help scale their impact and preserve bandwidth. Of course, we’d need community agreement, ethical safeguards, and consent before simulating the voice of any individual contributor.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-strengthening-ai-tools-through-documentation\">Strengthening AI Tools Through Documentation</h2>\n\n\n\n<p class=\"\">Cross-team collaboration and documentation could benefit greatly from AI. But AI is only as good as the data it’s trained on. That makes clear, consistent documentation essential, not just helpful.</p>\n\n\n\n<p class=\"\">For AI to be successfully implemented, our processes, workflows, and expectations all need to be clearly documented. Now is the time to take stock of our processes, standards, and documentation gaps. This includes teams like Performance, Accessibility, Internationalization, Design, and AI itself.</p>\n\n\n\n<p class=\"\">There are already areas where automation could be introduced thoughtfully. Trac, for example, uses a s<a href=\"https://make.wordpress.org/core/handbook/contribute/trac/keywords/\">et of action and status keywords</a> that are excellent candidates for AI-assisted workflows. A keyword like <code>fixed-major</code> could automatically trigger a pull request backport. Similarly, AI could suggest keywords, help verify whether a keyword is appropriate, or identify when something has been overlooked. But the documentation around these keywords is basic at best.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-building-educational-content\">Building Educational Content</h2>\n\n\n\n<p class=\"\">Another promising area is summarizing complex or repetitive concepts. AI excels at distilling large volumes of discussion and activity into summaries, tutorials, or templates. This could be especially useful for the Learn team, where AI might monitor contributor activity and auto-draft course outlines or video scripts for tasks that are frequently repeated.</p>\n\n\n\n<p class=\"\">Creating this content can take a considerable amount of time, and contributors who perform these tasks often don’t have the bandwidth to document them as well.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-closing-thoughts\">Closing Thoughts</h2>\n\n\n\n<p class=\"\">AI holds enormous potential to make Open Source more welcoming, efficient, and inclusive. But that’s only possible if we use it with intention. We should approach AI the same way we approach any other major change to the project. It should be evaluated like everything else: carefully, collaboratively, and with the long-term health of the community in mind.</p>\n\n\n\n<p class=\"\">How do we avoid creating more work for our future selves?</p>\n\n\n\n<p class=\"\">Let’s not just ask what AI can do. Let’s ask what it should do, what it should never replace, and how we can answer those questions together as humans.</p>\n\n\n\n<p class=\"has-text-align-right has-small-font-size\"><em>Featured image credit: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0</a> licensed <a href=\"https://wordpress.org/photos/photo/844634897d/\">photo</a> by <a href=\"https://wordpress.org/photos/author/jenniferbourn/\">Jennifer Bourn</a> from the <a href=\"https://wordpress.org/photos/\">WordPress Photo Directory</a>.</em></p>\n<p>The post <a href=\"https://jonathandesrosiers.com/2025/07/implementing-ai-in-open-source-without-losing-the-human-touch/\">Implementing AI in Open Source Without Losing the Human Touch</a> appeared first on <a href=\"https://jonathandesrosiers.com\">Jonathan Desrosiers</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:\"Tue, 22 Jul 2025 18:05:39 +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:\"Jonathan Desrosiers\";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:38;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:56:\"Tammie Lister: Optimizing triage with AI starting points\";s: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://binatethoughts.com/?p=2398\";s: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:69:\"https://binatethoughts.com/optimizing-triage-with-ai-starting-points/\";s: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:7860:\"<p>Back in June, I wrote about how <a href=\"https://binatethoughts.com/optimising-triage-and-review-processes-in-wordpress-using-ai/\">triage and reviews</a> in WordPress could be optimized with the help of AI. Since then, discussions have taken place, and last week, James LePage released the <a href=\"https://github.com/Jameswlepage/trac-mcp\">Trac MCP Server</a>, which is now capable of interacting with Claude and ChatGPT. A demo of the MCP server is available <a href=\"https://mcp-server-wporg-trac-staging.a8cai.workers.dev\">here</a>. With this in mind, I would like to share my perspective on how this can be applied now.</p>\n\n\n\n<p>Before I dive in, it&#8217;s worth noting that this isn&#8217;t a problem that can be solved by one person or one view. It also doesn&#8217;t just solve looking at one tool or Trac, GitHub alone. It happens during discussions, when multiple people think about this and then explorations take place. It does, however, need to start, and we can do that without disrupting our existing flows. AI can empower us, and tools like this can improve and boost our flows today.</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>MCP Servers: Lightweight programs that each expose specific capabilities through the standardized Model Context Protocol</p>\n\n\n\n<p class=\"has-medium-font-size\"><a href=\"https://modelcontextprotocol.io/introduction\">https://modelcontextprotocol.io/introduction</a></p>\n</blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">The issue</h2>\n\n\n\n<p>WordPress has thousands of open tickets spanning many years. Humans are not as good at pattern matching as AI. We do, however, pattern match, and we work well when they are brought to our attention. Whilst closing all tickets via automation would be a friction point, using AI to support, guide and surface what should be worked on makes a lot of sense. Traditional triage is manual, often even though we can use the best reports, which are not as scalable as we would like.</p>\n\n\n\n<p>The current reporting tools in Trac are limited to the interface. They are bound by query construction and are not often created using natural language, so their formation is disjointed and frequently problematic for many to access.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Starting with prompts</h2>\n\n\n\n<p>This is where tools like the Trac MCP Server can be beneficial. For example, Claude allows you to prompt to get an output. If we think of these as &#8216;reports&#8217; in the loose term, they can be tested in triage sessions.</p>\n\n\n\n<p>The Trac MCP Server unlocks the data and could, through Claude or ChatGPT, even surface the project&#8217;s health. A key point, though, is not to use it to replicate the tasks that reports do today. It can do more and should do.</p>\n\n\n\n<p>Building up fidelity like this is a process we are all familiar with in engineering. You algorithmic work out something, then you build it, then you automate it. If you utilise AI, you can achieve better results, and we all know this. It&#8217;s just tempting to skip to the good part of letting AI hallucinate a prompt sometimes.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Not just triage, context</h2>\n\n\n\n<p>Through this MCP server, access is available to all WordPress development history in Trac. Every bug, enhancement, discussion and decision. This goes beyond triage, so worth noting. Imagine you want, for example, context on decisions. You can do that by querying a ticket. I decided to go on a little journey.</p>\n\n\n\n<p>For example, consider the following prompt: <strong>&#8220;What is happening in WordPress development right now?&#8221;</strong></p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img alt=\"\" class=\"wp-image-2422\" height=\"1024\" src=\"https://binatethoughts.com/wp-content/uploads/2025/07/image-2-910x1024.png\" width=\"910\" /></figure>\n\n\n\n<p>Perhaps you&#8217;d like to delve a bit deeper into: <strong>&#8220;What types of tickets are sitting open vs. getting fixed?&#8221;</strong></p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img alt=\"\" class=\"wp-image-2424\" height=\"1024\" src=\"https://binatethoughts.com/wp-content/uploads/2025/07/image-3-891x1024.png\" width=\"891\" /></figure>\n\n\n\n<p>I then went a little more into things: <strong>&#8220;Can I predict which tickets need attention?&#8221;</strong>. I began thinking about a severity classification framework in collaboration with Claude; by doing this, I could create a report that queried. This would give me an action list to compare against the predictions. This is how to level up this type of data.</p>\n\n\n\n<p>The key issue to resolve here is figuring out which classification framework to use and how an agreement is reached. It&#8217;s all well and suitable for each of us to use a different one that we vibe with, but there needs to be a standard for the project. This is achievable, though, and it starts with using all we know and use daily in triage. Once we have that, we can have a standard to measure by.</p>\n\n\n\n<p>This can be used in a variety of applications, from triage to product management and writing posts to providing context for yourself. Having this type of easy, natural access unlocks the hidden history of WordPress development.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Extra level</h2>\n\n\n\n<p>If the reports are consistently surfacing correct results, we should add even proposed closings. We only do that once the reports are consistent. An MCP server delivers data, allowing AI to access it, and that&#8217;s where the power comes in.</p>\n\n\n\n<p>This may not require an interface. At some point, perhaps, but right now, exploring what can be unlocked by prompting is where the true power lies. You can pipe it in and generate something. You can vibe a dashboard (I did for a timebox fun), but that&#8217;s a nice-to-have tool, or at least distracts from how useful this can be if the prompting can be refined and data dug into. The more personally I use tools like this, the less I want an interface beyond a prompt, at least to start. I want to work out how they will be helpful.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Considerations</h2>\n\n\n\n<p>As with anything freshly baked like this, there are considerations and caveats. Trac is just one place where things happen; GitHub is the other, so we do need a way to see a holistic picture to know the entire state. Other things we likely need are an easier way to query based on users, although the reports in Trac are well-suited for that purpose. We need to be continuously mindful that this is not to replicate or replace those, but go beyond and give us something they don&#8217;t, not be bound by the reporting tool&#8217;s interface.</p>\n\n\n\n<p>Access to this meant I used my Claude account, and while many have this, we need to be considerate that not everyone has access to these tools yet at the paid tiers. That was why seeing ChatGPT support added was great. Overall, though, the barrier to entry is low, and I encourage people to explore and see what they can create. </p>\n\n\n\n<h2 class=\"wp-block-heading\">Reflections</h2>\n\n\n\n<p>The future of open source development isn&#8217;t just about better code; it&#8217;s about better intelligence on how we build that code. We need that access where we work. One pattern I have noticed with this MCP server is how useful it is to have it exist for me. Simply knowing I can prompt like this means I do. There is a strong case to be made for no interface, but reusable prompting at least while we work out agentic approaches to triage.</p>\n\n\n\n<p>I find myself exploring this data because it is accessible to me. I say that as someone who can create reports in Trac. But, there is something much more human about the way we create prompts. This is also the first week of the Trac MCP server. Let&#8217;s see what the next iterations bring and where others take this.</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, 22 Jul 2025 11: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:18:\"binatethoughts.com\";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:39;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:80:\"Open Channels FM: The Indonesia WordPress Community Gets Ready for WordCamp Asia\";s: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=103551\";s: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://openchannels.fm/the-indonesia-wordpress-community-gets-ready-for-wordcamp-asia/\";s: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:206:\"In the final WordPress Event Talk, the Indonesian community discussed Indonesia\'s readiness to host WordCamp Asia, emphasizing local strengths, challenges, and the need for a phased approach to preparation.\";s: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, 22 Jul 2025 05:56: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:5:\"BobWP\";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:40;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:87:\"Open Channels FM: The Power (and Profits) of Being a Generalist in WordPress Consulting\";s: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=101221\";s: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:92:\"https://openchannels.fm/the-power-and-profits-of-being-a-generalist-in-wordpress-consulting/\";s: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:217:\"Three WordPress veterans argue that generalists are valuable in tech, emphasizing adaptability, effective communication, and problem-solving abilities over narrow specialization for achieving higher consultancy rates.\";s: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, 21 Jul 2025 12:12: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:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:41;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:120:\"Gutenberg Times: AI Building Blocks, WordCamp US, WordPress 6.9 Planning, Block Developer Cookbook—Weekend Edition 334\";s: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=40875\";s: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:126:\"https://gutenbergtimes.com/ai-building-blocks-wordcamp-us-wordpress-6-9-planning-block-developer-cookbook-weekend-edition-334/\";s: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:23102:\"<p>Hi there, </p>\n\n\n\n<p>It&#8217;s good to be back from vacation! Norway is a great country with a rich history, excellent food, great culture, and huge prices. It is absolutely worth it, though. </p>\n\n\n\n<p>While I was away, some great educational programs came online. I am glad <strong>Destiny Kanno</strong> published <a href=\"https://make.wordpress.org/community/2025/07/18/how-to-talk-about-and-support-the-new-wordpress-education-initiatives/\">How to Talk About and Support the New WordPress Education Initiatives</a> to catch me and you up on all the fabulous opportunities to help young folks get acquainted with WordPress and learn some life skills, too. </p>\n\n\n\n<p>For the first time in three years, I will be back at <strong>WordCamp US in Portland, OR, August 26 to 29, 2025</strong>. Will you be there? I would love to see you again in person. It&#8217;s been too long! <a href=\"https://us.wordcamp.org/2025/tickets/\">Get your ticket now.</a> The organizer <a href=\"https://x.com/WordCampUS/status/1946313007815893102\">started announcing speakers</a>. </p>\n\n\n\n<p>And now back to regular programming. Enjoy the newsletter. </p>\n\n\n\n<p>Yours, <img alt=\"💕\" class=\"wp-smiley\" src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f495.png\" style=\"height: 1em;\" /><br /><em>Birgit</em></p>\n\n\n<section class=\"wp-block-newsletterglue-group\" style=\"padding-top: 10px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px; margin-top: 0px; margin-bottom: 0px;\">\n<div class=\"wp-block-group has-light-background-background-color has-background\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p><strong>Table of Contents</strong></p>\n\n\n\n<nav class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/ai-building-blocks-wordcamp-us-wordpress-6-9-planning-block-developer-cookbook-weekend-edition-334/#0-word-press-release-information\">Developing Gutenberg and WordPress</a></li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/ai-building-blocks-wordcamp-us-wordpress-6-9-planning-block-developer-cookbook-weekend-edition-334/#0-p\">Plugins, Themes, and tools for #nocode site builders and owners</a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/ai-building-blocks-wordcamp-us-wordpress-6-9-planning-block-developer-cookbook-weekend-edition-334/#new-and-updated-plugins\">New and updated Plugins</a></li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/ai-building-blocks-wordcamp-us-wordpress-6-9-planning-block-developer-cookbook-weekend-edition-334/#classic-vs-blocks-vs-page-builders\">Classic vs. Blocks vs. Page Builders</a></li></ol></li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/ai-building-blocks-wordcamp-us-wordpress-6-9-planning-block-developer-cookbook-weekend-edition-334/#2-word-press-6-0-1-and-6-1-scheduled\">Theme Development for Full Site Editing and Blocks</a></li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https://gutenbergtimes.com/ai-building-blocks-wordcamp-us-wordpress-6-9-planning-block-developer-cookbook-weekend-edition-334/#3-building-themes-for-fse-and-word-press\">Building Blocks and Tools for the Block editor.</a></li></ol></nav>\n</div></div>\n</section>\n\n<div class=\"wp-block-newsletterglue-showhide ng-block\" width=\"100%\"></div>\n\n\n<h2 class=\"wp-block-heading\" id=\"0-word-press-release-information\">Developing Gutenberg and WordPress</h2>\n\n\n\n<p><a href=\"https://wordpress.org/news/2025/07/wordpress-6-8-2-maintenance-release/\"><strong>WordPress 6.8.2 Maintenance Release</strong></a> came out this week. Release lead <strong>Jean Baptist Audras</strong> mentioned in his release post that <a href=\"https://core.trac.wordpress.org/query?resolution=fixed&amp;milestone=6.8.2&amp;group=component&amp;col=id&amp;col=summary&amp;col=milestone&amp;col=owner&amp;col=type&amp;col=status&amp;col=priority&amp;order=priority\">20 core</a> and <a href=\"https://github.com/WordPress/gutenberg/pull/70557\">15 </a>bloc<a href=\"https://github.com/WordPress/gutenberg/pull/70557\">k editor</a> fixes were included in this minor release. Update now to benefit from these bug fixes. </p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p>Core committer <strong>Jeffrey Paul</strong> posted the <strong><a href=\"https://make.wordpress.org/core/2025/07/11/wordpress-6-9-planning-proposal-and-call-for-volunteers/\">WordPress 6.9 Planning Proposal and Call for Volunteers</a>.</strong> The deadline to apply for the release squad is July 25th, 2025. Beta 1 is scheduled for October 21, RC 1 for November 11, and the final release date is December 2, 2025.</p>\n\n\n\n<p>Just doing some quick calculations here: It looks like the upcoming release is going to pack in all the goodies from Gutenberg versions 20.5 to 21.9, assuming we keep up that two-week release schedule.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p><strong>Justin Tadlock</strong> published <a href=\"https://developer.wordpress.org/news/2025/07/whats-new-for-developers-july-2025/\"><strong>What&#8217;s new for Developer (July 2025)</strong></a> and lists phased plugin updates, custom social icons, and more in this summer edition of the monthly WordPress developer roundup. </p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p>Speaking of the WordPress Developer Blog, <strong>Mary Baum</strong> put out a call for writers! If you like writing technical tutorials and sharing your learnings or research with WordPress developers, get the skinny from her post: <a href=\"https://developer.wordpress.org/news/2025/07/the-developer-blog-needs-you/\"><strong>The Developer Blog needs you!</strong></a></p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p><strong>Hector Prieto</strong> just managed the release of <a href=\"https://github.com/WordPress/gutenberg/releases/tag/v21.2.0\"><strong>Gutenberg 21.2.</strong></a> It brings further refinements to the interface , Dataviews and continued progress on toolspanel implementation. You can read the full release post with details <a href=\"https://make.wordpress.org/core/2025/07/18/whats-new-in-gutenberg-21-2-16-july/\"><strong>on what’s new in Gutenberg 21.2? (16 July)</strong></a></p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p><strong>James LePage</strong> gives you a run down of the <strong><a href=\"https://make.wordpress.org/ai/2025/07/17/ai-building-blocks/\">AI Building Blocks for WordPress</a>.</strong> Each building block is listed with a brief description and a more detailed overview article linked for further reading.</p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https://make.wordpress.org/ai/2025/07/17/php-ai-api/\">PHP AI Client SDK</a></li>\n\n\n\n<li><a href=\"https://make.wordpress.org/ai/2025/07/17/abilities-api\">Abilities API</a> (former Feature API) </li>\n\n\n\n<li><a href=\"https://make.wordpress.org/ai/2025/07/17/mcp-adapter\">MCP Adapter</a></li>\n\n\n\n<li><a href=\"https://make.wordpress.org/ai/2025/07/17/ai-experiments-plugin\">AI Experiments Plugin</a></li>\n</ul>\n\n\n\n<p>The plugins will be worked on as canonical/feature plugins to avoid early lock-in in a space that moves really, really fast at the moment. LePage also gives context to how this work overlaps with the initiatives of Gutenberg Phase 3: new admin design, collaborative editing, and the work on revamping the Media Library. </p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p>In this week&#8217;s live stream, <strong>JuanMa Garrido</strong> covered each of the <strong>building blocks</strong>. You can watch the recording on YouTube: <a href=\"https://www.youtube.com/watch?v=Ban33rXA9as\" rel=\"noreferrer noopener\" target=\"_blank\"><strong>Core projects for AI in WordPress</strong></a></p>\n\n\n\n\n\n<div class=\"wp-block-group has-light-background-background-color has-background\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><img alt=\"🎙\" class=\"wp-smiley\" src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f399.png\" style=\"height: 1em;\" /> The latest episode is <a href=\"https://gutenbergtimes.com/podcast/gutenberg-changelog-119-wordpress-6-8-2-and-6-9-gutenberg-21-1-21-2-and-21-3-releases/\">Gutenberg Changelog 119—WordPress 6.8.2 and 6.9, Gutenberg 21.1, 21.2, and 21.3 Releases</a> with Tammie Lister. </p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-no-vertical-margin\"><img alt=\"Tammie Lister and Birgit Pauli-Haack recording Gutenberg Changelog 119\" class=\"wp-image-40972\" height=\"184\" src=\"https://i0.wp.com/gutenbergtimes.com/wp-content/uploads/2025/07/Screenshot-2025-07-25-at-10.53.45.png?resize=652%2C184&#038;ssl=1\" width=\"652\" /></figure>\n\n\n\n<p class=\"has-small-font-size\"><em>If you are listening via Spotify, please leave a comment. If you listen via other podcast apps, please leave a review. It&#8217;ll help with the distribution.</em></p>\n</div></div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"0-p\">Plugins, Themes, and tools for #nocode site builders and owners</h2>\n\n\n\n<p>In his latest video, <strong><a href=\"https://www.youtube.com/watch?v=bHVpoYVDXeg\">Designing with the Columns block</a></strong>, <strong>Wes Theron</strong> guides you through how to use the columns block to build various layouts to build sites. He covers how to structure and organize your content. He’ll show you how to add, customize, and design layouts with multiple columns—ideal for displaying text, images, and other blocks side by side.</p>\n\n\n<div class=\"wp-block-newsletterglue-showhide ng-block\" width=\"100%\">\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n\n</div></figure>\n</div>\n\n\n<h3 class=\"wp-block-heading\" id=\"new-and-updated-plugins\">New and updated Plugins</h3>\n\n\n\n<p><strong>Brian Coords</strong>, developer advocate at Woo, announced &#8220;<a href=\"https://developer.woocommerce.com/2025/07/14/woocommerce-10-0-investing-in-accessibility/\" rel=\"noreferrer noopener\" target=\"_blank\">WooCommerce 10.0 is here!</a> </p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Major frontend accessibility improvements</li>\n\n\n\n<li>Shareable checkout URLs</li>\n\n\n\n<li>Coupon enhancements</li>\n\n\n\n<li>A better product importer.</li>\n\n\n\n<li>And over 400 commits from 67 contributors!&#8217;</li>\n</ul>\n\n\n\n<p>The <a href=\"https://developer.woocommerce.com/2025/07/14/woocommerce-10-0-investing-in-accessibility/\">release notes</a> have all the details including screenshots and links. </p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p><strong>Remote Data Blocks</strong> is a WordPress plugin by Automattic&#8217;s WordPressVIP team. It lets you fetch and display remote data in Gutenberg using customizable blocks. It’s ideal for flat, consistent data sources like APIs or Google Sheets. You map data to layouts, and the plugin handles fetching, caching, and rendering inside the block editor. <a href=\"https://remotedatablocks.com/docs/\">Documentation is available on this site</a>. You can <a href=\"https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/Automattic/remote-data-blocks/trunk/blueprint.json\">test it with Playground.</a></p>\n\n\n\n<p><strong>Stephen Edde</strong> blogged about it: <a href=\"https://wpvip.com/blog/bring-content-to-life-with-remote-data-blocks/\"><strong>Bring Your Content to Life With Remote Data Blocks</strong></a>. He also invites you to the webinar <a href=\"https://wpvip.com/event/launched-wordpress-vips-newest-product-solutions/\">Launched: The Newest Product Solutions</a> from WordPress VIP on August 21, 2025, at 18:00 UTC <br /></p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p><strong>Nathan Wrigley</strong> and <strong>Dan Maby</strong> have just rolled out the beta version of their awesome new <a href=\"https://www.podcasterplus.com\">Podcaster Plus plugin</a>! It makes building podcast websites easy without any coding. It pulls your RSS feed automatically to show episodes and offers customizable blocks and a responsive player which works well on any device. It’s designed for podcasters and agencies managing multiple shows, focusing on quick setup and flexible layouts within WordPress. Or so the promise. You can sign up for the beta<a href=\"https://www.podcasterplus.com/beta/\"> version</a> with your email address.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p><strong>Lesley Sim</strong> and <strong>Ahmed Fouad</strong> are the awesome duo behind Newsletter Glue, and guess what? They just sold it! <img alt=\"🎉\" class=\"wp-smiley\" src=\"https://s.w.org/images/core/emoji/16.0.1/72x72/1f389.png\" style=\"height: 1em;\" /> Now, they’ve rolled out their new project, <strong><a href=\"https://eventkoi.com/\">EventKoi</a></strong>, which is a super cool events calendar plugin for WordPress fans. Want to know more about what they’re up to? Check out the sneak peek video and hop on that waitlist!</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p><strong>Marco Almeida</strong> from Naked Cat Plugins just published a free plugin called <a href=\"https://wordpress.org/plugins/lang-attribute-blocks/\"><strong>Language Attribute for Container Blocks</strong></a>. Once you install it, you can easily add an <code>lang</code> HTML attribute to your Group, Columns, and Cover blocks on your site. It helps accessibility tools and browsers figure out the language of different sections on your page. The readme file mentions that it came to pass as a community collaboration out of WordCamp Europe.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p><strong>Paul Halfpenny</strong> announced <a href=\"https://personalizewp.com/blog/announcements/personalizewp-pro-is-now-completely-free-choose-your-perfect-personalization-solution/\"><strong>PersonalizeWP Pro Is Now Completely Free: Choose Your Perfect Personalization Solution</strong></a>. &#8220;WordPress personalization just became accessible to everyone.&#8221; It also meant as a contribution to help WordPress stay competitive with other platforms that offer personalization out of the box. Halfpenny explains about the two version, PersonalizeWP Lite and Pro, for different use cases. The plugin helps site owners to provide different content depending on user behavior or make it visible under different conditions, depending on user types. while keeping within privacy guidelines.</p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"classic-vs-blocks-vs-page-builders\">Classic vs. Blocks vs. Page Builders</h3>\n\n\n\n<p><strong>Sagar Sharma</strong>, from Lubus, just dropped a post titled <a href=\"https://lubus.in/blog/migrated-to-wordpress-block-editor-fse\"><strong>Embracing What We Preach: Our Journey Migrating to WordPress Block Editor &amp; Full Site Editing</strong></a>. It’s all about their journey moving the agency&#8217;s website from the old-school WordPress setup to the new block editor and block theme. Why? To get more flexibility, speed things up, cut down on plugins, and keep the design consistent. You&#8217;ll get the scoop on their rebranding, how they rolled out the FSE migration step by step, and how they’re fine-tuning things along the way. Sharma also shares how they empowered non-tech folks to handle content and how this switch seriously leveled up user experience and SEO scores.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p>While Lubus works with middle and large clients, <strong>Patricia Brun Torre</strong> tells a similar story on why she <a href=\"https://patriciabt.com/blog/i-love-the-wp-block-editor-site-editor-and-the-gutenberg-project\"><strong>loves the WP block editor, site editor, and the Gutenberg project</strong></a>. She raves about how the WordPress block editor and site editor are super fast, easy to use, work without extra plugins and make teaching clients a breeze. She loves how everything is intuitive, copy-paste just works, and you can design full sites—including headers, footers, and layouts—without touching code.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p>At WordCamp Krakow, a panel discussion was held around Page Builders. Magdalena Pjoreck, former freelancer and now developer at a hosting company; Raitis Sevelis, owner of WPBakery; and Robert Windisch, owner of Syde, an enterprise agency, all come to the discussion from different angles. The conversation was recorded and is <a href=\"https://wordpress.tv/2025/07/14/panel-discussion-page-builders/\">available on WordPressTV</a>.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"2-word-press-6-0-1-and-6-1-scheduled\">Theme Development for Full Site Editing and Blocks</h2>\n\n\n\n<p><strong>Bud Kraus</strong> published a new tutorial on how to apply <a href=\"https://kinsta.com/blog/customize-block-in-child-theme/\"><strong>custom styling for WordPress block themes using a child theme</strong></a>. He explains that child themes remain essential for customizing WordPress block themes, allowing safe style overrides and customizations without altering parent theme files. Kraus details how, despite the flexibility of block themes and theme.json, child themes are still crucial for advanced customization in WordPress. He demonstrates creating a child theme for the Twenty Twenty-Five theme, using its own style.css and functions.php to safely override styles, define custom block styles, and set up style variations, ensuring control without modifying parent theme files. <a href=\"https://kinsta.com/blog/customize-block-in-child-theme/\">​</a></p>\n\n\n<section class=\"wp-block-newsletterglue-callout undefined not-color-set\" style=\"border-color: #f9f9e5; border-radius: 22px; border-style: solid; border-width: 0; padding-top: 20px; padding-bottom: 20px; padding-left: 20px; padding-right: 20px; text-align: left; margin-left: 0; margin-right: 0; margin-top: 0px; margin-bottom: 0px; background-color: #f9f9e5;\">\n<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—Index 2025&#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. The previous years are also available: <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>\n</section>\n\n\n<h2 class=\"wp-block-heading\" id=\"3-building-themes-for-fse-and-word-press\">Building Blocks and Tools for the Block editor.</h2>\n\n\n\n<p><strong>Ryan Welcher</strong> has been working on his <a href=\"https://blockdevelopercookbook.com/\">Block Developer Cookbook</a> for a few years. Hundreds of developers worked through examples at workshops at WordCamp Asia and WordCamp Europe. Now he brought it all to YouTube in one big livestream session. <a href=\"https://www.youtube.com/watch?v=NJsncDuSc94\"><strong>The Block Developer Cookbook: Live Stream Edition</strong></a>. You can use it to learn how to build custom WordPress blocks or freshen up on certain aspects of it. The video is full of real-world block development techniques , including custom blocks, variations, transforms, interactivity, and more. </p>\n\n\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\n\n\n\n<p>In this week&#8217;s stream, Jonathan Bossenger covered Feature API updates &amp; building a block with Claude Code. He wrote, &#8220;This week, I reviewed the latest update to the Feature API and tested it against my course creation flow. After that, I wanted to see how easy it would be to build a block based on existing HTML/CSS and JS, but only using Claude Code in PhpStorm. The results were pretty impressive, but not perfect, so I decided to try coding it myself. However, I soon discovered that it had been so long since I built a block that I&#8217;d forgotten how to do it.&#8221;</p>\n\n\n<div class=\"wp-block-newsletterglue-showhide ng-block\" width=\"100%\">\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n\n</div></figure>\n</div>\n\n<section class=\"wp-block-newsletterglue-callout undefined not-color-set\" style=\"border-color: #eeeeee; border-radius: 26px; border-style: solid; border-width: 0; padding-top: 20px; padding-bottom: 20px; padding-left: 20px; padding-right: 20px; text-align: left; margin-left: 0; margin-right: 0; margin-top: 0px; margin-bottom: 0px; background-color: #f3efe9;\">\n<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 builds for testing and review.</p>\n\n\n\n<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>\n\n\n\n<p><img alt=\"GitHub all releases\" src=\"https://img.shields.io/github/downloads/bph/gutenberg/total?style=for-the-badge\" /></p>\n</section>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Questions? Suggestions? Ideas? </em><br /><em>Don&#8217;t hesitate to send <a href=\"mailto:pauli@gutenbergtimes.com\">them via email</a> or</em><br /><em> send me a message on WordPress Slack or Twitter @bph</em>.</p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" />\n\n\n\n<p class=\"has-text-align-center has-small-font-size\">For questions to be answered on the <a href=\"http://gutenbergtimes.com/podcast\">Gutenberg Changelog</a>, <br />send them to <a href=\"mailto:changelog@gutenbergtimes.com\">changelog@gutenbergtimes.com</a></p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" />\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:7:\"pubDate\";a:1:{i:0;a:5:{s:4:\"data\";s:31:\"Sat, 19 Jul 2025 00:16: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:18:\"Birgit Pauli-Haack\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:42;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:76:\"Felix Arntz: How Open Source Contributions Elevate Your Professional Journey\";s: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:30:\"https://felix-arntz.me/?p=2173\";s: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:88:\"https://felix-arntz.me/blog/open-source-contributions-elevate-your-professional-journey/\";s: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:9299:\"<p>In <a href=\"https://felix-arntz.me/blog/10-lessons-from-10-years-of-contributing-to-wordpress-core/\" rel=\"noreferrer noopener\" target=\"_blank\">my last post, I shared 10 lessons from 10 years of contributing to WordPress Core</a>. If you&#8217;re new to open source, I encourage you to review those insights. But today, I want to talk about something different: Even though you hopefully contribute out of passion and goodwill, giving back to an open source project can also give something significant back to you. Some of it my previous post may hint at, but in this post I&#8217;d like to look at it more broadly.</p>\n\n\n\n<p>As I mentioned in my previous post, contributing to WordPress Core has changed my career, and indirectly even many other aspects of my life, for the better in so many ways. And while my experience is rooted in WordPress Core, the benefits that OSS contributions can have for your professional development largely apply to almost any sizable open source project.</p>\n\n\n\n<span id=\"more-2173\"></span>\n\n\n\n<p>One of the most profound advantages of contributing to a popular open source project is the unparalleled experience of working on software with a massive and diverse user base. Imagine a project used by hundreds of thousands, or in WordPress&#8217;s case, millions of sites globally. This kind of scale exposes you to a multitude of edge cases, performance considerations, and accessibility challenges that are rarely encountered in smaller, internal projects. Outside of open source projects, this hands-on experience is often only accessible through roles at large tech corporations or highly successful startups with popular products, with complex eligibility requirements. That barrier of entry is wildly different for open source: Established project contributors are typically more welcoming to contributors, as support is almost always needed and appreciated.</p>\n\n\n\n<p>An open source project doesn&#8217;t demand five years of professional experience, a specific degree, or a list of impressive previous projects. You can simply show up and demonstrate your capabilities through initiative, passion, dedication, understanding, and persistence. As long as you are interested in supporting the project and maintain a curious and kind mindset, you can learn and grow simply by contributing to the project itself.</p>\n\n\n\n<p>The experience you gain from working on something large that impacts countless people globally, while distinct from a corporate product, can be immensely beneficial for your general professional development. This experience can even be a significant asset in landing a job at one of those larger tech companies, if that&#8217;s something you&#8217;re interested in.</p>\n\n\n\n<p>The more involved you become in an open source project, especially one relevant to the broader tech industry, the more you start to build a reputation. This reputation could be for being a reliable, efficient, nuanced, or benevolent contributor, or a combination of these traits. You&#8217;ll find people who appreciate your work, potentially even individuals you&#8217;ve long looked up to. While there might occasionally be disagreements or condescending voices, the positive feedback and support will almost certainly be the majority.</p>\n\n\n\n<p>As you consistently show up to contribute and do the work, it can also significantly help you build relationships with peers from whom you can learn, and perhaps even forge lasting friendships. For contractors, it can lead to more interesting gigs, and in some cases, companies might even reach out to you directly rather than you having to pursue them. And, with time, dedication, and a bit of luck, even those bigger job opportunities may find you.</p>\n\n\n\n<h2 class=\"wp-block-heading\">My Personal Journey: From Imposter Syndrome to Google</h2>\n\n\n\n<p>Let me share a bit of my own story and how contributing to WordPress has shaped my career. When I first started contributing to WordPress Core in 2015, I battled a strong case of imposter syndrome. It took several months for me to truly grasp that I, too, could make substantial contributions, just like others, all while continuing to learn – after all, everyone has their unique strengths. Eventually, I found myself leading the development of new features that would land directly in WordPress Core, something I couldn&#8217;t have imagined when I started. A special shoutout goes to <a href=\"https://jeremyfelt.com/\" rel=\"noreferrer noopener\" target=\"_blank\">Jeremy Felt</a>, who welcomed me into the WordPress Multisite team and empowered me as a contributor. I also want to thank <a href=\"https://profiles.wordpress.org/mahype/\" rel=\"noreferrer noopener\" target=\"_blank\">Sven Wagener</a> for trusting me early on with exciting open source freelancing work.</p>\n\n\n\n<p>The contributions I made, coupled with actively participating in community events like WordCamps, meeting new people, and nurturing my curiosity are a huge part of where I am today. Sometimes, I want to say that being a little bold also helped – but then again, as I&#8217;m writing this I wonder whether I only <em>thought</em> of some of my actions as bold <em>because</em> I was feeling like an imposter, and maybe those were just little moments where I overcame it.</p>\n\n\n\n<p>During my time as a freelancer, I saw a significant increase in interesting contracts as my reputation as a contributor grew and I became more recognized within the WordPress community. I ended up contracting for some of the largest companies in the ecosystem, and often, these collaborations simply arose from casual conversations at events.</p>\n\n\n\n<p>I always loved being a freelancer. Something that only some friends know about me is that I used to say, &#8220;I&#8217;m never going to quit freelancing, except maybe for Google.&#8221; To be clear, I mostly said that to emphasize how much I enjoyed freelancing. While I always thought working for Google would be incredible, I never in my wildest dreams believed it would become a realistic option for me.</p>\n\n\n\n<p>However, what transpired in 2018 completely blew me away. At that time, I had read a blog post by a Googler named Alberto Medina, announcing that Google was hiring for a new team focused on the WordPress ecosystem. Even though I had already achieved certain things as a contributor that made me proud, I found myself battling imposter syndrome again. &#8220;Sure, things are going well, but Google? Don&#8217;t these companies hire the most talented engineers in the world? That&#8217;s not me.&#8221; This was early 2018. Fast forward to WordCamp Europe 2018, I was exploring the Google booth when my friend <a href=\"https://weston.ruter.net/\" rel=\"noreferrer noopener\" target=\"_blank\">Weston Ruter</a> introduced me to <a href=\"https://profiles.wordpress.org/albertomedina/\" rel=\"noreferrer noopener\" target=\"_blank\">Alberto Medina</a> – yes, the same Alberto who worked at Google and wrote the post I mentioned earlier. One of the first things that emerged in our conversation was that Alberto already knew who I was. OMG! I kept my cool externally, but I was completely taken aback! Over the course of the WordCamp, we continued our conversations about the opportunity at Google. Eventually, I applied for a role on the new team. With Alberto&#8217;s continued support throughout the application process and a lot of preparation on my part, I went through the interviews and ultimately received a job offer. And to make the deal even sweeter, I learned I would be working alongside a few other WordPress folks whom I already considered friends. This is how I started working for Google, and I&#8217;m still here today.</p>\n\n\n\n<p>Please forgive the detour, but this is my personal prime example of how contributing to open source, specifically WordPress, significantly propelled my professional career. Selfishly, I also love to reminisce about this exciting time – it completely turned my life upside down, in so many positive ways.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Explore Open Source – It Might Be a Game Changer for Your Career</h2>\n\n\n\n<p>Contributing to open source can be a huge lever for your career. If you haven&#8217;t yet worked on the massively impactful projects that many job openings seem to demand, or if you&#8217;re fresh out of college, I strongly encourage you to explore open source. Heck, take some time to look into it even if you&#8217;re <em>in</em> college. For me, that was a time where I had less financial responsibility, which allowed me to put in several hours contributing to WordPress Core each week, alongside the freelancing I was doing at the same time.</p>\n\n\n\n<p>But at the end of the day, don&#8217;t contribute to OSS solely for professional gain, but do it for your passion. Find an open source project that genuinely interests you and that you can get excited about. That could be any relatively popular open source project – or it could be WordPress. I would certainly love to welcome you as a WordPress Core contributor.</p>\n<p>The post <a href=\"https://felix-arntz.me/blog/open-source-contributions-elevate-your-professional-journey/\">How Open Source Contributions Elevate Your Professional Journey</a> appeared first on <a href=\"https://felix-arntz.me\">felix-arntz.me</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:\"Thu, 17 Jul 2025 16:27: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:5:\"Felix\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:43;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:66:\"Open Channels FM: Democratizing Publishing Beyond Business Content\";s: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=100681\";s: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/democratizing-publishing-beyond-business-content/\";s: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:\"The future of online publishing is all about personal expression, not just business stuff. WordPress needs to embrace short videos and everyday moments to stay relevant and inclusive.\";s: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, 17 Jul 2025 11:13: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:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:44;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:69:\"Akismet: Version 5.5 of the Akismet WordPress plugin is available now\";s: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:28:\"http://akismet.com/?p=284578\";s: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:37:\"https://akismet.com/blog/akismet-5-5/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:1133:\"<p>Version 5.5 of <a href=\"http://wordpress.org/plugins/akismet/\">the Akismet plugin for WordPress</a> is now available. This update contains the following improvements:</p>\n\n\n<ul class=\"wp-block-list\"><li>We&#8217;ve enabled webhooks for all users. Webhooks allow the Akismet servers to do extra processing for certain comments without making your site wait for a response. If a comment is determined to be spam, the Akismet server will notify your site once the extra processing is done. This should reduce spam without affecting performance, and that&#8217;s a Good Thing.</li>\n\n<li>We&#8217;ve ensured that the CSS for the Akismet widget is only included when the widget is included. And that&#8217;s a Good Thing.</li>\n\n<li>We&#8217;ve improved the color contrast on certain buttons for better accessibility. And that&#8217;s a Good Thing.</li></ul>\n\n\n<p>To upgrade, visit the Updates page of your WordPress dashboard and follow the instructions. If you need to download the plugin zip file directly, links to all versions are available in <a href=\"http://wordpress.org/plugins/akismet/\">the WordPress plugins directory</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, 16 Jul 2025 18:25:06 +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:17:\"Christopher Finke\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:45;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"WPTavern: #177 – Charlotte Bax on Reducing Your Website’s Carbon Footprint\";s: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=197651\";s: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:89:\"https://wptavern.com/podcast/177-charlotte-bax-on-reducing-your-websites-carbon-footprint\";s: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:46635:\"<details>Transcript<div>\n<p>[00:00:19] <strong>Nathan Wrigley:</strong> Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.</p>\n\n\n\n<p>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, reducing your WordPress website&#8217;s carbon footprint.</p>\n\n\n\n<p>If you&#8217;d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast. And you can copy that URL into most podcast players.</p>\n\n\n\n<p>If you have a topic that you&#8217;d like us to feature on the podcast, I&#8217;m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox, and use the form there.</p>\n\n\n\n<p>So on the podcast today we have Charlotte Bax. Charlotte is a sustainable web designer with a background in both environmentally conscious living and technology. Beginning her journey as a sustainable lifestyle blogger, she soon merged her passion for sustainability with her skills in web design, rebranding herself as Digihobbit.</p>\n\n\n\n<p>For several years now, Charlotte has been focused on building websites that prioritize low carbon footprints, and she is also the founder of the climate tech startup ENNOR Toolbox for Online Sustainability, which helps measure the CO2 emissions of websites and web applications.</p>\n\n\n\n<p>When we made this recording, Charlotte had just finished presenting at WordCamp Europe on the topic of how to make your website more sustainable, and her presentation is the topic of the podcast today.</p>\n\n\n\n<p>We talk about digital environmental impact, the hidden pollution our websites create through their energy use and infrastructure. Charlotte explains some striking facts about the carbon footprint of ICT, noting that if the internet were a country, it would be the seventh largest polluter globally.</p>\n\n\n\n<p>She shares a wide array of practical steps for web professionals to reduce the environmental impact of their sites. You&#8217;ll hear about the benefits of green web hosting, using modern image formats like WebP and AVIF, optimizing architecture and UX to minimize unnecessary page loads, the crucial role of caching, as well as some new innovations like grid aware websites, which adapt themselves based on the renewable energy mix available to users in real time.</p>\n\n\n\n<p>The conversation also touches on Charlotte&#8217;s involvement in WordPress sustainability initiatives. The importance of multiplying small improvements across high traffic sites, and the moral imperative web creators have to help shape a greener internet.</p>\n\n\n\n<p>If you&#8217;ve ever wondered how digital choices impact the planet, and what steps you can take to help, this episode is for you.</p>\n\n\n\n<p>If you&#8217;re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you&#8217;ll find all the other episodes as well.</p>\n\n\n\n<p>And so. Without further delay, I bring you Charlotte Bax.</p>\n\n\n\n<p>I am joined on the podcast by Charlotte Bax. Hello Charlotte.</p>\n\n\n\n<p>[00:03:29] <strong>Charlotte Bax:</strong> Hello Nathan, and thank you for having me.</p>\n\n\n\n<p>[00:03:31] <strong>Nathan Wrigley:</strong> You are very welcome. Charlotte and I are having a conversation at WordCamp Europe. We&#8217;re in Basel, and we&#8217;re going to be talking today about the environmental impact of your website, whether that be WordPress, or any other platform that you might be using.</p>\n\n\n\n<p>In order to establish your credential, Charlotte, would you just for maybe a minute or something like that, just tell us a little bit about you, your relationship with technology. And I guess if you lean into your sustainability credentials, what you&#8217;ve been doing in the past, that would be helpful too.</p>\n\n\n\n<p>[00:03:59] <strong>Charlotte Bax:</strong> Yes. Well, I started out as a sustainable lifestyle blogger, really, like in 2000 and something. And I didn&#8217;t really feel like I was at the right place in my work at that time. I was doing a job at the service center for ICT. It was really overwhelming. So I decided to make my hobby into my work and I chose the web design side. And after only a year, I think I stumbled upon a sustainable website challenge by some Dutch guys, that I got to know them. And that was the missing link between my sustainable lifestyle and my work as a web designer.</p>\n\n\n\n<p>So I really went down that digital sustainability rabbit hole, and I sort of rebranded myself as a sustainable web designer in the name of Digihobbit. Well, so I&#8217;m building sustainable websites for quite some years now.</p>\n\n\n\n<p>Two years ago, I really wanted a tool to make estimating the CO2 emissions of websites easier because, for example, Website Carbon by Whole Grain Digital, I love that tool. And there&#8217;s also some other tools I really loved, but you have to copy paste every single page of a website in there.</p>\n\n\n\n<p>So I wanted a tool to do that in bulk. So I asked a friend to build me a tool to do that really easily, and he did. And that sort of escalated into a full blown startup. So since August, 2024, I also have a climate tech startup called ENNOR Toolbox for Online Sustainability, in which we build software to measure the CO2 emissions of websites and web applications.</p>\n\n\n\n<p>[00:05:37] <strong>Nathan Wrigley:</strong> Wow, that&#8217;s fascinating. You&#8217;re the first person that I&#8217;ve spoken to who&#8217;s actually finished their talk at WordCamp Europe. Your presentation was, I&#8217;m sure you know, how to make your website more sustainable. So very quickly, how did it go?</p>\n\n\n\n<p>[00:05:49] <strong>Charlotte Bax:</strong> It was amazing. Like the room was so full. It was such an amazing experience, and it went so good. And yeah, I&#8217;m just still riding that high.</p>\n\n\n\n<p>[00:05:59] <strong>Nathan Wrigley:</strong> Do you feel, I mean, obviously there&#8217;s tons of topics on here and there&#8217;s many, many tracks, and the fact that you filled yours up, do you sense that sustainability is a thing which web developers are latching onto, that they find important, that they&#8217;re curious about?</p>\n\n\n\n<p>[00:06:14] <strong>Charlotte Bax:</strong> Yes, I think so. Especially the curiosity part. I&#8217;ve done presentations in the Netherlands also for some government entities, and there were some senior developers. They talked to me afterwards and they said like, I have never thought of this before. Just, yeah, like spreading that awareness, planting those seeds. I think really nice to do that.</p>\n\n\n\n<p>[00:06:34] <strong>Nathan Wrigley:</strong> Yeah, I think that it&#8217;s a topic which many people will not even have given any thought to. Because, we were talking just before we hit record about how clean and sterile our technology feels in our lives. You know, I&#8217;m staring at a laptop, and I&#8217;ve got a microphone in my hand, I&#8217;ve got a phone over to my side here, and none of it emits anything by itself.</p>\n\n\n\n<p>You know, it&#8217;s clean. If I hold it in my hand, I&#8217;m not going to breathe any toxic fumes in from it. And yet all of the technology that we&#8217;re surrounded by in some way, shape, or form will have been produced, there&#8217;ll be some pollution that&#8217;s associated with that. But also particularly around ICT, the mere fact that it&#8217;s switched on and is consuming electricity, well, that electricity has to be generated in some way.</p>\n\n\n\n<p>And you put a really interesting statistic on the blurb for your presentation, which says that 8 to 10% of all energy, and I think I&#8217;m saying that right, yeah, all energy that&#8217;s produced globally, 8 to 10% is related to ICT. I would never have suspected it because it&#8217;s completely divorced. I switch my computer on, there&#8217;s no pollution in my house because of that. It&#8217;s happening elsewhere.</p>\n\n\n\n<p>So how does ICT rate? If it&#8217;s 8 to 10%, where does it sort of slot into all the other industries?</p>\n\n\n\n<p>[00:07:57] <strong>Charlotte Bax:</strong> Well, it&#8217;s more than aviation. There&#8217;s this book, Sustainable Web Design by Tom Greenwood. There is this graph somewhere, quite in the beginning, that puts the internet, if it were a country, it would be the seventh biggest polluter in the world. So that&#8217;s really, really big. And you don&#8217;t see it because all the pollution happens elsewhere. Like, you don&#8217;t have a data center, or an energy plant, in your backyard. It&#8217;s all hidden away. Or there&#8217;s those big boxes next to the highway, you know? You don&#8217;t see it. And in Dutch we call it far from your bed show. And that is a really nice comparison I think.</p>\n\n\n\n<p>[00:08:36] <strong>Nathan Wrigley:</strong> Yeah, I think if I was to ask you to stand behind my car and I rev the engine, so I use the car, you are going to be really reluctant to stand behind my car because you know that out of the back of the car is coming a lot of terrible gases that you don&#8217;t wish to consume. And yet my computer, in a remote destination that I am not standing anywhere near, is doing basically the same thing.</p>\n\n\n\n<p>[00:09:05] <strong>Charlotte Bax:</strong> More or less.</p>\n\n\n\n<p>[00:09:06] <strong>Nathan Wrigley:</strong> Yeah, I mean it may not be the same gases or what have you, but there is a pollution component to that.</p>\n\n\n\n<p>[00:09:10] <strong>Charlotte Bax:</strong> Yes, there&#8217;s a pollution component indeed.</p>\n\n\n\n<p>[00:09:11] <strong>Nathan Wrigley:</strong> But every bit of technology that I own, I sense none of that. And so that&#8217;s a really interesting disconnect. And I guess that promotes us, well, not promotes us, I guess it allows us to ignore the problem because we do not see it.</p>\n\n\n\n<p>[00:09:28] <strong>Charlotte Bax:</strong> Yes. That is exactly the right wording for that. It allows us to ignore it because we do not see it. It&#8217;s not just like there&#8217;s this energy usage, for example, data centers and routers and your own devices, of course. But there&#8217;s also so much more. There&#8217;s this embodied carbon from producing all that hardware. And that&#8217;s not just the machines that we see around us, your laptop, my laptop, your phone. It&#8217;s also like the data centres, the servers, the wifi box, the routers, satellites, et cetera, cables.</p>\n\n\n\n<p>Producing electronics is really dirty. It takes up a lot of resources and energy. Data centers, they use up a lot of water for cooling. And at the end of the day, most of those things, they become e-waste, because electronics don&#8217;t get recycled that much yet.</p>\n\n\n\n<p>[00:10:21] <strong>Nathan Wrigley:</strong> Yeah, I guess given the nature of this podcast, we probably won&#8217;t focus on all of the different bits and pieces that are involved in all of that. You know, we can&#8217;t talk so much about how a phone ought to be recycled. Well, we could, but we are going to talk about websites.</p>\n\n\n\n<p>And again, the disconnect is so profound. I go to a website, any website, there is no connection in my head between browsing that website and the consequences to the environment. Essentially, in my head, and probably the heads of many people listening to this podcast, it&#8217;s entirely benign. I&#8217;m doing no harm whatsoever. Of course, on some level, intellectually, if I apply thought to it, of course I know that I am, but it&#8217;s way easier for me to ignore that.</p>\n\n\n\n<p>So then that leads to the question, what on earth can people like you, like me, like the people listening to this podcast who create websites, what on earth can they do? What are the little things that they can pick out that they can change about their website in order to make them less polluting, more sustainable, whichever term you&#8217;d like to use?</p>\n\n\n\n<p>[00:11:26] <strong>Charlotte Bax:</strong> Oh boy. I don&#8217;t think we have enough time in this podcast to touch on all of that. But in my talk I sort of, yeah, I had a list of certain areas where you could make sustainable choices, and they also arrange really widely. For example, your web hosting, choose a green web host. It makes such a difference. Renewable energy. Not all web hosts are hosting on green energy. And there is this really nice organisation, the Green Web Foundation, they have this database of web hosting providers that are using renewable energy.</p>\n\n\n\n<p>And they have a tool, you can put in your website and see if your website runs on renewables. And if you are a web hosting provider, you can send evidence to the Green Web Foundation that your data centers are running on renewables, so they can add you to that database, which is also very good for your reputation as a web host.</p>\n\n\n\n<p>[00:12:23] <strong>Nathan Wrigley:</strong> Right, okay. So as you say the things that you mentioned in your talk, I&#8217;ll throw them back at you just so that we&#8217;re absolutely certain what we&#8217;re talking about.</p>\n\n\n\n<p>So every website obviously, well, most of them need some kind of hosting environment. And what you&#8217;re saying is go out and be proactive. Look for this badge, this Green Web Foundation badge. They&#8217;ve done the hard work, if you like. You can be certain that if there&#8217;s a Green Web Foundation sticker on there, there has been an exchange, to and fro, between the host and the Green Web Foundation, and they classify that as sustainable. What does that mean? Does it mean that, like, is it 80% of their energy consumption is renewable or a hundred percent or do you know?</p>\n\n\n\n<p>[00:12:59] <strong>Charlotte Bax:</strong> I don&#8217;t know that exactly. You should ask Chris Adams. But they&#8217;re also, yeah, I learned that also from that book from Tom Greenwood. You can make a difference between certain ways of using renewable energy, such as like actually producing your own renewable energy by having solar panels on the data center, for example.</p>\n\n\n\n<p>You can invest in green energy. You can buy it from a green energy supplier.</p>\n\n\n\n<p>And there&#8217;s a fourth thing, and it is that you buy certificates from other countries and that, yeah, I think that&#8217;s greenwashing.</p>\n\n\n\n<p>But as far as I know, they don&#8217;t show that yet in the Green Web Foundation database. I have contacted them like months, maybe more than a year ago about it, whether they would do that. And they were open to the idea. I think someone was even working on it. But it just takes a long time because they are not a commercial party of course. They also just run on subsidies and they have just so many resources.</p>\n\n\n\n<p>[00:14:02] <strong>Nathan Wrigley:</strong> Okay, so there&#8217;s the first piece. There&#8217;s one thing that you can do. That&#8217;s a really easy concrete thing to do. We all need the hosting. So when you go, go and look and have some trust in the Green Web Foundation&#8217;s badge, if you like. You trust that they&#8217;ve done the due diligence and that that is in some way superior, in the way that that energy is captured or what have you.</p>\n\n\n\n<p>[00:14:24] <strong>Charlotte Bax:</strong> Yes, yes. But I have a little disclaimer. Not all green web hosting providers are in the database yet, and not all of them show the badge. But it&#8217;s really easy just to check your own website through the tool on their home page.</p>\n\n\n\n<p>[00:14:39] <strong>Nathan Wrigley:</strong> Okay. Thank you. Okay, what was next? What did you have next on your list?</p>\n\n\n\n<p>[00:14:43] <strong>Charlotte Bax:</strong> Well, you can make sustainable choices in your architecture and your UX design. Just make it very easy for your visitors to find things on your website, so they don&#8217;t have to go here and there to search for stuff and produce lots of unnecessary page views. Because that&#8217;s all data traffic and that&#8217;s all CO2 emissions. That&#8217;s a thing you can do. Just think really good about that website architecture.</p>\n\n\n\n<p>[00:15:12] <strong>Nathan Wrigley:</strong> So the idea there is that every time we produce a page, the server at some point is having to do some work. That work requires electricity. If we can cut 10 visits down to 5 visits, there&#8217;s an, obviously a 50% reduction in the amount of pages that are loaded. And again, it&#8217;s so hard in my head to encapsulate what that is doing because it just, I&#8217;m just thinking, okay, i&#8217;ve saved time. But obviously, you know, now that we&#8217;re having this chat, I&#8217;m now beginning to think more, okay, not only am I saving time, I&#8217;m actually saving electricity and therefore it&#8217;s more sustainable.</p>\n\n\n\n<p>So that has a knock on consequence of course, in that nobody wants to go to 10 pages if you could go to five pages anyway. So figuring all that stuff out from the start is a good idea. Okay, lovely. Next one.</p>\n\n\n\n<p>[00:15:58] <strong>Charlotte Bax:</strong> Next one is design and content creation. Yeah, what your website looks like. There&#8217;s lots of sustainable choices you can make in the assets that are shown on the front end, such as images, video, audio, the fonts that you use, the CSS styling, et cetera. We could do a whole podcast on that alone. So things I talked about previously this morning is scaling your images. Be very picky in your images.</p>\n\n\n\n<p>Also sometimes I see websites that have so many pictures on it. I think people are afraid to be boring or something. But use the images that are actually valuable to your content, to tell a story instead of just putting a thousand pictures on there just because. Because images, they tell more than a thousand words, but also images are very, very heavy compared to just plain text.</p>\n\n\n\n<p>[00:16:52] <strong>Nathan Wrigley:</strong> So I guess it&#8217;s, couple of things there. The first thing is use images when necessary. So that there&#8217;s not unnecessary images being loaded. But also I&#8217;m imagining that we&#8217;re probably trying to lean into newer image formats. So not only reducing the scale of the image so that it&#8217;s the correct dimensions and it&#8217;s not, you know, this giant image which is being shrunk in the browser, needlessly downloading a four megabyte image that really is like 150 kilobytes.</p>\n\n\n\n<p>[00:17:19] <strong>Charlotte Bax:</strong> I saw this like on a government website that I tested and there was this, a really small icon, it was like 36 pixels wide or something. And there was an image like 6,000 by 8,000 pixels loaded for that. And I was, my heart bleeded.</p>\n\n\n\n<p>[00:17:36] <strong>Nathan Wrigley:</strong> Yeah, this should have been about 3K and it was probably more in the sort of four or five megabyte territory.</p>\n\n\n\n<p>[00:17:41] <strong>Charlotte Bax:</strong> Yes, yes. I don&#8217;t know the exact numbers, but terrible.</p>\n\n\n\n<p>[00:17:44] <strong>Nathan Wrigley:</strong> But image formats are changing as well, aren&#8217;t they? You know, in the past we were, everybody familiar with PNGs and JPEGs and things like that. And now we&#8217;ve got things like WebP and AVIF images as well. My understanding is that they are significantly reduced in their scale, with no measurable difference in the way that you can see them. They look basically identical.</p>\n\n\n\n<p>[00:18:06] <strong>Charlotte Bax:</strong> Yes, yes. That&#8217;s really nice. WebP and AVIF, they are web friendly formats for your images and they are really lightweight. They also, they support transparent background and animation, so they are also really good alternatives to PNG and GIF, not only to JPEG.</p>\n\n\n\n<p>And what I also like is that you can change the image quality when exporting to that format. Just like with JPEG, you can say, I want quality of 90, or image quality of 80% or even less. And when you&#8217;re choosing something between 80 and 90%, usually you don&#8217;t really see the difference. You can just play around with that on your computer. But it&#8217;s significantly reduces the file size.</p>\n\n\n\n<p>[00:18:53] <strong>Nathan Wrigley:</strong> Yeah, I was playing around with something the other day and I was converting a JPEG image to a WebP image. And I went to a service, which enabled me to do that, and at 80% I genuinely couldn&#8217;t see any, I was really staring hard and I could not see a single pixel that was different.</p>\n\n\n\n<p>I think, you know, maybe if it was some incredibly detailed picture of some medical procedure or something like that, maybe. But in most cases it&#8217;s not necessary. But also if it&#8217;s going to represent a tiny icon on the website, upload an image which is a tiny icon in size. Don&#8217;t upload the big one and the browser handle that.</p>\n\n\n\n<p>[00:19:28] <strong>Charlotte Bax:</strong> Yeah, but also for icons, you can much better choose like a vector image, like SVG, because vector images when done right, I have seen it done wrong, which is terrible, but when done right, they are really lightweight and they are scalable without limits and without any loss of quality. And that&#8217;s really suitable for logos, for icons, for certain illustration styles. You can also use SVG really well.</p>\n\n\n\n<p>[00:19:56] <strong>Nathan Wrigley:</strong> Yeah, so that&#8217;s a really good point. So for what you might call like a bitmap image, you&#8217;ve got AVIF and WebP, they seem to be the ones that are out in the front at the moment. And then for things like logos, then some kind of vector based image, like an SVG where essentially it&#8217;s data, you know, it&#8217;s bezier curves and things like that. So it can really scale up, and it will still look just as good if it&#8217;s gigantic.</p>\n\n\n\n<p>So definitely listener, if you&#8217;re hearing this, go and explore those, it&#8217;s well worth it. I would say that WordPress, by default won&#8217;t allow you to upload an SVG image. You might need to get a plugin to help you out with that.</p>\n\n\n\n<p>[00:20:28] <strong>Charlotte Bax:</strong> My favorite for that is Safe SVG. I just put it on there as soon as I start a new website and then just put all the SVGs on there.</p>\n\n\n\n<p>[00:20:36] <strong>Nathan Wrigley:</strong> Yeah, it&#8217;s curious. It&#8217;s because it&#8217;s not truly an image. It&#8217;s kind of like a file format and so it potentially could contain some code which might be harmful to your website. But those plugins strip out all of that. That&#8217;s my understanding anyway.</p>\n\n\n\n<p>[00:20:47] <strong>Charlotte Bax:</strong> Yes. So indeed, if you use plugins like that, you are at less risk of malfunctioning code, not malfunction, maleficent code.</p>\n\n\n\n<p>[00:20:56] <strong>Nathan Wrigley:</strong> Yeah, like malware. You know, security problems, things like that.</p>\n\n\n\n<p>[00:20:59] <strong>Charlotte Bax:</strong> Yeah, but if you make your SVGs yourself, well, then you have control over that. You know there&#8217;s no malware in that, unless you put it there yourself.</p>\n\n\n\n<p>[00:21:06] <strong>Nathan Wrigley:</strong> I don&#8217;t know if you have an answer to this, but obviously video is really important on the web. You know, certain types of things that people are doing online, maybe not quite so much websites but, you know, things like Instagram and TikTok and things like that, it&#8217;s really, really popular.</p>\n\n\n\n<p>Do you know if there&#8217;s any similar thing happening like WebP and AVIF with movie formats? Is there anybody trying to compress those in a way that WebP and AVIF have been?</p>\n\n\n\n<p>[00:21:29] <strong>Charlotte Bax:</strong> I haven&#8217;t dived into that that much, but I know there is WebM I think. But also, MPEG and or MP4. They are really good compression techniques and as lightweight as you can make it.</p>\n\n\n\n<p>[00:21:45] <strong>Nathan Wrigley:</strong> I guess the same rules apply for images as for video though. You don&#8217;t needlessly put video on the website. And certainly it&#8217;s possible to deploy video in a way that it&#8217;s not as environmentally profound. You know, for example, auto play switched off.</p>\n\n\n\n<p>[00:22:00] <strong>Charlotte Bax:</strong> I really hate those websites with this automatically playing background video. I must admit, when I started out as a web designer, some of my first clients, they really wanted that, so I did it. But I had an opinion on that and I explained, I didn&#8217;t know anything about the sustainability part yet by then, but I explained that it is a big file that gets loaded automatically. It really slows down your website also, so it&#8217;s a bad user experience. So I recommend that they didn&#8217;t do it, but they really wanted to.</p>\n\n\n\n<p>But I really hate how some websites shove like an enormous amount of megabytes down your throat as a visitor by those autoplay background videos.</p>\n\n\n\n<p>[00:22:43] <strong>Nathan Wrigley:</strong> Yeah, and also I think there&#8217;s a move to make it so that, and I don&#8217;t know if the block editor, the video block automatically does this, I could be wrong about that. The idea of having an image placeholder instead of the video itself, because the mere putting the iframe onto the page, there&#8217;s some communication between, let&#8217;s say YouTube, if you&#8217;re embedding something from YouTube. Whereas really, you don&#8217;t need to engage YouTube until somebody&#8217;s actually clicked the play button. So having some placeholder there, click the button, click the image, and then the video begins to load. I guess there&#8217;s something there. That&#8217;s a good idea.</p>\n\n\n\n<p>[00:23:18] <strong>Charlotte Bax:</strong> I have a trick for that. When you embed a YouTube video or a Vimeo, they do the preload is none thing really good, which is nice, so you don&#8217;t shove that many megabytes through someone&#8217;s throat. But what YouTube does, and Vimeo also but less, is they put a lot of tracking scripts in that embed.</p>\n\n\n\n<p>So what I like to do is, so something I did for one of my latest websites for the Rotterdam Metal Band, Ann My Dice, they have this show reel of their newest songs on top of their homepage. And I put an image thumbnail there. And when you click that, it opens a modal. So the video and all those tracking scripts, they are loaded only when you click on a thumbnail to open the modal. That&#8217;s a nice little trick to work around that.</p>\n\n\n\n<p>[00:24:04] <strong>Nathan Wrigley:</strong> Yeah, so video and images, that&#8217;s a really easy win. There&#8217;s loads of things that you can do.</p>\n\n\n\n<p>There&#8217;s lots of services out there, both on your computer, but online where you can compress the images. And obviously we&#8217;ve talked about the different formats and not necessarily loading video.</p>\n\n\n\n<p>Okay, should we move on? Is there anything else on there?</p>\n\n\n\n<p>[00:24:21] <strong>Charlotte Bax:</strong> Yeah, yeah. There is caching of course, which can make a huge difference. WordPress is based on a database. So in theory, every time someone visits a page on your website, the server has to calculate the webpage and then send it over to your visitor.</p>\n\n\n\n<p>But if you use, for example, server side caching, you can do that once and send the generated page to all your visitors. So that saves a lot of computing energy server side. But there&#8217;s also browser caching, which means that certain assets that you can reuse, for example, your CSS style sheets, and your fonts, you can retain in a browser. So they don&#8217;t need to get loaded on every page your visitor goes to.</p>\n\n\n\n<p>[00:25:06] <strong>Nathan Wrigley:</strong> There&#8217;s so many different ways of tackling this, isn&#8217;t there? Whether that&#8217;s through your web host or a collection of plugins that you might use. But yeah, caching, the idea being that it&#8217;s stored somewhere, kind of ready to go. It&#8217;s already been created. Somebody just comes along and if you like, just picks it up.</p>\n\n\n\n<p>Whereas in the typical WordPress way, there&#8217;s this whole crunching of data. There&#8217;s all this PHP being rendered in the background. And the database is being called to construct the page. And really, if the page isn&#8217;t being changed from minute to minute, there&#8217;s no need for all of that. You can just have a cached version. And increasingly, you know, you don&#8217;t even have to make that cached version travel across the globe, because you can put it at the edge in different countries and so on and so forth. So there&#8217;s a whole load of interesting stuff. But caching enforce that where possible.</p>\n\n\n\n<p>[00:25:54] <strong>Charlotte Bax:</strong> If you have a, I always recommend people to look at their target audience for choosing their hosting. For example, I live in the Netherlands and my target audience is mostly Dutch companies and Dutch governments. So it makes sense for me to host my website in the Netherlands. But if your target audience is all over the world, I really recommend using a CDN to distribute all your cached web pages. It makes it more sustainable and it also makes it a lot quicker.</p>\n\n\n\n<p>[00:26:23] <strong>Nathan Wrigley:</strong> It&#8217;s curious that one, isn&#8217;t it? Because in many ways, using a CDN, you are creating a bigger footprint because there&#8217;s more, you know, instead of it being cached in one place, it&#8217;s now cached in multiple places. So there&#8217;s more caching happening. But the people who are absorbing that cache, using that cache, there&#8217;s a net benefit there because they have to travel less distance.</p>\n\n\n\n<p>So for example, if there&#8217;s a cache data center in Sydney, and some Australian user is using that, it doesn&#8217;t have to come all the way, for example, to London and then back again. So even though you are storing multiple versions of the cache around the world, the traffic that&#8217;s going backwards and forwards from that cache often will make up for that.</p>\n\n\n\n<p>[00:27:01] <strong>Charlotte Bax:</strong> Yeah, it&#8217;s really dependent on the situation and the size of your target audience because obviously if you only have like one visitor from Australia every month, it&#8217;s not worth it. So it&#8217;s also sort of, look at your own situation and make choices based on that.</p>\n\n\n\n<p>I always think about, like sustainability is not something like what you can and cannot do, but I like to view it as more as inspiring people and giving them the tools to actually make conscious choices instead of just doing what the masses do and what is easy.</p>\n\n\n\n<p>[00:27:37] <strong>Nathan Wrigley:</strong> Yeah, there&#8217;s no destination, is there, probably? It&#8217;s more of a journey. You&#8217;re kind of trying to do little bits, and chisel away the bits that you can. Okay, so caching is a whole other topic. You can no doubt go down that rabbit hole and spend the rest of your life there.</p>\n\n\n\n<p>[00:27:49] <strong>Charlotte Bax:</strong> Yes, yes. If you want to know more about caching, I think Ramon Fincken from Halvar knows more about that.</p>\n\n\n\n<p>[00:27:56] <strong>Nathan Wrigley:</strong> Okay, thank you. Okay, so there&#8217;s another one we&#8217;ve ticked off. Anything else on your list?</p>\n\n\n\n<p>[00:28:00] <strong>Charlotte Bax:</strong> Yes. There&#8217;s visitor management, because obviously the page weight is not the only factor of a website, but also you have to multiply that with all the page visits to get your total CO2 emissions over time.</p>\n\n\n\n<p>So if you have a lot of visitors, and that&#8217;s not only the human visitors, but also the bots of course, then that&#8217;s a lot of CO2 emissions. And that can be up to hundreds of times more than you actually realise.</p>\n\n\n\n<p>Joost de Valk had a really great talk about that a few years ago, 2022 at WordCamp Netherlands. I wasn&#8217;t there myself, but I have seen a YouTube video and I really, really recommend people checking that out because he can explain that really well.</p>\n\n\n\n<p>[00:28:44] <strong>Nathan Wrigley:</strong> So this is to do with the amount of traffic that you are getting.</p>\n\n\n\n<p>[00:28:47] <strong>Charlotte Bax:</strong> Yes, yes. The amount of traffic. So page weight times traffic is CO2 emissions basically.</p>\n\n\n\n<p>[00:28:53] <strong>Nathan Wrigley:</strong> Okay, interesting.</p>\n\n\n\n<p>[00:28:54] <strong>Charlotte Bax:</strong> Yes.</p>\n\n\n\n<p>[00:28:54] <strong>Nathan Wrigley:</strong> Okay. Next one.</p>\n\n\n\n<p>[00:28:56] <strong>Charlotte Bax:</strong> That&#8217;s the last one in my list. And that is sort of the cherry on top. And that is to make your website grid aware. I don&#8217;t know if you&#8217;re familiar with Fershad Irani. No. He is one of the pioneers in website sustainability. He does a lot of projects for the Green Web Foundation. And currently he is working on grid aware websites toolkits to make your website responsive to the energy mix on the local energy grid from your visitor. And he does that with Cloudflare CDN workers. I hope I explained that right because that&#8217;s an area that I&#8217;m less familiar with.</p>\n\n\n\n<p>But what it does, for example, if your website visitor is in an area where the energy grid is mostly running on fossil fuel energy, then it shows a more minimal experience of your website to the visitor. And when they are in an area where the grid is a big percentage renewable energy, then it shows a more rich experience of your website.</p>\n\n\n\n<p>[00:30:01] <strong>Nathan Wrigley:</strong> Gosh, that&#8217;s fascinating. So it&#8217;s like progressive enhancement, but for sustainability.</p>\n\n\n\n<p>[00:30:07] <strong>Charlotte Bax:</strong> Yes.</p>\n\n\n\n<p>[00:30:07] <strong>Nathan Wrigley:</strong> So I might see an entirely different page with, let&#8217;s say, I don&#8217;t know, a greater number of images on it or something like that, given the awareness that the website has of where I&#8217;m viewing it, or where it is being hosted? I wasn&#8217;t sure about that bit. Is it more about the visitor or more about the location of the hosting of that?</p>\n\n\n\n<p>[00:30:26] <strong>Charlotte Bax:</strong> It&#8217;s about the visitor in this case, yeah. And I think he does that in a really, really smart way. There&#8217;s also sort of a version of the toolkit that does it browser based. I don&#8217;t know enough about that to explain that right I think.</p>\n\n\n\n<p>[00:30:39] <strong>Nathan Wrigley:</strong> Genuinely, that&#8217;s fascinating. That really feels like he&#8217;s pushing the boundaries. What I&#8217;ll do is I&#8217;ll try to find a link to something.</p>\n\n\n\n<p>[00:30:46] <strong>Charlotte Bax:</strong> There is a page on the website of the Green Web Foundation, and if you contact Fershad through LinkedIn or Mastodon, or I&#8217;m happy to link you with him. He is currently working on it and he is looking for people and websites to experiment with it. I think it&#8217;s a really nice experiment to see how much effect this can have. I&#8217;m really curious.</p>\n\n\n\n<p>[00:31:07] <strong>Nathan Wrigley:</strong> It kind feels like a technology which is going to be very difficult to pull off, but very profound if it is pulled off. You can imagine high traffic websites, and I&#8217;m thinking of news organisations, for example, the BBC or something like that, that just have millions of views every few minutes, I would&#8217;ve thought, and could really benefit from something like that. You know, showing a different website. I&#8217;d never heard of that. That&#8217;s fascinating.</p>\n\n\n\n<p>[00:31:29] <strong>Charlotte Bax:</strong> Yeah, it&#8217;s a really new project. He&#8217;s still developing the toolkit right now. I think it&#8217;s a really amazing project and that could be really impactful for, yeah, those really high traffic websites. I have seen, earlier this week I had a video call with Fershad, and he showed me a demo version on, oh, I don&#8217;t know the name, I can&#8217;t recall it, but it was like an online magazine.</p>\n\n\n\n<p>There was this menu, there was just this dropdown in the menu bar with four items, live low, medium, and high. So you could choose the settings yourself, or you just could go with the live thing, based on your own energy grid where you were localised.</p>\n\n\n\n<p>[00:32:08] <strong>Nathan Wrigley:</strong> So like a demo, and you can pick how you would like to see it in four different versions. Okay.</p>\n\n\n\n<p>[00:32:12] <strong>Charlotte Bax:</strong> Yeah, yeah. The live version is like how it is shown based on your energy grid. But as a visitor, you can also choose your own way if you want to see the more rich version or the more minimised version. And the information on the website, it just stays the same of course, but it shows less images and that kind of stuff. But if you view it in the, like the minimalist version, you can still opt to see images if you want to by just clicking on it. It&#8217;s a really smart way he does that.</p>\n\n\n\n<p>[00:32:43] <strong>Nathan Wrigley:</strong> Yeah, it&#8217;s fascinating. So in my email client, for example, I have it set up, the default is do not show me images, and I just click a button, display images, and they all come in. I can&#8217;t pick which images, they all just come. But there&#8217;s a decision there, you know, it is like I&#8217;ve decided not to see all the images off the bat. Click a button and in they come.</p>\n\n\n\n<p>That is really interesting. So I presume the text would stay the same, because that&#8217;s the core of what the website is probably offering, text. But, you know, do you want a heavy experience in terms of data? Well, there it is. There&#8217;s all the images and the videos. Yeah, okay, I will follow that up. That sounds fascinating.</p>\n\n\n\n<p>So we&#8217;re at we WordCamp EU. This is all about WordPress. How do you feel WordPress, by default, so ignoring any plugins, if I just chuck a default version of WordPress, a vanilla version of WordPress out there, how does it do in terms of sustainability compared to other things in the environment?</p>\n\n\n\n<p>[00:33:33] <strong>Charlotte Bax:</strong> Oh, that&#8217;s really funny because I haven&#8217;t really done any research into that. What I have done is I made, it&#8217;s some time ago, but I checked some of the WordPress vanilla themes against some of my favorite themes, just making a staging website with only lorem ipsum paragraph, and just the vanilla theme, and then checking how much page weight it is, and how much CO2 emissions on first load. But that&#8217;s ages ago. And I, maybe you just sort of started a new project in my head.</p>\n\n\n\n<p>[00:34:05] <strong>Nathan Wrigley:</strong> Ah, nice.</p>\n\n\n\n<p>[00:34:07] <strong>Charlotte Bax:</strong> Measure the CO2 emissions of WordPress themes and vanilla WordPress. I think that&#8217;s a good idea.</p>\n\n\n\n<p>[00:34:12] <strong>Nathan Wrigley:</strong> Yeah, because it feels to me, especially if you&#8217;re using a WordPress default theme, they do seem to be quite light, you know, there&#8217;s a lot of text and very, I mean, some of the themes that we&#8217;ve had in the past, I can&#8217;t remember, I&#8217;m just trying to conjure it up, it might have been 2021 or something like that. It was basically all text. And I just wondered if WordPress itself could be proud of its sustainability over time, or whether it was something that, you know, compared to other CMSs but, you know, if you don&#8217;t have that data, that&#8217;s okay.</p>\n\n\n\n<p>[00:34:40] <strong>Charlotte Bax:</strong> I don&#8217;t have the data, but I do think that maybe WordPress could be more of a front runner in terms of sustainability. For example, I learned that Drupal already has like a sustainability policy and they&#8217;re doing certain things on that. But unfortunately, our own sustainability team got canceled.</p>\n\n\n\n<p>But yesterday, during Contributor Day, there were like 10 people or something, they really wanted to do a sustainability table, so we just impromptu did that. The table cards, they were there. So we just did it and we formed a new team. Still unofficial. I have no idea how it happened, but apparently I&#8217;m a team rep now. There are some of the old sustainability team members that also want to continue their work. So we sort of started an impromptu petition to get the sustainability team their official status back, so it can become a core value of WordPress.</p>\n\n\n\n<p>And I think that it would really help WordPress to be a front runner, especially in Europe where sustainability is, as far as I know, sustainability is a bigger thing in Europe than in America or Asia. That&#8217;s how I feel it. And I think if we don&#8217;t jump on that sustainability bandwagon, we could really lose market share.</p>\n\n\n\n<p>[00:35:58] <strong>Nathan Wrigley:</strong> Yeah, I think you&#8217;re right. I&#8217;m curious about the sustainability team. So you are talking about Contrib Day yesterday?</p>\n\n\n\n<p>[00:36:03] <strong>Charlotte Bax:</strong> Yes.</p>\n\n\n\n<p>[00:36:05] <strong>Nathan Wrigley:</strong> An impromptu sustainability team sort of set itself up and just carried on as if nothing had happened. So that&#8217;s interesting.</p>\n\n\n\n<p>[00:36:11] <strong>Charlotte Bax:</strong> Yes. Not really as if nothing had happened. Most of the time we spent on like strategising how to get this back on the road again, and how to continue because the previous team, they did really great work and I just latched on a few weeks before they got closed down and I think it&#8217;s really sad.</p>\n\n\n\n<p>[00:36:29] <strong>Nathan Wrigley:</strong> Well, you&#8217;ve given us loads of really interesting tips. Hopefully the listeners to this have gathered some useful information. Realised that it&#8217;s a profoundly important and moral topic to be involved in.</p>\n\n\n\n<p>Should anybody wish to contact you and get into a conversation about how they could become involved, or just some tips or what have you, where do we find you, Charlotte?</p>\n\n\n\n<p>[00:36:48] <strong>Charlotte Bax:</strong> You can find me on LinkedIn. You can find Digihobbit on LinkedIn, and you can also find Digihobbit on Mastodon. I&#8217;m not really on like the regular social media channels, but that&#8217;s a whole different topic to discuss. I also have a personal LinkedIn profile, but if you want to link with me personally, just add a message to it so I sort of know the context.</p>\n\n\n\n<p>[00:37:08] <strong>Nathan Wrigley:</strong> Okay. So dear listener, I will put everything that we&#8217;ve talked about today, all of the Green Web Foundation&#8217;s, and other varied links into the show notes. Head to wptavern.com and search for the episode with Charlotte Bax.</p>\n\n\n\n<p>So Charlotte Bax, thank you very much for chatting to me today. I really appreciate it.</p>\n\n\n\n<p>[00:37:22] <strong>Charlotte Bax:</strong> Thank you very much, Nathan, for having me.</p>\n\n\n\n<p>[00:37:24] <strong>Nathan Wrigley:</strong> You&#8217;re most welcome.</p>\n</div></details>\n\n\n\n<p>On the podcast today we have <a href=\"https://www.linkedin.com/company/digihobbit/\">Charlotte Bax</a>.</p>\n\n\n\n<p>Charlotte is a sustainable web designer with a background in both environmentally conscious living and technology. Beginning her journey as a sustainable lifestyle blogger, she soon merged her passion for sustainability with her skills in web design, rebranding herself as Digihobbit. For several years now, Charlotte has been focused on building websites that prioritise low carbon footprints, and she is also the founder of the climate tech startup ENNOR Toolbox for Online Sustainability, which helps measure the CO2 emissions of websites and web applications.</p>\n\n\n\n<p>When we made this recording, Charlotte had just finished presenting at WordCamp Europe on the topic of how to make your website more sustainable, and her presentation is the topic of the podcast today.</p>\n\n\n\n<p>We talk about digital environmental impact, the hidden pollution our websites create through their energy use and infrastructure. Charlotte explains some striking facts about the carbon footprint of ICT, noting that if the internet were a country, it would be the seventh largest polluter globally.</p>\n\n\n\n<p>She shares a wide array of practical steps for web professionals to reduce the environmental impact of their sites. You’ll hear about the benefits of green web hosting, using modern image formats like WebP and AVIF, optimising architecture and UX to minimise unnecessary page loads, the crucial role of caching, as well as some new innovations like grid-aware websites which adapt themselves based on the renewable energy mix available to users in real time.</p>\n\n\n\n<p>The conversation also touches on Charlotte’s involvement in WordPress sustainability initiatives, the importance of multiplying small improvements across high-traffic sites, and the moral imperative web creators have to help shape a greener internet.</p>\n\n\n\n<p>If you’ve ever wondered how digital choices impact the planet, and what steps you can take today to help, this episode is for you.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Useful links</h2>\n\n\n\n<p><a href=\"https://digihobbit.nl/\">Charlotte&#8217;s Digihobbit website</a></p>\n\n\n\n<p><a href=\"https://www.linkedin.com/company/digihobbit/\">Charlotte on LinkedIn</a></p>\n\n\n\n<p><a href=\"https://mastodon.social/@digihobbit\">Charlotte on Mastodon</a></p>\n\n\n\n<p><a href=\"https://www.websitecarbon.com/\"> Website Carbon calculator</a> by Whole Grain Digital</p>\n\n\n\n<p><a href=\"https://www.ennor.earth/ennor-for-web/\"> ENNOR Toolbox for Online Sustainability</a></p>\n\n\n\n<p><a href=\"https://abookapart.com/products/sustainable-web-design.html\"> Sustainable Web Design</a> by Tom Greenwood</p>\n\n\n\n<p><a href=\"https://www.thegreenwebfoundation.org/\"> Green Web Foundation</a></p>\n\n\n\n<p><a href=\"https://wordpress.org/plugins/safe-svg/\"> Safe SVG plugin</a></p>\n\n\n\n<p><a href=\"https://annmydice.nl/\">Charlotte&#8217;s website for the band Ann My Dice</a></p>\n\n\n\n<p><a href=\"https://www.linkedin.com/in/ramonfincken/\">Ramon Fincken</a> on LinkedIn</p>\n\n\n\n<p><a href=\"https://wordpress.tv/2022/11/17/joost-de-valk-improve-the-environment-start-with-your-website/\">Improve the environment. Start with your website!</a> Joost de Valk&#8217;s talk at WordCamp Nederland 2022</p>\n\n\n\n<p><a href=\"https://fershad.com/\">Fershad Irani&#8217;s website</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, 16 Jul 2025 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:46;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:78:\"Open Channels FM: Fresh Series, New Names, and the Power of Repurposed Content\";s: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=102900\";s: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:83:\"https://openchannels.fm/fresh-series-new-names-and-the-power-of-repurposed-content/\";s: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:181:\"BobWP shares insights on the podcast’s rebrand, focusing on evolving content, elevating community voices, and repurposing past episodes, plus series changes aimed at storytelling.\";s: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, 16 Jul 2025 10:19:02 +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:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:47;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:73:\"Open Channels FM: Open Source Projects Can Benefit From Cross-pollination\";s: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=100598\";s: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:80:\"https://openchannels.fm/open-source-projects-can-benefit-from-cross-pollination/\";s: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:354:\"In open source communities, it’s easy to focus on just one platform. Whether you&#8217;re deep into WordPress, Drupal, or another CMS, it’s tempting to stay within your comfort zone. But stepping outside your usual ecosystem can offer valuable insights not just about other tools but about your own. One theme that emerged in a conversation [&#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:\"Wed, 16 Jul 2025 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:5:\"BobWP\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:48;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:38:\"HeroPress: The Journey Of Pratik Bhatt\";s: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=8064\";s: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:128:\"https://heropress.com/essays/the-journey-of-pratik-bhatt/#utm_source=rss&utm_medium=rss&utm_campaign=the-journey-of-pratik-bhatt\";s: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:10481:\"<img alt=\"Pull Quote: You’re going to build not just websites but a life that helps others build theirs too.\" class=\"attachment-large size-large wp-post-image\" height=\"512\" src=\"https://heropress.com/wp-content/uploads/3025/07/071425-min.jpg\" width=\"1024\" /><p>Hello! I’m Pratik Bhatt — a WordPress developer, community contributor, a small-town dreamer, an open-heart surgery survivor, a gamer and someone who found meaning in life through code, community, and courage. My journey is one of resilience, gratitude and purpose — and I hope it inspires even one person who reads it.</p>\n\n\n\n<h2 class=\"kt-adv-heading8064_72e88e-eb wp-block-kadence-advancedheading\">Early Life in Bhavnagar: Born for Battles</h2>\n\n\n\n<p>I was born in a humble neighborhood of Bhavnagar, a small but vibrant coastal town in Gujarat. Life gave me my first challenge almost immediately. At the age of 3.5 years, I underwent open-heart surgery — a life-saving procedure that left its mark not only on my chest but on my soul. Even before I could understand what pain meant I had survived it.</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Just two years later, I lost my father. I was only five.</p>\n</blockquote>\n\n\n\n<p>That loss could have broken me, but instead it introduced me to a hero — my mother. She worked tirelessly, day and night, playing both roles with fierce love and unimaginable strength. Her sacrifices were quiet, constant and invisible to the world, but they were the scaffolding on which my entire future was built. I owe everything I am today to her.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-teenage-years-games-chess-and-growth\">Teenage Years: Games, Chess, and Growth</h2>\n\n\n\n<p>In my teens, I gravitated toward strategy games and problem-solving — perhaps a subconscious expression of navigating a complex life so early. I participated in Open Bhavnagar chess tournaments, developing a love for logic and structured thinking. That same mindset later translated perfectly into coding.</p>\n\n\n\n<p>Computers were rare, internet slower than a whisper and resources limited. Yet, I spent hours in cyber cafés, exploring the world behind the screen. Each click was a step toward a new identity — not as a survivor but as a builder.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-college-at-pacific-university-udaipur-discovery-and-identity\">College at Pacific University, Udaipur: Discovery and Identity</h2>\n\n\n\n<p>I went on to pursue my Bachelor of Engineering at Pacific University in Udaipur, where I found more than just an education — I found my voice and versatility.</p>\n\n\n\n<p>I earned a strong reputation in quiz contests, debates, and elocution competitions. I enjoyed the thrill of standing on stage, thinking fast and expressing clearly — a skill that would later shape my professional communication and leadership.</p>\n\n\n\n<p>I was also a dedicated gamer and proudly won a Need for Speed: Most Wanted tournament during college. That rush of speed and control mirrored how I wanted to approach life — with confidence and calculated risk. I also ranked 3rd in the college chess championship, keeping my connection to strategic thinking alive.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-wordpress-my-lifeline-my-living\">WordPress: My Lifeline, My Living</h2>\n\n\n\n<p>As I entered the professional world, I was introduced to WordPress — and everything changed.</p>\n\n\n\n<p>I still remember the moment I activated my first theme. The way an idea turned into a visual reality — with structure, responsiveness and purpose — was nothing sort of magic to me. That moment, I knew: this is what I want to do for the rest of my life.</p>\n\n\n\n<p>Over the time, WordPress became my bread and butter — quite literally. It provided me with the skills, opportunities and financial independence to build a life I never thought possible.</p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>But more than money, WordPress showed me the path to life.</p>\n</blockquote>\n\n\n\n<p>It empowered me to give businesses a voice, bring local shops online, connect NGOs to donors and allow countless creators to share their passion. Every site I built wasn’t just a project; it was a platform for someone’s dream.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-12-years-of-development-amp-dedication\">12+ Years of Development &amp; Dedication</h2>\n\n\n\n<p>Today, with over 12 years of experience in the WordPress ecosystem, I have worked with global clients, built plugins and custom themes, contributed to enterprise sites and created solutions that matter. I have helped startups launch, helped NGOs amplify their causes, and empowered entrepreneurs from Tier-2 and Tier-3 cities to reach the world.</p>\n\n\n\n<p>Whether I’m architecting a complex WooCommerce store, writing a custom plugin, improving performance, or debugging client pain points, my goal is simple: to build things that are fast, reliable, and human-focused.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-power-of-community-meetups-wordcamps-amp-more\">The Power of Community: Meetups, WordCamps &amp; More</h2>\n\n\n\n<p>While code gave me a career, it was the WordPress community that gave me connection, energy, and growth. I love attending local meetups and WordCamps, where ideas flow freely, support is abundant, and friendships are formed over coffee and code.</p>\n\n\n\n<p>In 2023, I was honored to be part of the organizing team for WordCamp Ahmedabad, one of the biggest community events in India. </p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Seeing hundreds of attendees come together to learn and celebrate open-source was a proud and emotional moment for me — especially knowing how far I had come from Bhavnagar to that stage.</p>\n</blockquote>\n\n\n\n<p>I also had the privilege of being a volunteer at WordCamp Asia, the flagship WordPress event for the entire continent. It was humbling to support an event of such magnitude, and heartening to see how diverse and inclusive the global WordPress family truly is. Being part of such efforts is not just service — it’s gratitude in action.</p>\n\n\n\n<p>For me, meetups and WordCamps aren’t just events — they’re where I recharge my soul, share my knowledge, and feel deeply connected to a global family.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-hobbies-beyond-the-keyboard\">Hobbies Beyond the Keyboard</h2>\n\n\n\n<p>When I’m not writing code, I embrace life through small joys and soulful moments.</p>\n\n\n\n<p>I’m a nature lover and plant enthusiast. Gardening gives me peace, patience, and a quiet form of discipline.</p>\n\n\n\n<p>I’m a cricket fan — I love playing as much as watching, especially when Team India is in action. The game reflects my life: unpredictable, strategic, and driven by passion.</p>\n\n\n\n<p>I enjoy driving — especially night drives when the roads are empty and music flows freely.</p>\n\n\n\n<p>I’m also someone who loves being around animals. I find their presence grounding and healing. At home, I have a pet rabbit, who is more than a companion — he’s a part of my family and a source of daily joy.</p>\n\n\n\n<p>Speaking of joy, music is my biggest hobby. Whether I&#8217;m coding or relaxing, there’s always a soundtrack playing in the background. Songs help me express what words can’t.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-giving-back-amp-building-others\">Giving Back &amp; Building Others</h2>\n\n\n\n<p>Having come from a small town with limited resources, I’m deeply passionate about helping others rise. I actively mentor young developers, especially those from underprivileged or non-metro backgrounds. I want them to know that success is possible — regardless of where you start.</p>\n\n\n\n<p>My dream is to one day launch a tech training program in Bhavnagar — to teach local youth about WordPress, freelancing and digital skills. </p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>If WordPress could change my life, it can certainly change theirs.</p>\n</blockquote>\n\n\n\n<p>I also regularly contribute to forums, help organize events, speak at community meetups and make time to guide freshers through their first steps in this amazing ecosystem.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-life-has-taught-me\">What Life Has Taught Me</h2>\n\n\n\n<p>Here are some core beliefs that guide me every day:</p>\n\n\n\n<p>Heartbeats are precious — I don’t take a single one for granted.</p>\n\n\n\n<p>Struggle isn’t a setback — it’s a setup for something greater.</p>\n\n\n\n<p>Community is strength — whether in a family, a WordCamp or a GitHub issue thread.</p>\n\n\n\n<p>You can come from anywhere — what matters is where you’re going and how many you uplift on the way.</p>\n\n\n\n<p>Technology can heal, empower and connect — if used with empathy.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-looking-forward-the-journey-ahead\">Looking Forward: The Journey Ahead</h2>\n\n\n\n<p>I’m excited about the future of WordPress — especially AI, full-site editing, headless architecture and performance innovations. I aim to stay at the forefront of these changes, continuing to build solutions that empower users and delight clients.</p>\n\n\n\n<p>I also plan to write a book one day — part memoir, part manual — about how open source, open hearts and open minds can transform even the most limited beginnings.</p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-in-closing\">In Closing</h2>\n\n\n\n<p>If I could go back and speak to the younger version of myself — lying on a hospital bed at 3.5 years old or watching my mother&#8217;s struggle silently or feeling like the world was too big for a boy from Bhavnagar — I’d say:</p>\n\n\n\n<p>“You’re going to make it. You’re going to build not just websites but a life that helps others build theirs too.”</p>\n\n\n\n<p>I don’t just develop WordPress sites.</p>\n\n\n\n<p>I develop opportunities, relationships and meaningful digital footprints.</p>\n\n\n\n<p>And every time I hit &#8220;Activate Theme&#8221; or push a release, I think of the journey it took to get here — and the journey still ahead.</p>\n\n\n\n<p>If you&#8217;re someone who believes in purpose, people and potential — let&#8217;s connect. Let’s build. Let’s inspire</p>\n<p>The post <a href=\"https://heropress.com/essays/the-journey-of-pratik-bhatt/\">The Journey Of Pratik Bhatt</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, 16 Jul 2025 03: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:12:\"Pratik Bhatt\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}i:49;a:6:{s:4:\"data\";s:21:\"\n	\n	\n	\n	\n	\n	\n	\n	\n	\n	\n\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";s:5:\"child\";a:2:{s:0:\"\";a:5:{s:5:\"title\";a:1:{i:0;a:5:{s:4:\"data\";s:55:\"WordPress.org blog: WordPress 6.8.2 Maintenance Release\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"guid\";a:1:{i:0;a:5:{s:4:\"data\";s:35:\"https://wordpress.org/news/?p=18903\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:4:\"link\";a:1:{i:0;a:5:{s:4:\"data\";s:71:\"https://wordpress.org/news/2025/07/wordpress-6-8-2-maintenance-release/\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}s:11:\"description\";a:1:{i:0;a:5:{s:4:\"data\";s:10703:\"<h2 class=\"wp-block-heading\">WordPress 6.8.2 is now available!</h2>\n\n\n\n<p>This minor release includes fixes for <a href=\"https://core.trac.wordpress.org/query?resolution=fixed&amp;milestone=6.8.2&amp;group=component&amp;col=id&amp;col=summary&amp;col=milestone&amp;col=owner&amp;col=type&amp;col=status&amp;col=priority&amp;order=priority\">20 Core tickets</a> and <a href=\"https://github.com/WordPress/gutenberg/pull/70557\">15 Block Editor issues</a>. For a full list of bug fixes, please refer to the <a href=\"https://make.wordpress.org/core/2025/07/08/wordpress-6-8-2-rc1-is-now-available/\">release candidate announcement.</a></p>\n\n\n\n<p>WordPress 6.8.2 is a short-cycle maintenance release. More maintenance releases may be made available throughout 2025.</p>\n\n\n\n<p>If you have sites that support automatic background updates, the update process will begin automatically.</p>\n\n\n\n<p>You can <a href=\"https://wordpress.org/wordpress-6.8.2.zip\">download WordPress 6.8.2 from WordPress.org</a>, or visit your WordPress Dashboard, click “Updates”, and then click “Update Now”. For more information on this release, please <a href=\"https://wordpress.org/support/wordpress-version/version-6-8-2\">visit the HelpHub version page</a>.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Dropping security updates for WordPress versions 4.1 through 4.6</h2>\n\n\n\n<p>This is not directly related to the 6.8.2 maintenance release, but <a href=\"https://wordpress.org/news/2025/06/dropping-security-updates-for-wordpress-versions-4-1-through-4-6/\">branches 4.1 to 4.6 had their final release today</a>. These branches won&#8217;t receive any security update anymore.</p>\n\n\n\n<h2 class=\"wp-block-heading\">Thank you to these WordPress contributors</h2>\n\n\n\n<p>WordPress 6.8.2 was led by <a href=\"https://profiles.wordpress.org/audrasjb/\">Jb Audras</a>, <a href=\"https://profiles.wordpress.org/estelaris/\">Estela Rueda</a> and <a href=\"https://profiles.wordpress.org/zunaid321/\">Zunaid Amin</a>.</p>\n\n\n\n<p>Special thanks to <a class=\"mention\" href=\"https://profiles.wordpress.org/davidbaumwald/\"><span class=\"mentions-prefix\">@</span>davidbaumwald</a>, <a class=\"mention\" href=\"https://profiles.wordpress.org/sergeybiryukov/\"><span class=\"mentions-prefix\">@</span>sergeybiryukov</a>, <a class=\"mention\" href=\"https://profiles.wordpress.org/mamaduka/\"><span class=\"mentions-prefix\">@</span>mamaduka</a>, <a class=\"mention\" href=\"https://profiles.wordpress.org/wildworks/\"><span class=\"mentions-prefix\">@</span>wildworks</a> and <a class=\"mention\" href=\"https://profiles.wordpress.org/jorbin/\"><span class=\"mentions-prefix\">@</span>jorbin</a> for their help on specific release tasks.</p>\n\n\n\n<p>WordPress 6.8.2 would not have been possible without the contributions of the following 96 people. Their asynchronous coordination to deliver maintenance fixes into a stable release is a testament to the power and capability of the WordPress community.</p>\n\n\n\n<p class=\"is-style-wporg-props-medium has-white-color has-midnight-gradient-background has-text-color has-background has-link-color has-normal-font-size wp-elements-2ad7deb15a87fd29427f001e4c18a1ac\"><a href=\"https://profiles.wordpress.org/jorbin\">Aaron Jorbin</a>, <a href=\"https://profiles.wordpress.org/adamsilverstein\">Adam Silverstein</a>, <a href=\"https://profiles.wordpress.org/zieladam\">Adam Zieliński</a>, <a href=\"https://profiles.wordpress.org/wildworks\">Aki Hamano</a>, <a href=\"https://profiles.wordpress.org/alexstine\">Alex Stine</a>, <a href=\"https://profiles.wordpress.org/anatolbroder\">Anatol Broder</a>, <a href=\"https://profiles.wordpress.org/afercia\">Andrea Fercia</a>, <a href=\"https://profiles.wordpress.org/nacin\">Andrew Nacin</a>, <a href=\"https://profiles.wordpress.org/ankitkumarshah\">Ankit Kumar Shah</a>, <a href=\"https://profiles.wordpress.org/annezazu\">annezazu</a>, <a href=\"https://profiles.wordpress.org/azharderaiya\">Azhar Deraiya</a>, <a href=\"https://profiles.wordpress.org/benjamingosset\">Benjamin Gosset</a>, <a href=\"https://profiles.wordpress.org/bhubbard\">Brandon Hubbard</a>, <a href=\"https://profiles.wordpress.org/kraftbj\">Brandon Kraft</a>, <a href=\"https://profiles.wordpress.org/brhodes\">brhodes</a>, <a href=\"https://profiles.wordpress.org/poena\">Carolina Nymark</a>, <a href=\"https://profiles.wordpress.org/czarate\">Chris Zarate</a>, <a href=\"https://profiles.wordpress.org/courane01\">Courtney Robertson</a>, <a href=\"https://profiles.wordpress.org/talldanwp\">Daniel Richards</a>, <a href=\"https://profiles.wordpress.org/darshitrajyaguru97\">Darshit Rajyaguru</a>, <a href=\"https://profiles.wordpress.org/davidbaumwald\">David Baumwald</a>, <a href=\"https://profiles.wordpress.org/dmsnell\">Dennis Snell</a>, <a href=\"https://profiles.wordpress.org/dhruvang21\">Dhruvang21</a>, <a href=\"https://profiles.wordpress.org/dilipbheda\">Dilip Bheda</a>, <a href=\"https://profiles.wordpress.org/dd32\">Dion Hulse</a>, <a href=\"https://profiles.wordpress.org/divinenephron\">divinenephron</a>, <a href=\"https://profiles.wordpress.org/dustintechsmith\">dustintechsmith</a>, <a href=\"https://profiles.wordpress.org/ericlewis\">Eric Andrew Lewis</a>, <a href=\"https://profiles.wordpress.org/im3dabasia1\">Eshaan Dabasiya</a>, <a href=\"https://profiles.wordpress.org/estelaris\">Estela Rueda</a>, <a href=\"https://profiles.wordpress.org/eherman24\">Evan Herman</a>, <a href=\"https://profiles.wordpress.org/fabiankaegy\">Fabian Kägy</a>, <a href=\"https://profiles.wordpress.org/faisalahammad\">Faisal Ahammad</a>, <a href=\"https://profiles.wordpress.org/flixos90\">Felix Arntz</a>, <a href=\"https://profiles.wordpress.org/pento\">Gary Pendergast</a>, <a href=\"https://profiles.wordpress.org/guddu1315\">Gaurang Dabhi</a>, <a href=\"https://profiles.wordpress.org/mamaduka\">George Mamadashvili</a>, <a href=\"https://profiles.wordpress.org/gernberg\">gernberg</a>, <a href=\"https://profiles.wordpress.org/gziolo\">Greg Ziółkowski</a>, <a href=\"https://profiles.wordpress.org/harshgajipara\">Harsh Gajipara</a>, <a href=\"https://profiles.wordpress.org/helgatheviking\">HelgaTheViking</a>, <a href=\"https://profiles.wordpress.org/abcd95\">Himanshu Pathak</a>, <a href=\"https://profiles.wordpress.org/audrasjb\">Jb Audras</a>, <a href=\"https://profiles.wordpress.org/JeffPaul\">Jeffrey Paul</a>, <a href=\"https://profiles.wordpress.org/jdy68\">Jenny Dupuy</a>, <a href=\"https://profiles.wordpress.org/luminuu\">Jessica Lyschik</a>, <a href=\"https://profiles.wordpress.org/jigarpanchal\">Jigar Panchal</a>, <a href=\"https://profiles.wordpress.org/joedolson\">Joe Dolson</a>, <a href=\"https://profiles.wordpress.org/joemcgill\">Joe McGill</a>, <a href=\"https://profiles.wordpress.org/johnbillion\">John Blackbourn</a>, <a href=\"https://profiles.wordpress.org/mindctrl\">John Parris</a>, <a href=\"https://profiles.wordpress.org/jonsurrell\">Jon Surrell</a>, <a href=\"https://profiles.wordpress.org/desrosj\">Jonathan Desrosiers</a>, <a href=\"https://profiles.wordpress.org/spacedmonkey\">Jonny Harris</a>, <a href=\"https://profiles.wordpress.org/kausaralm\">Kausar Alam</a>, <a href=\"https://profiles.wordpress.org/kishanjasani\">Kishan Jasani</a>, <a href=\"https://profiles.wordpress.org/tyxla\">Marin Atanasov</a>, <a href=\"https://profiles.wordpress.org/matt\">Matt Mullenweg</a>, <a href=\"https://profiles.wordpress.org/pfefferle\">Matthias Pfefferle</a>, <a href=\"https://profiles.wordpress.org/megane9988\">megane9988</a>, <a href=\"https://profiles.wordpress.org/mosescursor\">Moses Cursor Ssebunya</a>, <a href=\"https://profiles.wordpress.org/mukesh27\">Mukesh Panchal</a>, <a href=\"https://profiles.wordpress.org/mwillman1991\">mwillman1991</a>, <a href=\"https://profiles.wordpress.org/bugnumber9\">Nazar Hotsa</a>, <a href=\"https://profiles.wordpress.org/nidhidhandhukiya\">nidhidhandhukiya</a>, <a href=\"https://profiles.wordpress.org/nikunj8866\">Nikunj Hatkar</a>, <a href=\"https://profiles.wordpress.org/oferlaor\">oferlaor</a>, <a href=\"https://profiles.wordpress.org/oglekler\">Olga Gleckler</a>, <a href=\"https://profiles.wordpress.org/swissspidy\">Pascal Birchler</a>, <a href=\"https://profiles.wordpress.org/paulstanos\">paulstanos</a>, <a href=\"https://profiles.wordpress.org/peterwilsoncc\">Peter Wilson</a>, <a href=\"https://profiles.wordpress.org/puggan\">puggan</a>, <a href=\"https://profiles.wordpress.org/ravigadhiyawp\">Ravi Gadhiya</a>, <a href=\"https://profiles.wordpress.org/youknowriad\">Riad Benguella</a>, <a href=\"https://profiles.wordpress.org/rollybueno\">Rolly Bueno</a>, <a href=\"https://profiles.wordpress.org/room34\">room34</a>, <a href=\"https://profiles.wordpress.org/sainathpoojary\">Sainath Poojary</a>, <a href=\"https://profiles.wordpress.org/sajjad67\">Sajjad Hossain Sagor</a>, <a href=\"https://profiles.wordpress.org/Sam_a\">sam_a</a>, <a href=\"https://profiles.wordpress.org/sandeepdahiya\">Sandeep Dahiya</a>, <a href=\"https://profiles.wordpress.org/SergeyBiryukov\">Sergey Biryukov</a>, <a href=\"https://profiles.wordpress.org/shanemuir\">Shane Muirhead</a>, <a href=\"https://profiles.wordpress.org/siliconforks\">siliconforks</a>, <a href=\"https://profiles.wordpress.org/sirlouen\">SirLouen</a>, <a href=\"https://profiles.wordpress.org/sabernhardt\">Stephen Bernhardt</a>, <a href=\"https://profiles.wordpress.org/sukhendu2002\">Sukhendu Sekhar Guria</a>, <a href=\"https://profiles.wordpress.org/karmatosed\">Tammie Lister</a>, <a href=\"https://profiles.wordpress.org/TobiasBg\">Tobias Bäthge</a>, <a href=\"https://profiles.wordpress.org/wpsmith\">Travis Smith</a>, <a href=\"https://profiles.wordpress.org/ugyensupport\">Ugyen Dorji</a>, <a href=\"https://profiles.wordpress.org/uxl\">uxl</a>, <a href=\"https://profiles.wordpress.org/westonruter\">Weston Ruter</a>, <a href=\"https://profiles.wordpress.org/whaze\">whaze</a>, <a href=\"https://profiles.wordpress.org/getsyash\">Yash B</a>, <a href=\"https://profiles.wordpress.org/yogeshbhutkar\">Yogesh Bhutkar</a>, and <a href=\"https://profiles.wordpress.org/zunaid321\">Zunaid Amin</a></p>\n\n\n\n<h2 class=\"wp-block-heading\">How to contribute</h2>\n\n\n\n<p>To get involved in WordPress core development, head over to Trac, <a href=\"https://core.trac.wordpress.org/report/6\">pick a ticket</a>, and join the conversation on Slack, in the <a href=\"https://wordpress.slack.com/archives/C02RQBWTW\">#core</a> and <a href=\"https://wordpress.slack.com/archives/C080HLPP2Q6\">#6-8-release-leads</a> channels. Need help? Check out the <a href=\"https://make.wordpress.org/core/handbook/\">Core Contributor Handbook</a>.</p>\n\n\n\n<p class=\"has-text-align-right\"><em>Thanks to <a class=\"mention\" href=\"https://profiles.wordpress.org/estelaris/\"><span class=\"mentions-prefix\">@</span>estelaris</a> and <a class=\"mention\" href=\"https://profiles.wordpress.org/zunaid321/\"><span class=\"mentions-prefix\">@</span>zunaid321</a> for proofreading.</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, 15 Jul 2025 15:41: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:9:\"Jb Audras\";s:7:\"attribs\";a:0:{}s:8:\"xml_base\";s:0:\"\";s:17:\"xml_base_explicit\";b:0;s:8:\"xml_lang\";s:0:\"\";}}}}}}}}}}}}}}}}s:4:\"type\";i:128;s:7:\"headers\";O:48:\"WpOrg\\Requests\\Utility\\CaseInsensitiveDictionary\":1:{s:7:\"\0*\0data\";a:9:{s:6:\"server\";s:5:\"nginx\";s:4:\"date\";s:29:\"Tue, 19 Aug 2025 17:10:14 GMT\";s:12:\"content-type\";s:8:\"text/xml\";s:13:\"last-modified\";s:29:\"Tue, 19 Aug 2025 16:45:20 GMT\";s:4:\"vary\";s:15:\"Accept-Encoding\";s:15:\"x-frame-options\";s:10:\"SAMEORIGIN\";s:16:\"content-encoding\";s:2:\"br\";s:7:\"alt-svc\";s:19:\"h3=\":443\"; ma=86400\";s:4:\"x-nc\";s:9:\"HIT ord 2\";}}s:5:\"build\";i:1727736619;s:21:\"cache_expiration_time\";i:1755666614;s:23:\"__cache_expiration_time\";i:1755666614;}','off'),(149,'_transient_timeout_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1755666616','off'),(150,'_transient_feed_mod_d117b5738fbd35bd8c0391cda1f2b5d9','1755623416','off'),(151,'_transient_timeout_dash_v2_88ae138922fe95674369b1cb3d215a2b','1755666616','off'),(152,'_transient_dash_v2_88ae138922fe95674369b1cb3d215a2b','<div class=\"rss-widget\"><ul><li><a class=\'rsswidget\' href=\'https://wordpress.org/news/2025/08/portland-are-you-ready-the-wcus-2025-schedule-has-arrived/\'>Portland, Are You Ready? The WCUS 2025 Schedule Has Arrived!</a></li><li><a class=\'rsswidget\' href=\'https://wordpress.org/news/2025/08/maintenance-releases-for-wordpress-branches-4-7-to-6-7/\'>Maintenance Releases for WordPress branches 4.7 to 6.7</a></li></ul></div><div class=\"rss-widget\"><ul><li><a class=\'rsswidget\' href=\'https://central.wordcamp.org/news/2025/08/nurturing-new-contributors-wordpress-kolhapur-communitys-online-contribution-series/\'>WordCamp Central: Nurturing New Contributors: WordPress Kolhapur Community’s Online Contribution Series</a></li><li><a class=\'rsswidget\' href=\'https://ma.tt/2025/08/mcp-nyc-hackathon/\'>Matt: MCP NYC Hackathon</a></li><li><a class=\'rsswidget\' href=\'https://openchannels.fm/open-channels-fm-end-of-summer-break/\'>Open Channels FM: Open Channels FM End of Summer Break</a></li></ul></div>','off'),(155,'finished_updating_comment_type','1','auto'),(181,'_site_transient_update_plugins','O:8:\"stdClass\":5:{s:12:\"last_checked\";i:1755688264;s:8:\"response\";a:1:{s:19:\"akismet/akismet.php\";O:8:\"stdClass\":13:{s:2:\"id\";s:21:\"w.org/plugins/akismet\";s:4:\"slug\";s:7:\"akismet\";s:6:\"plugin\";s:19:\"akismet/akismet.php\";s:11:\"new_version\";s:3:\"5.5\";s:3:\"url\";s:38:\"https://wordpress.org/plugins/akismet/\";s:7:\"package\";s:54:\"https://downloads.wordpress.org/plugin/akismet.5.5.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:60:\"https://ps.w.org/akismet/assets/icon-256x256.png?rev=2818463\";s:2:\"1x\";s:60:\"https://ps.w.org/akismet/assets/icon-128x128.png?rev=2818463\";}s:7:\"banners\";a:2:{s:2:\"2x\";s:63:\"https://ps.w.org/akismet/assets/banner-1544x500.png?rev=2900731\";s:2:\"1x\";s:62:\"https://ps.w.org/akismet/assets/banner-772x250.png?rev=2900731\";}s:11:\"banners_rtl\";a:0:{}s:8:\"requires\";s:3:\"5.8\";s:6:\"tested\";s:5:\"6.8.2\";s:12:\"requires_php\";s:3:\"7.2\";s:16:\"requires_plugins\";a:0:{}}}s:12:\"translations\";a:0:{}s:9:\"no_update\";a:1:{s:9:\"hello.php\";O:8:\"stdClass\":10:{s:2:\"id\";s:25:\"w.org/plugins/hello-dolly\";s:4:\"slug\";s:11:\"hello-dolly\";s:6:\"plugin\";s:9:\"hello.php\";s:11:\"new_version\";s:5:\"1.7.2\";s:3:\"url\";s:42:\"https://wordpress.org/plugins/hello-dolly/\";s:7:\"package\";s:60:\"https://downloads.wordpress.org/plugin/hello-dolly.1.7.3.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-256x256.jpg?rev=2052855\";s:2:\"1x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-128x128.jpg?rev=2052855\";}s:7:\"banners\";a:2:{s:2:\"2x\";s:67:\"https://ps.w.org/hello-dolly/assets/banner-1544x500.jpg?rev=2645582\";s:2:\"1x\";s:66:\"https://ps.w.org/hello-dolly/assets/banner-772x250.jpg?rev=2052855\";}s:11:\"banners_rtl\";a:0:{}s:8:\"requires\";s:3:\"4.6\";}}s:7:\"checked\";a:2:{s:19:\"akismet/akismet.php\";s:3:\"5.4\";s:9:\"hello.php\";s:5:\"1.7.2\";}}','off'),(187,'_site_transient_timeout_theme_roots','1755690064','off'),(188,'_site_transient_theme_roots','a:3:{s:16:\"twentytwentyfive\";s:7:\"/themes\";s:16:\"twentytwentyfour\";s:7:\"/themes\";s:17:\"twentytwentythree\";s:7:\"/themes\";}','off'),(203,'_site_transient_timeout_wp_theme_files_patterns-a6420e69079cd025d195c6dc7bb37654','1755710999','off'),(205,'_site_transient_wp_theme_files_patterns-a6420e69079cd025d195c6dc7bb37654','a:2:{s:7:\"version\";s:3:\"1.3\";s:8:\"patterns\";a:98:{s:21:\"banner-about-book.php\";a:4:{s:5:\"title\";s:28:\"Banner with book description\";s:4:\"slug\";s:34:\"twentytwentyfive/banner-about-book\";s:11:\"description\";s:66:\"Banner with book description and accompanying image for promotion.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:28:\"banner-cover-big-heading.php\";a:4:{s:5:\"title\";s:22:\"Cover with big heading\";s:4:\"slug\";s:41:\"twentytwentyfive/banner-cover-big-heading\";s:11:\"description\";s:82:\"A full-width cover section with a large background image and an oversized heading.\";s:10:\"categories\";a:3:{i:0;s:6:\"banner\";i:1;s:5:\"about\";i:2;s:8:\"featured\";}}s:22:\"banner-intro-image.php\";a:4:{s:5:\"title\";s:49:\"Short heading and paragraph and image on the left\";s:4:\"slug\";s:35:\"twentytwentyfive/banner-intro-image\";s:11:\"description\";s:68:\"A Intro pattern with Short heading, paragraph and image on the left.\";s:10:\"categories\";a:2:{i:0;s:6:\"banner\";i:1;s:8:\"featured\";}}s:16:\"banner-intro.php\";a:4:{s:5:\"title\";s:35:\"Intro with left-aligned description\";s:4:\"slug\";s:29:\"twentytwentyfive/banner-intro\";s:11:\"description\";s:66:\"A large left-aligned heading with a brand name emphasized in bold.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:17:\"banner-poster.php\";a:4:{s:5:\"title\";s:19:\"Poster-like section\";s:4:\"slug\";s:30:\"twentytwentyfive/banner-poster\";s:11:\"description\";s:78:\"A section that can be used as a banner or a landing page to announce an event.\";s:10:\"categories\";a:2:{i:0;s:6:\"banner\";i:1;s:5:\"media\";}}s:43:\"banner-with-description-and-images-grid.php\";a:4:{s:5:\"title\";s:39:\"Banner with description and images grid\";s:4:\"slug\";s:47:\"twentytwentyfive/banner-description-images-grid\";s:11:\"description\";s:75:\"A banner with a short paragraph, and two images displayed in a grid layout.\";s:10:\"categories\";a:2:{i:0;s:6:\"banner\";i:1;s:8:\"featured\";}}s:18:\"binding-format.php\";a:4:{s:5:\"title\";s:16:\"Post format name\";s:4:\"slug\";s:31:\"twentytwentyfive/binding-format\";s:11:\"description\";s:75:\"Prints the name of the post format with the help of the Block Bindings API.\";s:10:\"categories\";a:1:{i:0;s:28:\"twentytwentyfive_post-format\";}}s:12:\"comments.php\";a:5:{s:5:\"title\";s:8:\"Comments\";s:4:\"slug\";s:25:\"twentytwentyfive/comments\";s:11:\"description\";s:63:\"Comments area with comments list, pagination, and comment form.\";s:10:\"categories\";a:1:{i:0;s:4:\"text\";}s:10:\"blockTypes\";a:1:{i:0;s:13:\"core/comments\";}}s:32:\"contact-centered-social-link.php\";a:5:{s:5:\"title\";s:30:\"Centered link and social links\";s:4:\"slug\";s:45:\"twentytwentyfive/contact-centered-social-link\";s:11:\"description\";s:73:\"Centered contact section with a prominent message and social media links.\";s:10:\"categories\";a:1:{i:0;s:7:\"contact\";}s:8:\"keywords\";a:3:{i:0;s:7:\"contact\";i:1;s:3:\"faq\";i:2;s:9:\"questions\";}}s:26:\"contact-info-locations.php\";a:6:{s:5:\"title\";s:27:\"Contact, info and locations\";s:4:\"slug\";s:39:\"twentytwentyfive/contact-info-locations\";s:11:\"description\";s:78:\"Contact section with social media links, email, and multiple location details.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:7:\"contact\";}s:8:\"keywords\";a:2:{i:0;s:7:\"contact\";i:1;s:8:\"location\";}}s:29:\"contact-location-and-link.php\";a:4:{s:5:\"title\";s:25:\"Contact location and link\";s:4:\"slug\";s:42:\"twentytwentyfive/contact-location-and-link\";s:11:\"description\";s:89:\"Contact section with a location address, a directions link, and an image of the location.\";s:10:\"categories\";a:2:{i:0;s:7:\"contact\";i:1;s:8:\"featured\";}}s:18:\"cta-book-links.php\";a:4:{s:5:\"title\";s:30:\"Call to action with book links\";s:4:\"slug\";s:31:\"twentytwentyfive/cta-book-links\";s:11:\"description\";s:74:\"A call to action section with links to get the book in different websites.\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:22:\"cta-book-locations.php\";a:4:{s:5:\"title\";s:29:\"Call to action with locations\";s:4:\"slug\";s:35:\"twentytwentyfive/cta-book-locations\";s:11:\"description\";s:82:\"A call to action section with links to get the book in the most popular locations.\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:24:\"cta-centered-heading.php\";a:4:{s:5:\"title\";s:16:\"Centered heading\";s:4:\"slug\";s:37:\"twentytwentyfive/cta-centered-heading\";s:11:\"description\";s:53:\"A hero with a centered heading, paragraph and button.\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:19:\"cta-events-list.php\";a:4:{s:5:\"title\";s:11:\"Events list\";s:4:\"slug\";s:32:\"twentytwentyfive/cta-events-list\";s:11:\"description\";s:37:\"A list of events with call to action.\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:26:\"cta-grid-products-link.php\";a:5:{s:5:\"title\";s:54:\"Call to action with grid layout with products and link\";s:4:\"slug\";s:39:\"twentytwentyfive/cta-grid-products-link\";s:11:\"description\";s:42:\"A call to action featuring product images.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:14:\"call-to-action\";i:1;s:8:\"featured\";}}s:22:\"cta-heading-search.php\";a:4:{s:5:\"title\";s:23:\"Heading and search form\";s:4:\"slug\";s:35:\"twentytwentyfive/cta-heading-search\";s:11:\"description\";s:54:\"Large heading with a search form for quick navigation.\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:18:\"cta-newsletter.php\";a:5:{s:5:\"title\";s:18:\"Newsletter sign-up\";s:4:\"slug\";s:31:\"twentytwentyfive/cta-newsletter\";s:11:\"description\";s:0:\"\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}s:8:\"keywords\";a:2:{i:0;s:14:\"call-to-action\";i:1;s:10:\"newsletter\";}}s:15:\"event-3-col.php\";a:5:{s:5:\"title\";s:46:\"Events, 3 columns with event images and titles\";s:4:\"slug\";s:28:\"twentytwentyfive/event-3-col\";s:11:\"description\";s:95:\"A header with title and text and three columns that show 3 events with their images and titles.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}s:8:\"keywords\";a:3:{i:0;s:6:\"events\";i:1;s:7:\"columns\";i:2;s:6:\"images\";}}s:14:\"event-rsvp.php\";a:7:{s:5:\"title\";s:10:\"Event RSVP\";s:4:\"slug\";s:27:\"twentytwentyfive/event-rsvp\";s:11:\"description\";s:64:\"RSVP for an upcoming event with a cover image and event details.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}s:8:\"keywords\";a:3:{i:0;s:14:\"call-to-action\";i:1;s:4:\"rsvp\";i:2;s:5:\"event\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}}s:18:\"event-schedule.php\";a:5:{s:5:\"title\";s:14:\"Event schedule\";s:4:\"slug\";s:31:\"twentytwentyfive/event-schedule\";s:11:\"description\";s:54:\"A section with specified dates and times for an event.\";s:10:\"categories\";a:1:{i:0;s:5:\"about\";}s:8:\"keywords\";a:4:{i:0;s:6:\"events\";i:1;s:6:\"agenda\";i:2;s:8:\"schedule\";i:3;s:8:\"lectures\";}}s:19:\"footer-centered.php\";a:5:{s:5:\"title\";s:15:\"Centered footer\";s:4:\"slug\";s:32:\"twentytwentyfive/footer-centered\";s:11:\"description\";s:44:\"Footer with centered site title and tagline.\";s:10:\"categories\";a:1:{i:0;s:6:\"footer\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/footer\";}}s:18:\"footer-columns.php\";a:5:{s:5:\"title\";s:19:\"Footer with columns\";s:4:\"slug\";s:31:\"twentytwentyfive/footer-columns\";s:11:\"description\";s:45:\"Footer columns with title, tagline and links.\";s:10:\"categories\";a:1:{i:0;s:6:\"footer\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/footer\";}}s:21:\"footer-newsletter.php\";a:5:{s:5:\"title\";s:29:\"Footer with newsletter signup\";s:4:\"slug\";s:34:\"twentytwentyfive/footer-newsletter\";s:11:\"description\";s:51:\"Footer with large site title and newsletter signup.\";s:10:\"categories\";a:1:{i:0;s:6:\"footer\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/footer\";}}s:17:\"footer-social.php\";a:5:{s:5:\"title\";s:33:\"Centered footer with social links\";s:4:\"slug\";s:30:\"twentytwentyfive/footer-social\";s:11:\"description\";s:49:\"Footer with centered site title and social links.\";s:10:\"categories\";a:1:{i:0;s:6:\"footer\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/footer\";}}s:10:\"footer.php\";a:5:{s:5:\"title\";s:6:\"Footer\";s:4:\"slug\";s:23:\"twentytwentyfive/footer\";s:11:\"description\";s:51:\"Footer columns with logo, title, tagline and links.\";s:10:\"categories\";a:1:{i:0;s:6:\"footer\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/footer\";}}s:16:\"format-audio.php\";a:4:{s:5:\"title\";s:12:\"Audio format\";s:4:\"slug\";s:29:\"twentytwentyfive/format-audio\";s:11:\"description\";s:73:\"An audio post format with an image, title, audio player, and description.\";s:10:\"categories\";a:1:{i:0;s:28:\"twentytwentyfive_post-format\";}}s:15:\"format-link.php\";a:4:{s:5:\"title\";s:11:\"Link format\";s:4:\"slug\";s:28:\"twentytwentyfive/format-link\";s:11:\"description\";s:77:\"A link post format with a description and an emphasized link for key content.\";s:10:\"categories\";a:1:{i:0;s:28:\"twentytwentyfive_post-format\";}}s:15:\"grid-videos.php\";a:4:{s:5:\"title\";s:16:\"Grid with videos\";s:4:\"slug\";s:28:\"twentytwentyfive/grid-videos\";s:11:\"description\";s:19:\"A grid with videos.\";s:10:\"categories\";a:1:{i:0;s:5:\"about\";}}s:24:\"grid-with-categories.php\";a:5:{s:5:\"title\";s:20:\"Grid with categories\";s:4:\"slug\";s:37:\"twentytwentyfive/grid-with-categories\";s:11:\"description\";s:41:\"A grid section with different categories.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:19:\"header-centered.php\";a:5:{s:5:\"title\";s:20:\"Centered site header\";s:4:\"slug\";s:32:\"twentytwentyfive/header-centered\";s:11:\"description\";s:52:\"Site header with centered site title and navigation.\";s:10:\"categories\";a:1:{i:0;s:6:\"header\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/header\";}}s:18:\"header-columns.php\";a:5:{s:5:\"title\";s:19:\"Header with columns\";s:4:\"slug\";s:31:\"twentytwentyfive/header-columns\";s:11:\"description\";s:54:\"Site header with site title and navigation in columns.\";s:10:\"categories\";a:1:{i:0;s:6:\"header\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/header\";}}s:22:\"header-large-title.php\";a:5:{s:5:\"title\";s:23:\"Header with large title\";s:4:\"slug\";s:35:\"twentytwentyfive/header-large-title\";s:11:\"description\";s:63:\"Site header with large site title and right-aligned navigation.\";s:10:\"categories\";a:1:{i:0;s:6:\"header\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/header\";}}s:10:\"header.php\";a:5:{s:5:\"title\";s:6:\"Header\";s:4:\"slug\";s:23:\"twentytwentyfive/header\";s:11:\"description\";s:43:\"Site header with site title and navigation.\";s:10:\"categories\";a:1:{i:0;s:6:\"header\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/header\";}}s:36:\"heading-and-paragraph-with-image.php\";a:4:{s:5:\"title\";s:45:\"Heading and paragraph with image on the right\";s:4:\"slug\";s:49:\"twentytwentyfive/heading-and-paragraph-with-image\";s:11:\"description\";s:89:\"A two-column section with a heading and paragraph on the left, and an image on the right.\";s:10:\"categories\";a:1:{i:0;s:5:\"about\";}}s:13:\"hero-book.php\";a:5:{s:5:\"title\";s:9:\"Hero book\";s:4:\"slug\";s:26:\"twentytwentyfive/hero-book\";s:11:\"description\";s:66:\"A hero section for the book with a description and pre-order link.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}s:8:\"keywords\";a:3:{i:0;s:7:\"podcast\";i:1;s:4:\"hero\";i:2;s:7:\"stories\";}}s:25:\"hero-full-width-image.php\";a:4:{s:5:\"title\";s:22:\"Hero, full width image\";s:4:\"slug\";s:38:\"twentytwentyfive/hero-full-width-image\";s:11:\"description\";s:68:\"A hero with a full width image, heading, short paragraph and button.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:41:\"hero-overlapped-book-cover-with-links.php\";a:4:{s:5:\"title\";s:38:\"Hero, overlapped book cover with links\";s:4:\"slug\";s:54:\"twentytwentyfive/hero-overlapped-book-cover-with-links\";s:11:\"description\";s:47:\"A hero with an overlapped book cover and links.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:16:\"hero-podcast.php\";a:5:{s:5:\"title\";s:12:\"Hero podcast\";s:4:\"slug\";s:29:\"twentytwentyfive/hero-podcast\";s:11:\"description\";s:0:\"\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}s:8:\"keywords\";a:3:{i:0;s:7:\"podcast\";i:1;s:4:\"hero\";i:2;s:7:\"stories\";}}s:14:\"hidden-404.php\";a:4:{s:5:\"title\";s:3:\"404\";s:4:\"slug\";s:27:\"twentytwentyfive/hidden-404\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:23:\"hidden-blog-heading.php\";a:4:{s:5:\"title\";s:19:\"Hidden blog heading\";s:4:\"slug\";s:36:\"twentytwentyfive/hidden-blog-heading\";s:11:\"description\";s:52:\"Hidden heading for the home page and index template.\";s:8:\"inserter\";b:0;}s:17:\"hidden-search.php\";a:4:{s:5:\"title\";s:6:\"Search\";s:4:\"slug\";s:30:\"twentytwentyfive/hidden-search\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:18:\"hidden-sidebar.php\";a:4:{s:5:\"title\";s:7:\"Sidebar\";s:4:\"slug\";s:31:\"twentytwentyfive/hidden-sidebar\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:21:\"hidden-written-by.php\";a:4:{s:5:\"title\";s:10:\"Written by\";s:4:\"slug\";s:34:\"twentytwentyfive/hidden-written-by\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:9:\"logos.php\";a:4:{s:5:\"title\";s:5:\"Logos\";s:4:\"slug\";s:22:\"twentytwentyfive/logos\";s:11:\"description\";s:77:\"Showcasing the podcast\'s clients with a heading and a series of client logos.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:24:\"media-instagram-grid.php\";a:5:{s:5:\"title\";s:14:\"Instagram grid\";s:4:\"slug\";s:37:\"twentytwentyfive/media-instagram-grid\";s:11:\"description\";s:62:\"A grid section with photos and a link to an Instagram profile.\";s:13:\"viewportWidth\";i:1440;s:10:\"categories\";a:3:{i:0;s:5:\"media\";i:1;s:7:\"gallery\";i:2;s:8:\"featured\";}}s:14:\"more-posts.php\";a:5:{s:5:\"title\";s:10:\"More posts\";s:4:\"slug\";s:27:\"twentytwentyfive/more-posts\";s:11:\"description\";s:45:\"Displays a list of posts with title and date.\";s:10:\"categories\";a:1:{i:0;s:5:\"query\";}s:10:\"blockTypes\";a:1:{i:0;s:10:\"core/query\";}}s:21:\"overlapped-images.php\";a:4:{s:5:\"title\";s:41:\"Overlapping images and paragraph on right\";s:4:\"slug\";s:34:\"twentytwentyfive/overlapped-images\";s:11:\"description\";s:53:\"A section with overlapping images, and a description.\";s:10:\"categories\";a:2:{i:0;s:5:\"about\";i:1;s:8:\"featured\";}}s:22:\"page-business-home.php\";a:8:{s:5:\"title\";s:17:\"Business homepage\";s:4:\"slug\";s:35:\"twentytwentyfive/page-business-home\";s:11:\"description\";s:28:\"A business homepage pattern.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:20:\"page-coming-soon.php\";a:8:{s:5:\"title\";s:11:\"Coming soon\";s:4:\"slug\";s:33:\"twentytwentyfive/page-coming-soon\";s:11:\"description\";s:96:\"A full-width cover banner that can be applied to a page or it can work as a single landing page.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:15:\"page-cv-bio.php\";a:7:{s:5:\"title\";s:6:\"CV/bio\";s:4:\"slug\";s:28:\"twentytwentyfive/page-cv-bio\";s:11:\"description\";s:36:\"A pattern for a CV/Bio landing page.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:3:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:5:\"about\";i:2;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}}s:21:\"page-landing-book.php\";a:8:{s:5:\"title\";s:21:\"Landing page for book\";s:4:\"slug\";s:34:\"twentytwentyfive/page-landing-book\";s:11:\"description\";s:104:\"A landing page for the book with a hero section, pre-order links, locations, FAQs and newsletter signup.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:22:\"page-landing-event.php\";a:8:{s:5:\"title\";s:22:\"Landing page for event\";s:4:\"slug\";s:35:\"twentytwentyfive/page-landing-event\";s:11:\"description\";s:87:\"A landing page for the event with a hero section, description, FAQs and call to action.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:24:\"page-landing-podcast.php\";a:8:{s:5:\"title\";s:24:\"Landing page for podcast\";s:4:\"slug\";s:37:\"twentytwentyfive/page-landing-podcast\";s:11:\"description\";s:111:\"A landing page for the podcast with a hero section, description, logos, grid with videos and newsletter signup.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:50:\"page-link-in-bio-heading-paragraph-links-image.php\";a:7:{s:5:\"title\";s:59:\"Link in bio heading, paragraph, links and full-height image\";s:4:\"slug\";s:63:\"twentytwentyfive/page-link-in-bio-heading-paragraph-links-image\";s:11:\"description\";s:84:\"A link in bio landing page with a heading, paragraph, links and a full height image.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:3:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:6:\"banner\";i:2;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}}s:33:\"page-link-in-bio-wide-margins.php\";a:7:{s:5:\"title\";s:48:\"Link in bio with profile, links and wide margins\";s:4:\"slug\";s:46:\"twentytwentyfive/page-link-in-bio-wide-margins\";s:11:\"description\";s:86:\"A link in bio landing page with social links, a profile photo and a brief description.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:3:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:6:\"banner\";i:2;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}}s:39:\"page-link-in-bio-with-tight-margins.php\";a:8:{s:5:\"title\";s:30:\"Link in bio with tight margins\";s:4:\"slug\";s:52:\"twentytwentyfive/page-link-in-bio-with-tight-margins\";s:11:\"description\";s:90:\"A full-width, full-height link in bio section with an image, a paragraph and social links.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:6:\"banner\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:23:\"page-portfolio-home.php\";a:8:{s:5:\"title\";s:18:\"Portfolio homepage\";s:4:\"slug\";s:36:\"twentytwentyfive/page-portfolio-home\";s:11:\"description\";s:29:\"A portfolio homepage pattern.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:5:\"posts\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:18:\"page-shop-home.php\";a:8:{s:5:\"title\";s:13:\"Shop homepage\";s:4:\"slug\";s:31:\"twentytwentyfive/page-shop-home\";s:11:\"description\";s:24:\"A shop homepage pattern.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:21:\"twentytwentyfive_page\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:19:\"post-navigation.php\";a:5:{s:5:\"title\";s:15:\"Post navigation\";s:4:\"slug\";s:32:\"twentytwentyfive/post-navigation\";s:11:\"description\";s:29:\"Next and previous post links.\";s:10:\"categories\";a:1:{i:0;s:4:\"text\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/post-navigation-link\";}}s:17:\"pricing-2-col.php\";a:5:{s:5:\"title\";s:18:\"Pricing, 2 columns\";s:4:\"slug\";s:30:\"twentytwentyfive/pricing-2-col\";s:11:\"description\";s:88:\"Pricing section with two columns, pricing plan, description, and call-to-action buttons.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:17:\"pricing-3-col.php\";a:4:{s:5:\"title\";s:18:\"Pricing, 3 columns\";s:4:\"slug\";s:30:\"twentytwentyfive/pricing-3-col\";s:11:\"description\";s:100:\"A three-column boxed pricing table designed to showcase services, descriptions, and pricing options.\";s:10:\"categories\";a:3:{i:0;s:14:\"call-to-action\";i:1;s:6:\"banner\";i:2;s:8:\"services\";}}s:18:\"services-3-col.php\";a:4:{s:5:\"title\";s:19:\"Services, 3 columns\";s:4:\"slug\";s:31:\"twentytwentyfive/services-3-col\";s:11:\"description\";s:56:\"Three columns with images and text to showcase services.\";s:10:\"categories\";a:3:{i:0;s:14:\"call-to-action\";i:1;s:6:\"banner\";i:2;s:8:\"services\";}}s:36:\"services-subscriber-only-section.php\";a:4:{s:5:\"title\";s:33:\"Services, subscriber only section\";s:4:\"slug\";s:49:\"twentytwentyfive/services-subscriber-only-section\";s:11:\"description\";s:72:\"A subscriber-only section highlighting exclusive services and offerings.\";s:10:\"categories\";a:2:{i:0;s:14:\"call-to-action\";i:1;s:8:\"services\";}}s:24:\"services-team-photos.php\";a:4:{s:5:\"title\";s:21:\"Services, team photos\";s:4:\"slug\";s:37:\"twentytwentyfive/services-team-photos\";s:11:\"description\";s:59:\"Display team photos in a services section with grid layout.\";s:10:\"categories\";a:3:{i:0;s:6:\"banner\";i:1;s:14:\"call-to-action\";i:2;s:8:\"featured\";}}s:37:\"template-404-vertical-header-blog.php\";a:5:{s:5:\"title\";s:17:\"Right-aligned 404\";s:4:\"slug\";s:50:\"twentytwentyfive/template-404-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:13:\"templateTypes\";a:1:{i:0;s:3:\"404\";}}s:30:\"template-archive-news-blog.php\";a:6:{s:5:\"title\";s:17:\"News blog archive\";s:4:\"slug\";s:43:\"twentytwentyfive/template-archive-news-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:7:\"archive\";}}s:31:\"template-archive-photo-blog.php\";a:6:{s:5:\"title\";s:18:\"Photo blog archive\";s:4:\"slug\";s:44:\"twentytwentyfive/template-archive-photo-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:7:\"archive\";}}s:30:\"template-archive-text-blog.php\";a:6:{s:5:\"title\";s:17:\"Text blog archive\";s:4:\"slug\";s:43:\"twentytwentyfive/template-archive-text-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:7:\"archive\";}}s:41:\"template-archive-vertical-header-blog.php\";a:6:{s:5:\"title\";s:21:\"Right-aligned archive\";s:4:\"slug\";s:54:\"twentytwentyfive/template-archive-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:7:\"archive\";}}s:27:\"template-home-news-blog.php\";a:6:{s:5:\"title\";s:14:\"News blog home\";s:4:\"slug\";s:40:\"twentytwentyfive/template-home-news-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:3:{i:0;s:10:\"front-page\";i:1;s:5:\"index\";i:2;s:4:\"home\";}}s:28:\"template-home-photo-blog.php\";a:6:{s:5:\"title\";s:15:\"Photo blog home\";s:4:\"slug\";s:41:\"twentytwentyfive/template-home-photo-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:3:{i:0;s:10:\"front-page\";i:1;s:5:\"index\";i:2;s:4:\"home\";}}s:38:\"template-home-posts-grid-news-blog.php\";a:5:{s:5:\"title\";s:34:\"News blog with featured posts grid\";s:4:\"slug\";s:51:\"twentytwentyfive/template-home-posts-grid-news-blog\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:3:{i:0;s:10:\"front-page\";i:1;s:5:\"index\";i:2;s:4:\"home\";}}s:27:\"template-home-text-blog.php\";a:6:{s:5:\"title\";s:14:\"Text blog home\";s:4:\"slug\";s:40:\"twentytwentyfive/template-home-text-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:10:\"front-page\";i:1;s:4:\"home\";}}s:38:\"template-home-vertical-header-blog.php\";a:6:{s:5:\"title\";s:18:\"Right-aligned home\";s:4:\"slug\";s:51:\"twentytwentyfive/template-home-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:3:{i:0;s:10:\"front-page\";i:1;s:5:\"index\";i:2;s:4:\"home\";}}s:40:\"template-home-with-sidebar-news-blog.php\";a:6:{s:5:\"title\";s:22:\"News blog with sidebar\";s:4:\"slug\";s:53:\"twentytwentyfive/template-home-with-sidebar-news-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:3:{i:0;s:10:\"front-page\";i:1;s:5:\"index\";i:2;s:4:\"home\";}}s:28:\"template-page-photo-blog.php\";a:5:{s:5:\"title\";s:15:\"Photo blog page\";s:4:\"slug\";s:41:\"twentytwentyfive/template-page-photo-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:13:\"templateTypes\";a:1:{i:0;s:4:\"page\";}}s:38:\"template-page-vertical-header-blog.php\";a:5:{s:5:\"title\";s:18:\"Right-aligned page\";s:4:\"slug\";s:51:\"twentytwentyfive/template-page-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:13:\"templateTypes\";a:1:{i:0;s:4:\"page\";}}s:33:\"template-query-loop-news-blog.php\";a:4:{s:5:\"title\";s:20:\"News blog query loop\";s:4:\"slug\";s:46:\"twentytwentyfive/template-query-loop-news-blog\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:34:\"template-query-loop-photo-blog.php\";a:6:{s:5:\"title\";s:16:\"Photo blog posts\";s:4:\"slug\";s:47:\"twentytwentyfive/template-query-loop-photo-blog\";s:11:\"description\";s:54:\"A list of posts, 3 columns, with only featured images.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:5:\"query\";}s:10:\"blockTypes\";a:1:{i:0;s:10:\"core/query\";}}s:33:\"template-query-loop-text-blog.php\";a:4:{s:5:\"title\";s:20:\"Text blog query loop\";s:4:\"slug\";s:46:\"twentytwentyfive/template-query-loop-text-blog\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:44:\"template-query-loop-vertical-header-blog.php\";a:4:{s:5:\"title\";s:24:\"Right-aligned query loop\";s:4:\"slug\";s:57:\"twentytwentyfive/template-query-loop-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:23:\"template-query-loop.php\";a:5:{s:5:\"title\";s:23:\"List of posts, 1 column\";s:4:\"slug\";s:36:\"twentytwentyfive/template-query-loop\";s:11:\"description\";s:61:\"A list of posts, 1 column, with featured image and post date.\";s:10:\"categories\";a:1:{i:0;s:5:\"query\";}s:10:\"blockTypes\";a:1:{i:0;s:10:\"core/query\";}}s:29:\"template-search-news-blog.php\";a:6:{s:5:\"title\";s:24:\"News blog search results\";s:4:\"slug\";s:42:\"twentytwentyfive/template-search-news-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:6:\"search\";}}s:30:\"template-search-photo-blog.php\";a:6:{s:5:\"title\";s:25:\"Photo blog search results\";s:4:\"slug\";s:43:\"twentytwentyfive/template-search-photo-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:6:\"search\";}}s:29:\"template-search-text-blog.php\";a:6:{s:5:\"title\";s:24:\"Text blog search results\";s:4:\"slug\";s:42:\"twentytwentyfive/template-search-text-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:6:\"search\";}}s:40:\"template-search-vertical-header-blog.php\";a:6:{s:5:\"title\";s:26:\"Right-aligned blog, search\";s:4:\"slug\";s:53:\"twentytwentyfive/template-search-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:6:\"search\";}}s:40:\"template-single-left-aligned-content.php\";a:6:{s:5:\"title\";s:30:\"Post with left-aligned content\";s:4:\"slug\";s:47:\"twentytwentyfive/post-with-left-aligned-content\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:29:\"template-single-news-blog.php\";a:6:{s:5:\"title\";s:34:\"News blog single post with sidebar\";s:4:\"slug\";s:42:\"twentytwentyfive/template-single-news-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:26:\"template-single-offset.php\";a:6:{s:5:\"title\";s:34:\"Offset post without featured image\";s:4:\"slug\";s:39:\"twentytwentyfive/template-single-offset\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:30:\"template-single-photo-blog.php\";a:6:{s:5:\"title\";s:22:\"Photo blog single post\";s:4:\"slug\";s:43:\"twentytwentyfive/template-single-photo-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:29:\"template-single-text-blog.php\";a:6:{s:5:\"title\";s:21:\"Text blog single post\";s:4:\"slug\";s:42:\"twentytwentyfive/template-single-text-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:40:\"template-single-vertical-header-blog.php\";a:6:{s:5:\"title\";s:25:\"Right-aligned single post\";s:4:\"slug\";s:53:\"twentytwentyfive/template-single-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:22:\"testimonials-2-col.php\";a:5:{s:5:\"title\";s:21:\"2 columns with avatar\";s:4:\"slug\";s:35:\"twentytwentyfive/testimonials-2-col\";s:11:\"description\";s:42:\"Two columns with testimonials and avatars.\";s:10:\"categories\";a:1:{i:0;s:12:\"testimonials\";}s:8:\"keywords\";a:1:{i:0;s:11:\"testimonial\";}}s:22:\"testimonials-6-col.php\";a:5:{s:5:\"title\";s:35:\"3 column layout with 6 testimonials\";s:4:\"slug\";s:35:\"twentytwentyfive/testimonials-6-col\";s:11:\"description\";s:86:\"A section with three columns and two rows, each containing a testimonial and citation.\";s:10:\"categories\";a:1:{i:0;s:12:\"testimonials\";}s:8:\"keywords\";a:1:{i:0;s:11:\"testimonial\";}}s:22:\"testimonials-large.php\";a:5:{s:5:\"title\";s:32:\"Review with large image on right\";s:4:\"slug\";s:35:\"twentytwentyfive/testimonials-large\";s:11:\"description\";s:46:\"A testimonial with a large image on the right.\";s:10:\"categories\";a:1:{i:0;s:12:\"testimonials\";}s:8:\"keywords\";a:1:{i:0;s:11:\"testimonial\";}}s:13:\"text-faqs.php\";a:6:{s:5:\"title\";s:4:\"FAQs\";s:4:\"slug\";s:26:\"twentytwentyfive/text-faqs\";s:11:\"description\";s:68:\"A FAQs section with a FAQ heading and list of questions and answers.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:4:\"text\";i:1;s:5:\"about\";}s:8:\"keywords\";a:5:{i:0;s:3:\"faq\";i:1;s:5:\"about\";i:2;s:10:\"frequently\";i:3;s:5:\"asked\";i:4;s:9:\"questions\";}}s:19:\"vertical-header.php\";a:6:{s:5:\"title\";s:20:\"Vertical site header\";s:4:\"slug\";s:32:\"twentytwentyfive/vertical-header\";s:11:\"description\";s:52:\"Vertical site header with site title and navigation.\";s:13:\"viewportWidth\";i:300;s:10:\"categories\";a:1:{i:0;s:6:\"header\";}s:10:\"blockTypes\";a:1:{i:0;s:34:\"core/template-part/vertical-header\";}}}}','off'),(209,'_transient_doing_cron','1755951252.8403029441833496093750','on'),(212,'_site_transient_timeout_wp_theme_files_patterns-b24c4b64a1fe6f9f73313f730ddfc1cf','1755951695','off'),(213,'_site_transient_wp_theme_files_patterns-b24c4b64a1fe6f9f73313f730ddfc1cf','a:2:{s:7:\"version\";s:3:\"1.3\";s:8:\"patterns\";a:98:{s:21:\"banner-about-book.php\";a:4:{s:5:\"title\";s:28:\"Banner with book description\";s:4:\"slug\";s:34:\"twentytwentyfive/banner-about-book\";s:11:\"description\";s:66:\"Banner with book description and accompanying image for promotion.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:28:\"banner-cover-big-heading.php\";a:4:{s:5:\"title\";s:22:\"Cover with big heading\";s:4:\"slug\";s:41:\"twentytwentyfive/banner-cover-big-heading\";s:11:\"description\";s:82:\"A full-width cover section with a large background image and an oversized heading.\";s:10:\"categories\";a:3:{i:0;s:6:\"banner\";i:1;s:5:\"about\";i:2;s:8:\"featured\";}}s:22:\"banner-intro-image.php\";a:4:{s:5:\"title\";s:49:\"Short heading and paragraph and image on the left\";s:4:\"slug\";s:35:\"twentytwentyfive/banner-intro-image\";s:11:\"description\";s:68:\"A Intro pattern with Short heading, paragraph and image on the left.\";s:10:\"categories\";a:2:{i:0;s:6:\"banner\";i:1;s:8:\"featured\";}}s:16:\"banner-intro.php\";a:4:{s:5:\"title\";s:35:\"Intro with left-aligned description\";s:4:\"slug\";s:29:\"twentytwentyfive/banner-intro\";s:11:\"description\";s:66:\"A large left-aligned heading with a brand name emphasized in bold.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:17:\"banner-poster.php\";a:4:{s:5:\"title\";s:19:\"Poster-like section\";s:4:\"slug\";s:30:\"twentytwentyfive/banner-poster\";s:11:\"description\";s:78:\"A section that can be used as a banner or a landing page to announce an event.\";s:10:\"categories\";a:2:{i:0;s:6:\"banner\";i:1;s:5:\"media\";}}s:43:\"banner-with-description-and-images-grid.php\";a:4:{s:5:\"title\";s:39:\"Banner with description and images grid\";s:4:\"slug\";s:47:\"twentytwentyfive/banner-description-images-grid\";s:11:\"description\";s:75:\"A banner with a short paragraph, and two images displayed in a grid layout.\";s:10:\"categories\";a:2:{i:0;s:6:\"banner\";i:1;s:8:\"featured\";}}s:18:\"binding-format.php\";a:4:{s:5:\"title\";s:16:\"Post format name\";s:4:\"slug\";s:31:\"twentytwentyfive/binding-format\";s:11:\"description\";s:75:\"Prints the name of the post format with the help of the Block Bindings API.\";s:10:\"categories\";a:1:{i:0;s:28:\"twentytwentyfive_post-format\";}}s:12:\"comments.php\";a:5:{s:5:\"title\";s:8:\"Comments\";s:4:\"slug\";s:25:\"twentytwentyfive/comments\";s:11:\"description\";s:63:\"Comments area with comments list, pagination, and comment form.\";s:10:\"categories\";a:1:{i:0;s:4:\"text\";}s:10:\"blockTypes\";a:1:{i:0;s:13:\"core/comments\";}}s:32:\"contact-centered-social-link.php\";a:5:{s:5:\"title\";s:30:\"Centered link and social links\";s:4:\"slug\";s:45:\"twentytwentyfive/contact-centered-social-link\";s:11:\"description\";s:73:\"Centered contact section with a prominent message and social media links.\";s:10:\"categories\";a:1:{i:0;s:7:\"contact\";}s:8:\"keywords\";a:3:{i:0;s:7:\"contact\";i:1;s:3:\"faq\";i:2;s:9:\"questions\";}}s:26:\"contact-info-locations.php\";a:6:{s:5:\"title\";s:27:\"Contact, info and locations\";s:4:\"slug\";s:39:\"twentytwentyfive/contact-info-locations\";s:11:\"description\";s:78:\"Contact section with social media links, email, and multiple location details.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:7:\"contact\";}s:8:\"keywords\";a:2:{i:0;s:7:\"contact\";i:1;s:8:\"location\";}}s:29:\"contact-location-and-link.php\";a:4:{s:5:\"title\";s:25:\"Contact location and link\";s:4:\"slug\";s:42:\"twentytwentyfive/contact-location-and-link\";s:11:\"description\";s:89:\"Contact section with a location address, a directions link, and an image of the location.\";s:10:\"categories\";a:2:{i:0;s:7:\"contact\";i:1;s:8:\"featured\";}}s:18:\"cta-book-links.php\";a:4:{s:5:\"title\";s:30:\"Call to action with book links\";s:4:\"slug\";s:31:\"twentytwentyfive/cta-book-links\";s:11:\"description\";s:74:\"A call to action section with links to get the book in different websites.\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:22:\"cta-book-locations.php\";a:4:{s:5:\"title\";s:29:\"Call to action with locations\";s:4:\"slug\";s:35:\"twentytwentyfive/cta-book-locations\";s:11:\"description\";s:82:\"A call to action section with links to get the book in the most popular locations.\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:24:\"cta-centered-heading.php\";a:4:{s:5:\"title\";s:16:\"Centered heading\";s:4:\"slug\";s:37:\"twentytwentyfive/cta-centered-heading\";s:11:\"description\";s:53:\"A hero with a centered heading, paragraph and button.\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:19:\"cta-events-list.php\";a:4:{s:5:\"title\";s:11:\"Events list\";s:4:\"slug\";s:32:\"twentytwentyfive/cta-events-list\";s:11:\"description\";s:37:\"A list of events with call to action.\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:26:\"cta-grid-products-link.php\";a:5:{s:5:\"title\";s:54:\"Call to action with grid layout with products and link\";s:4:\"slug\";s:39:\"twentytwentyfive/cta-grid-products-link\";s:11:\"description\";s:42:\"A call to action featuring product images.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:14:\"call-to-action\";i:1;s:8:\"featured\";}}s:22:\"cta-heading-search.php\";a:4:{s:5:\"title\";s:23:\"Heading and search form\";s:4:\"slug\";s:35:\"twentytwentyfive/cta-heading-search\";s:11:\"description\";s:54:\"Large heading with a search form for quick navigation.\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:18:\"cta-newsletter.php\";a:5:{s:5:\"title\";s:18:\"Newsletter sign-up\";s:4:\"slug\";s:31:\"twentytwentyfive/cta-newsletter\";s:11:\"description\";s:0:\"\";s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}s:8:\"keywords\";a:2:{i:0;s:14:\"call-to-action\";i:1;s:10:\"newsletter\";}}s:15:\"event-3-col.php\";a:5:{s:5:\"title\";s:46:\"Events, 3 columns with event images and titles\";s:4:\"slug\";s:28:\"twentytwentyfive/event-3-col\";s:11:\"description\";s:95:\"A header with title and text and three columns that show 3 events with their images and titles.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}s:8:\"keywords\";a:3:{i:0;s:6:\"events\";i:1;s:7:\"columns\";i:2;s:6:\"images\";}}s:14:\"event-rsvp.php\";a:7:{s:5:\"title\";s:10:\"Event RSVP\";s:4:\"slug\";s:27:\"twentytwentyfive/event-rsvp\";s:11:\"description\";s:64:\"RSVP for an upcoming event with a cover image and event details.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}s:8:\"keywords\";a:3:{i:0;s:14:\"call-to-action\";i:1;s:4:\"rsvp\";i:2;s:5:\"event\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}}s:18:\"event-schedule.php\";a:5:{s:5:\"title\";s:14:\"Event schedule\";s:4:\"slug\";s:31:\"twentytwentyfive/event-schedule\";s:11:\"description\";s:54:\"A section with specified dates and times for an event.\";s:10:\"categories\";a:1:{i:0;s:5:\"about\";}s:8:\"keywords\";a:4:{i:0;s:6:\"events\";i:1;s:6:\"agenda\";i:2;s:8:\"schedule\";i:3;s:8:\"lectures\";}}s:19:\"footer-centered.php\";a:5:{s:5:\"title\";s:15:\"Centered footer\";s:4:\"slug\";s:32:\"twentytwentyfive/footer-centered\";s:11:\"description\";s:44:\"Footer with centered site title and tagline.\";s:10:\"categories\";a:1:{i:0;s:6:\"footer\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/footer\";}}s:18:\"footer-columns.php\";a:5:{s:5:\"title\";s:19:\"Footer with columns\";s:4:\"slug\";s:31:\"twentytwentyfive/footer-columns\";s:11:\"description\";s:45:\"Footer columns with title, tagline and links.\";s:10:\"categories\";a:1:{i:0;s:6:\"footer\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/footer\";}}s:21:\"footer-newsletter.php\";a:5:{s:5:\"title\";s:29:\"Footer with newsletter signup\";s:4:\"slug\";s:34:\"twentytwentyfive/footer-newsletter\";s:11:\"description\";s:51:\"Footer with large site title and newsletter signup.\";s:10:\"categories\";a:1:{i:0;s:6:\"footer\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/footer\";}}s:17:\"footer-social.php\";a:5:{s:5:\"title\";s:33:\"Centered footer with social links\";s:4:\"slug\";s:30:\"twentytwentyfive/footer-social\";s:11:\"description\";s:49:\"Footer with centered site title and social links.\";s:10:\"categories\";a:1:{i:0;s:6:\"footer\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/footer\";}}s:10:\"footer.php\";a:5:{s:5:\"title\";s:6:\"Footer\";s:4:\"slug\";s:23:\"twentytwentyfive/footer\";s:11:\"description\";s:51:\"Footer columns with logo, title, tagline and links.\";s:10:\"categories\";a:1:{i:0;s:6:\"footer\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/footer\";}}s:16:\"format-audio.php\";a:4:{s:5:\"title\";s:12:\"Audio format\";s:4:\"slug\";s:29:\"twentytwentyfive/format-audio\";s:11:\"description\";s:73:\"An audio post format with an image, title, audio player, and description.\";s:10:\"categories\";a:1:{i:0;s:28:\"twentytwentyfive_post-format\";}}s:15:\"format-link.php\";a:4:{s:5:\"title\";s:11:\"Link format\";s:4:\"slug\";s:28:\"twentytwentyfive/format-link\";s:11:\"description\";s:77:\"A link post format with a description and an emphasized link for key content.\";s:10:\"categories\";a:1:{i:0;s:28:\"twentytwentyfive_post-format\";}}s:15:\"grid-videos.php\";a:4:{s:5:\"title\";s:16:\"Grid with videos\";s:4:\"slug\";s:28:\"twentytwentyfive/grid-videos\";s:11:\"description\";s:19:\"A grid with videos.\";s:10:\"categories\";a:1:{i:0;s:5:\"about\";}}s:24:\"grid-with-categories.php\";a:5:{s:5:\"title\";s:20:\"Grid with categories\";s:4:\"slug\";s:37:\"twentytwentyfive/grid-with-categories\";s:11:\"description\";s:41:\"A grid section with different categories.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:19:\"header-centered.php\";a:5:{s:5:\"title\";s:20:\"Centered site header\";s:4:\"slug\";s:32:\"twentytwentyfive/header-centered\";s:11:\"description\";s:52:\"Site header with centered site title and navigation.\";s:10:\"categories\";a:1:{i:0;s:6:\"header\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/header\";}}s:18:\"header-columns.php\";a:5:{s:5:\"title\";s:19:\"Header with columns\";s:4:\"slug\";s:31:\"twentytwentyfive/header-columns\";s:11:\"description\";s:54:\"Site header with site title and navigation in columns.\";s:10:\"categories\";a:1:{i:0;s:6:\"header\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/header\";}}s:22:\"header-large-title.php\";a:5:{s:5:\"title\";s:23:\"Header with large title\";s:4:\"slug\";s:35:\"twentytwentyfive/header-large-title\";s:11:\"description\";s:63:\"Site header with large site title and right-aligned navigation.\";s:10:\"categories\";a:1:{i:0;s:6:\"header\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/header\";}}s:10:\"header.php\";a:5:{s:5:\"title\";s:6:\"Header\";s:4:\"slug\";s:23:\"twentytwentyfive/header\";s:11:\"description\";s:43:\"Site header with site title and navigation.\";s:10:\"categories\";a:1:{i:0;s:6:\"header\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/template-part/header\";}}s:36:\"heading-and-paragraph-with-image.php\";a:4:{s:5:\"title\";s:45:\"Heading and paragraph with image on the right\";s:4:\"slug\";s:49:\"twentytwentyfive/heading-and-paragraph-with-image\";s:11:\"description\";s:89:\"A two-column section with a heading and paragraph on the left, and an image on the right.\";s:10:\"categories\";a:1:{i:0;s:5:\"about\";}}s:13:\"hero-book.php\";a:5:{s:5:\"title\";s:9:\"Hero book\";s:4:\"slug\";s:26:\"twentytwentyfive/hero-book\";s:11:\"description\";s:66:\"A hero section for the book with a description and pre-order link.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}s:8:\"keywords\";a:3:{i:0;s:7:\"podcast\";i:1;s:4:\"hero\";i:2;s:7:\"stories\";}}s:25:\"hero-full-width-image.php\";a:4:{s:5:\"title\";s:22:\"Hero, full width image\";s:4:\"slug\";s:38:\"twentytwentyfive/hero-full-width-image\";s:11:\"description\";s:68:\"A hero with a full width image, heading, short paragraph and button.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:41:\"hero-overlapped-book-cover-with-links.php\";a:4:{s:5:\"title\";s:38:\"Hero, overlapped book cover with links\";s:4:\"slug\";s:54:\"twentytwentyfive/hero-overlapped-book-cover-with-links\";s:11:\"description\";s:47:\"A hero with an overlapped book cover and links.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:16:\"hero-podcast.php\";a:5:{s:5:\"title\";s:12:\"Hero podcast\";s:4:\"slug\";s:29:\"twentytwentyfive/hero-podcast\";s:11:\"description\";s:0:\"\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}s:8:\"keywords\";a:3:{i:0;s:7:\"podcast\";i:1;s:4:\"hero\";i:2;s:7:\"stories\";}}s:14:\"hidden-404.php\";a:4:{s:5:\"title\";s:3:\"404\";s:4:\"slug\";s:27:\"twentytwentyfive/hidden-404\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:23:\"hidden-blog-heading.php\";a:4:{s:5:\"title\";s:19:\"Hidden blog heading\";s:4:\"slug\";s:36:\"twentytwentyfive/hidden-blog-heading\";s:11:\"description\";s:52:\"Hidden heading for the home page and index template.\";s:8:\"inserter\";b:0;}s:17:\"hidden-search.php\";a:4:{s:5:\"title\";s:6:\"Search\";s:4:\"slug\";s:30:\"twentytwentyfive/hidden-search\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:18:\"hidden-sidebar.php\";a:4:{s:5:\"title\";s:7:\"Sidebar\";s:4:\"slug\";s:31:\"twentytwentyfive/hidden-sidebar\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:21:\"hidden-written-by.php\";a:4:{s:5:\"title\";s:10:\"Written by\";s:4:\"slug\";s:34:\"twentytwentyfive/hidden-written-by\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:9:\"logos.php\";a:4:{s:5:\"title\";s:5:\"Logos\";s:4:\"slug\";s:22:\"twentytwentyfive/logos\";s:11:\"description\";s:77:\"Showcasing the podcast\'s clients with a heading and a series of client logos.\";s:10:\"categories\";a:1:{i:0;s:6:\"banner\";}}s:24:\"media-instagram-grid.php\";a:5:{s:5:\"title\";s:14:\"Instagram grid\";s:4:\"slug\";s:37:\"twentytwentyfive/media-instagram-grid\";s:11:\"description\";s:62:\"A grid section with photos and a link to an Instagram profile.\";s:13:\"viewportWidth\";i:1440;s:10:\"categories\";a:3:{i:0;s:5:\"media\";i:1;s:7:\"gallery\";i:2;s:8:\"featured\";}}s:14:\"more-posts.php\";a:5:{s:5:\"title\";s:10:\"More posts\";s:4:\"slug\";s:27:\"twentytwentyfive/more-posts\";s:11:\"description\";s:45:\"Displays a list of posts with title and date.\";s:10:\"categories\";a:1:{i:0;s:5:\"query\";}s:10:\"blockTypes\";a:1:{i:0;s:10:\"core/query\";}}s:21:\"overlapped-images.php\";a:4:{s:5:\"title\";s:41:\"Overlapping images and paragraph on right\";s:4:\"slug\";s:34:\"twentytwentyfive/overlapped-images\";s:11:\"description\";s:53:\"A section with overlapping images, and a description.\";s:10:\"categories\";a:2:{i:0;s:5:\"about\";i:1;s:8:\"featured\";}}s:22:\"page-business-home.php\";a:8:{s:5:\"title\";s:17:\"Business homepage\";s:4:\"slug\";s:35:\"twentytwentyfive/page-business-home\";s:11:\"description\";s:28:\"A business homepage pattern.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:20:\"page-coming-soon.php\";a:8:{s:5:\"title\";s:11:\"Coming soon\";s:4:\"slug\";s:33:\"twentytwentyfive/page-coming-soon\";s:11:\"description\";s:96:\"A full-width cover banner that can be applied to a page or it can work as a single landing page.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:15:\"page-cv-bio.php\";a:7:{s:5:\"title\";s:6:\"CV/bio\";s:4:\"slug\";s:28:\"twentytwentyfive/page-cv-bio\";s:11:\"description\";s:36:\"A pattern for a CV/Bio landing page.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:3:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:5:\"about\";i:2;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}}s:21:\"page-landing-book.php\";a:8:{s:5:\"title\";s:21:\"Landing page for book\";s:4:\"slug\";s:34:\"twentytwentyfive/page-landing-book\";s:11:\"description\";s:104:\"A landing page for the book with a hero section, pre-order links, locations, FAQs and newsletter signup.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:22:\"page-landing-event.php\";a:8:{s:5:\"title\";s:22:\"Landing page for event\";s:4:\"slug\";s:35:\"twentytwentyfive/page-landing-event\";s:11:\"description\";s:87:\"A landing page for the event with a hero section, description, FAQs and call to action.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:24:\"page-landing-podcast.php\";a:8:{s:5:\"title\";s:24:\"Landing page for podcast\";s:4:\"slug\";s:37:\"twentytwentyfive/page-landing-podcast\";s:11:\"description\";s:111:\"A landing page for the podcast with a hero section, description, logos, grid with videos and newsletter signup.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:50:\"page-link-in-bio-heading-paragraph-links-image.php\";a:7:{s:5:\"title\";s:59:\"Link in bio heading, paragraph, links and full-height image\";s:4:\"slug\";s:63:\"twentytwentyfive/page-link-in-bio-heading-paragraph-links-image\";s:11:\"description\";s:84:\"A link in bio landing page with a heading, paragraph, links and a full height image.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:3:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:6:\"banner\";i:2;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}}s:33:\"page-link-in-bio-wide-margins.php\";a:7:{s:5:\"title\";s:48:\"Link in bio with profile, links and wide margins\";s:4:\"slug\";s:46:\"twentytwentyfive/page-link-in-bio-wide-margins\";s:11:\"description\";s:86:\"A link in bio landing page with social links, a profile photo and a brief description.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:3:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:6:\"banner\";i:2;s:8:\"featured\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}}s:39:\"page-link-in-bio-with-tight-margins.php\";a:8:{s:5:\"title\";s:30:\"Link in bio with tight margins\";s:4:\"slug\";s:52:\"twentytwentyfive/page-link-in-bio-with-tight-margins\";s:11:\"description\";s:90:\"A full-width, full-height link in bio section with an image, a paragraph and social links.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:6:\"banner\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:23:\"page-portfolio-home.php\";a:8:{s:5:\"title\";s:18:\"Portfolio homepage\";s:4:\"slug\";s:36:\"twentytwentyfive/page-portfolio-home\";s:11:\"description\";s:29:\"A portfolio homepage pattern.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:21:\"twentytwentyfive_page\";i:1;s:5:\"posts\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:18:\"page-shop-home.php\";a:8:{s:5:\"title\";s:13:\"Shop homepage\";s:4:\"slug\";s:31:\"twentytwentyfive/page-shop-home\";s:11:\"description\";s:24:\"A shop homepage pattern.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:21:\"twentytwentyfive_page\";}s:8:\"keywords\";a:1:{i:0;s:7:\"starter\";}s:10:\"blockTypes\";a:1:{i:0;s:17:\"core/post-content\";}s:9:\"postTypes\";a:2:{i:0;s:4:\"page\";i:1;s:11:\"wp_template\";}}s:19:\"post-navigation.php\";a:5:{s:5:\"title\";s:15:\"Post navigation\";s:4:\"slug\";s:32:\"twentytwentyfive/post-navigation\";s:11:\"description\";s:29:\"Next and previous post links.\";s:10:\"categories\";a:1:{i:0;s:4:\"text\";}s:10:\"blockTypes\";a:1:{i:0;s:25:\"core/post-navigation-link\";}}s:17:\"pricing-2-col.php\";a:5:{s:5:\"title\";s:18:\"Pricing, 2 columns\";s:4:\"slug\";s:30:\"twentytwentyfive/pricing-2-col\";s:11:\"description\";s:88:\"Pricing section with two columns, pricing plan, description, and call-to-action buttons.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:14:\"call-to-action\";}}s:17:\"pricing-3-col.php\";a:4:{s:5:\"title\";s:18:\"Pricing, 3 columns\";s:4:\"slug\";s:30:\"twentytwentyfive/pricing-3-col\";s:11:\"description\";s:100:\"A three-column boxed pricing table designed to showcase services, descriptions, and pricing options.\";s:10:\"categories\";a:3:{i:0;s:14:\"call-to-action\";i:1;s:6:\"banner\";i:2;s:8:\"services\";}}s:18:\"services-3-col.php\";a:4:{s:5:\"title\";s:19:\"Services, 3 columns\";s:4:\"slug\";s:31:\"twentytwentyfive/services-3-col\";s:11:\"description\";s:56:\"Three columns with images and text to showcase services.\";s:10:\"categories\";a:3:{i:0;s:14:\"call-to-action\";i:1;s:6:\"banner\";i:2;s:8:\"services\";}}s:36:\"services-subscriber-only-section.php\";a:4:{s:5:\"title\";s:33:\"Services, subscriber only section\";s:4:\"slug\";s:49:\"twentytwentyfive/services-subscriber-only-section\";s:11:\"description\";s:72:\"A subscriber-only section highlighting exclusive services and offerings.\";s:10:\"categories\";a:2:{i:0;s:14:\"call-to-action\";i:1;s:8:\"services\";}}s:24:\"services-team-photos.php\";a:4:{s:5:\"title\";s:21:\"Services, team photos\";s:4:\"slug\";s:37:\"twentytwentyfive/services-team-photos\";s:11:\"description\";s:59:\"Display team photos in a services section with grid layout.\";s:10:\"categories\";a:3:{i:0;s:6:\"banner\";i:1;s:14:\"call-to-action\";i:2;s:8:\"featured\";}}s:37:\"template-404-vertical-header-blog.php\";a:5:{s:5:\"title\";s:17:\"Right-aligned 404\";s:4:\"slug\";s:50:\"twentytwentyfive/template-404-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:13:\"templateTypes\";a:1:{i:0;s:3:\"404\";}}s:30:\"template-archive-news-blog.php\";a:6:{s:5:\"title\";s:17:\"News blog archive\";s:4:\"slug\";s:43:\"twentytwentyfive/template-archive-news-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:7:\"archive\";}}s:31:\"template-archive-photo-blog.php\";a:6:{s:5:\"title\";s:18:\"Photo blog archive\";s:4:\"slug\";s:44:\"twentytwentyfive/template-archive-photo-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:7:\"archive\";}}s:30:\"template-archive-text-blog.php\";a:6:{s:5:\"title\";s:17:\"Text blog archive\";s:4:\"slug\";s:43:\"twentytwentyfive/template-archive-text-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:7:\"archive\";}}s:41:\"template-archive-vertical-header-blog.php\";a:6:{s:5:\"title\";s:21:\"Right-aligned archive\";s:4:\"slug\";s:54:\"twentytwentyfive/template-archive-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:7:\"archive\";}}s:27:\"template-home-news-blog.php\";a:6:{s:5:\"title\";s:14:\"News blog home\";s:4:\"slug\";s:40:\"twentytwentyfive/template-home-news-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:3:{i:0;s:10:\"front-page\";i:1;s:5:\"index\";i:2;s:4:\"home\";}}s:28:\"template-home-photo-blog.php\";a:6:{s:5:\"title\";s:15:\"Photo blog home\";s:4:\"slug\";s:41:\"twentytwentyfive/template-home-photo-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:3:{i:0;s:10:\"front-page\";i:1;s:5:\"index\";i:2;s:4:\"home\";}}s:38:\"template-home-posts-grid-news-blog.php\";a:5:{s:5:\"title\";s:34:\"News blog with featured posts grid\";s:4:\"slug\";s:51:\"twentytwentyfive/template-home-posts-grid-news-blog\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:3:{i:0;s:10:\"front-page\";i:1;s:5:\"index\";i:2;s:4:\"home\";}}s:27:\"template-home-text-blog.php\";a:6:{s:5:\"title\";s:14:\"Text blog home\";s:4:\"slug\";s:40:\"twentytwentyfive/template-home-text-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:10:\"front-page\";i:1;s:4:\"home\";}}s:38:\"template-home-vertical-header-blog.php\";a:6:{s:5:\"title\";s:18:\"Right-aligned home\";s:4:\"slug\";s:51:\"twentytwentyfive/template-home-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:3:{i:0;s:10:\"front-page\";i:1;s:5:\"index\";i:2;s:4:\"home\";}}s:40:\"template-home-with-sidebar-news-blog.php\";a:6:{s:5:\"title\";s:22:\"News blog with sidebar\";s:4:\"slug\";s:53:\"twentytwentyfive/template-home-with-sidebar-news-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:3:{i:0;s:10:\"front-page\";i:1;s:5:\"index\";i:2;s:4:\"home\";}}s:28:\"template-page-photo-blog.php\";a:5:{s:5:\"title\";s:15:\"Photo blog page\";s:4:\"slug\";s:41:\"twentytwentyfive/template-page-photo-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:13:\"templateTypes\";a:1:{i:0;s:4:\"page\";}}s:38:\"template-page-vertical-header-blog.php\";a:5:{s:5:\"title\";s:18:\"Right-aligned page\";s:4:\"slug\";s:51:\"twentytwentyfive/template-page-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:13:\"templateTypes\";a:1:{i:0;s:4:\"page\";}}s:33:\"template-query-loop-news-blog.php\";a:4:{s:5:\"title\";s:20:\"News blog query loop\";s:4:\"slug\";s:46:\"twentytwentyfive/template-query-loop-news-blog\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:34:\"template-query-loop-photo-blog.php\";a:6:{s:5:\"title\";s:16:\"Photo blog posts\";s:4:\"slug\";s:47:\"twentytwentyfive/template-query-loop-photo-blog\";s:11:\"description\";s:54:\"A list of posts, 3 columns, with only featured images.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:1:{i:0;s:5:\"query\";}s:10:\"blockTypes\";a:1:{i:0;s:10:\"core/query\";}}s:33:\"template-query-loop-text-blog.php\";a:4:{s:5:\"title\";s:20:\"Text blog query loop\";s:4:\"slug\";s:46:\"twentytwentyfive/template-query-loop-text-blog\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:44:\"template-query-loop-vertical-header-blog.php\";a:4:{s:5:\"title\";s:24:\"Right-aligned query loop\";s:4:\"slug\";s:57:\"twentytwentyfive/template-query-loop-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:8:\"inserter\";b:0;}s:23:\"template-query-loop.php\";a:5:{s:5:\"title\";s:23:\"List of posts, 1 column\";s:4:\"slug\";s:36:\"twentytwentyfive/template-query-loop\";s:11:\"description\";s:61:\"A list of posts, 1 column, with featured image and post date.\";s:10:\"categories\";a:1:{i:0;s:5:\"query\";}s:10:\"blockTypes\";a:1:{i:0;s:10:\"core/query\";}}s:29:\"template-search-news-blog.php\";a:6:{s:5:\"title\";s:24:\"News blog search results\";s:4:\"slug\";s:42:\"twentytwentyfive/template-search-news-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:6:\"search\";}}s:30:\"template-search-photo-blog.php\";a:6:{s:5:\"title\";s:25:\"Photo blog search results\";s:4:\"slug\";s:43:\"twentytwentyfive/template-search-photo-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:6:\"search\";}}s:29:\"template-search-text-blog.php\";a:6:{s:5:\"title\";s:24:\"Text blog search results\";s:4:\"slug\";s:42:\"twentytwentyfive/template-search-text-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:6:\"search\";}}s:40:\"template-search-vertical-header-blog.php\";a:6:{s:5:\"title\";s:26:\"Right-aligned blog, search\";s:4:\"slug\";s:53:\"twentytwentyfive/template-search-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:1:{i:0;s:6:\"search\";}}s:40:\"template-single-left-aligned-content.php\";a:6:{s:5:\"title\";s:30:\"Post with left-aligned content\";s:4:\"slug\";s:47:\"twentytwentyfive/post-with-left-aligned-content\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:29:\"template-single-news-blog.php\";a:6:{s:5:\"title\";s:34:\"News blog single post with sidebar\";s:4:\"slug\";s:42:\"twentytwentyfive/template-single-news-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:26:\"template-single-offset.php\";a:6:{s:5:\"title\";s:34:\"Offset post without featured image\";s:4:\"slug\";s:39:\"twentytwentyfive/template-single-offset\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:30:\"template-single-photo-blog.php\";a:6:{s:5:\"title\";s:22:\"Photo blog single post\";s:4:\"slug\";s:43:\"twentytwentyfive/template-single-photo-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:29:\"template-single-text-blog.php\";a:6:{s:5:\"title\";s:21:\"Text blog single post\";s:4:\"slug\";s:42:\"twentytwentyfive/template-single-text-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:40:\"template-single-vertical-header-blog.php\";a:6:{s:5:\"title\";s:25:\"Right-aligned single post\";s:4:\"slug\";s:53:\"twentytwentyfive/template-single-vertical-header-blog\";s:11:\"description\";s:0:\"\";s:13:\"viewportWidth\";i:1400;s:8:\"inserter\";b:0;s:13:\"templateTypes\";a:2:{i:0;s:5:\"posts\";i:1;s:6:\"single\";}}s:22:\"testimonials-2-col.php\";a:5:{s:5:\"title\";s:21:\"2 columns with avatar\";s:4:\"slug\";s:35:\"twentytwentyfive/testimonials-2-col\";s:11:\"description\";s:42:\"Two columns with testimonials and avatars.\";s:10:\"categories\";a:1:{i:0;s:12:\"testimonials\";}s:8:\"keywords\";a:1:{i:0;s:11:\"testimonial\";}}s:22:\"testimonials-6-col.php\";a:5:{s:5:\"title\";s:35:\"3 column layout with 6 testimonials\";s:4:\"slug\";s:35:\"twentytwentyfive/testimonials-6-col\";s:11:\"description\";s:86:\"A section with three columns and two rows, each containing a testimonial and citation.\";s:10:\"categories\";a:1:{i:0;s:12:\"testimonials\";}s:8:\"keywords\";a:1:{i:0;s:11:\"testimonial\";}}s:22:\"testimonials-large.php\";a:5:{s:5:\"title\";s:32:\"Review with large image on right\";s:4:\"slug\";s:35:\"twentytwentyfive/testimonials-large\";s:11:\"description\";s:46:\"A testimonial with a large image on the right.\";s:10:\"categories\";a:1:{i:0;s:12:\"testimonials\";}s:8:\"keywords\";a:1:{i:0;s:11:\"testimonial\";}}s:13:\"text-faqs.php\";a:6:{s:5:\"title\";s:4:\"FAQs\";s:4:\"slug\";s:26:\"twentytwentyfive/text-faqs\";s:11:\"description\";s:68:\"A FAQs section with a FAQ heading and list of questions and answers.\";s:13:\"viewportWidth\";i:1400;s:10:\"categories\";a:2:{i:0;s:4:\"text\";i:1;s:5:\"about\";}s:8:\"keywords\";a:5:{i:0;s:3:\"faq\";i:1;s:5:\"about\";i:2;s:10:\"frequently\";i:3;s:5:\"asked\";i:4;s:9:\"questions\";}}s:19:\"vertical-header.php\";a:6:{s:5:\"title\";s:20:\"Vertical site header\";s:4:\"slug\";s:32:\"twentytwentyfive/vertical-header\";s:11:\"description\";s:52:\"Vertical site header with site title and navigation.\";s:13:\"viewportWidth\";i:300;s:10:\"categories\";a:1:{i:0;s:6:\"header\";}s:10:\"blockTypes\";a:1:{i:0;s:34:\"core/template-part/vertical-header\";}}}}','off');

--
-- Table structure for table `wp_postmeta`
--

CREATE TABLE `wp_postmeta` (
  `meta_id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `post_id` bigint unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
  `meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
  PRIMARY KEY (`meta_id`),
  KEY `post_id` (`post_id`),
  KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

--
-- Dumping data for table `wp_postmeta`
--

INSERT INTO `wp_postmeta` VALUES (1,2,'_wp_page_template','default'),(2,3,'_wp_page_template','default');

--
-- Table structure for table `wp_term_relationships`
--

CREATE TABLE `wp_term_relationships` (
  `object_id` bigint unsigned NOT NULL DEFAULT '0',
  `term_taxonomy_id` bigint unsigned NOT NULL DEFAULT '0',
  `term_order` int NOT NULL DEFAULT '0',
  PRIMARY KEY (`object_id`,`term_taxonomy_id`),
  KEY `term_taxonomy_id` (`term_taxonomy_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

--
-- Dumping data for table `wp_term_relationships`
--

INSERT INTO `wp_term_relationships` VALUES (1,1,0);

--
-- Table structure for table `wp_term_taxonomy`
--

CREATE TABLE `wp_term_taxonomy` (
  `term_taxonomy_id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `term_id` bigint unsigned NOT NULL DEFAULT '0',
  `taxonomy` varchar(32) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `description` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `parent` bigint unsigned NOT NULL DEFAULT '0',
  `count` bigint NOT NULL DEFAULT '0',
  PRIMARY KEY (`term_taxonomy_id`),
  UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`),
  KEY `taxonomy` (`taxonomy`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

--
-- Dumping data for table `wp_term_taxonomy`
--

INSERT INTO `wp_term_taxonomy` VALUES (1,1,'category','',0,1);

--
-- Table structure for table `wp_termmeta`
--

CREATE TABLE `wp_termmeta` (
  `meta_id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `term_id` bigint unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
  `meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
  PRIMARY KEY (`meta_id`),
  KEY `term_id` (`term_id`),
  KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

--
-- Dumping data for table `wp_termmeta`
--


--
-- Table structure for table `wp_terms`
--

CREATE TABLE `wp_terms` (
  `term_id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `slug` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '',
  `term_group` bigint NOT NULL DEFAULT '0',
  PRIMARY KEY (`term_id`),
  KEY `slug` (`slug`(191)),
  KEY `name` (`name`(191))
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

--
-- Dumping data for table `wp_terms`
--

INSERT INTO `wp_terms` VALUES (1,'Uncategorized','uncategorized',0);

--
-- Table structure for table `wp_usermeta`
--

CREATE TABLE `wp_usermeta` (
  `umeta_id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint unsigned NOT NULL DEFAULT '0',
  `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
  `meta_value` longtext COLLATE utf8mb4_unicode_520_ci,
  PRIMARY KEY (`umeta_id`),
  KEY `user_id` (`user_id`),
  KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

--
-- Dumping data for table `wp_usermeta`
--

INSERT INTO `wp_usermeta` VALUES (1,1,'nickname','wordpress_userguide'),(2,1,'first_name',''),(3,1,'last_name',''),(4,1,'description',''),(5,1,'rich_editing','true'),(6,1,'syntax_highlighting','true'),(7,1,'comment_shortcuts','false'),(8,1,'admin_color','fresh'),(9,1,'use_ssl','0'),(10,1,'show_admin_bar_front','true'),(11,1,'locale',''),(12,1,'wp_capabilities','a:1:{s:13:\"administrator\";b:1;}'),(13,1,'wp_user_level','10'),(14,1,'dismissed_wp_pointers',''),(15,1,'show_welcome_panel','1'),(16,1,'session_tokens','a:1:{s:64:\"8b24c91f1943c98dfafe1fbf944a2bf74895fcedb49a5fca2d6266be82f12cae\";a:4:{s:10:\"expiration\";i:1755796202;s:2:\"ip\";s:14:\"106.200.14.214\";s:2:\"ua\";s:125:\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0\";s:5:\"login\";i:1755623402;}}'),(17,1,'wp_dashboard_quick_press_last_post_id','5'),(18,1,'community-events-location','a:1:{s:2:\"ip\";s:12:\"106.200.14.0\";}');


