WordPress 6.9 Walkthrough with Nick Diego and Ryan Welcher ๐Ÿ”— **Source:** [WordPress 6.9 Walkthrough with Nick Diego and Ryan Welcher](https://www.youtube.com/watch?v=gVaEg_m6uak) > [!note]+ Document Notes > tags: [wordpress, 6-9-release, block-editor, developer-features] > author: WordPress > source: YouTube > reference: https://www.youtube.com/watch?v=gVaEg_m6uak > date created: 2024-12-10 15:45 > > # ๐Ÿท๏ธ Title: WordPress 6.9 Walkthrough with Nick Diego and Ryan Welcher > <!-- deep-read:sections start --> ## ๐Ÿงฐ Action Inbox - [H1] Test WordPress 6.9 RC3 on staging sites โ€” pre-release testing #testing - [H2] Read WordPress 6.9 field guide on make.wordpress.org โ€” detailed documentation #documentation - [H3] Explore block bindings for custom development โ€” developer workflow #development ## ๐Ÿงญ Table of Contents - [๐Ÿ“ Summary](#-summary) - [๐Ÿ“– Main Content](#-main-content) - [๐Ÿ—’๏ธ Notes](#๏ธ-notes) - [๐Ÿ“š References](#-references) - [๐Ÿ—ฃ๏ธ Paraphrase](#๏ธ-paraphrase) - [๐Ÿ“ฐ Newsletter](#-newsletter) - [โœ… Action Items](#-action-items) - [๐Ÿงช Hypotheses](#-hypotheses) - [๐Ÿ“Š Methodology](#-methodology) - [โ“ Questions](#-questions) - [๐Ÿ”ฎ Future Research](#-future-research) - [๐Ÿ’ก Implications](#-implications) - [๐Ÿง  Learning Styles Assessment](#-learning-styles-assessment) - [๐Ÿ“Š Accessibility Assessment](#-accessibility-assessment) - [๐ŸŒ DEIB Assessment](#-deib-assessment) - [โœ… Logical Validity](#-logical-validity) - [๐Ÿ›ก๏ธ DARVO Analysis](#-darvo-analysis) - [๐ŸŽฏ Conclusion](#-conclusion) ### ๐Ÿ”— References - [WordPress 6.9 Field Guide](https://make.wordpress.org/core) - [WordPress Developer Blog](https://developer.wordpress.org/news/) ## ๐Ÿ“ Summary - WordPress 6.9 introduces collaborative notes, enhanced block bindings, accordion blocks, and stretchy text - Release candidate 3 available for testing, with final release December 2nd coinciding with State of the Word - Major developer improvements include expanded block bindings API, command palette in admin, and abilities API foundation - Nick Diego (user features) and Ryan Welcher (developer features) demonstrate new functionality - Quality of life improvements for galleries, drag-and-drop, and content visibility management ## ๐Ÿ“– Main Content WordPress 6.9 represents a significant milestone with both user-facing improvements and foundational developer enhancements. The release introduces collaborative editing features like block notes, allowing team members to comment directly on content blocks similar to Google Docs. New blocks include accordions and time-to-read calculations, while quality improvements enhance gallery management and drag-and-drop interactions. For developers, the most impactful change is the expanded block bindings API, which now allows any block to bind attributes to data sources, not just the original four supported blocks. This dramatically reduces the need for custom block development. The command palette extends to all admin pages, and the new abilities API lays groundwork for AI integration in WordPress core. Technical improvements include better interactivity API support with unique identifiers for directives and router regions with attachment capabilities. Math notation support using LaTeX formatting addresses academic and scientific content needs. ## ๐Ÿ—’๏ธ Notes #### โฑ๏ธ [00:00](https://www.youtube.com/watch?v=gVaEg_m6uak?t=0) โ€” [H1] WordPress 6.9 Live Stream Introduction - Key idea: Release candidate 3 available, final release December 2nd with State of the Word - Evidence: "We actually just released release candidate 3 for WordPress 6.9 that went out... next week we will be releasing WordPress 6.9 on December 2nd" #### โฑ๏ธ [02:30](https://www.youtube.com/watch?v=gVaEg_m6uak?t=150) โ€” [H2] Block Notes Feature Demonstration - Key idea: Collaborative commenting system allows team feedback directly on blocks - Evidence: "Think of Google Docs. You can add comments on blocks that other people on your website, other users in your website can see" #### โฑ๏ธ [05:45](https://www.youtube.com/watch?v=gVaEg_m6uak?t=345) โ€” [H2] Gallery Aspect Ratio Improvements - Key idea: Gallery blocks now support direct aspect ratio changes without removing images - Evidence: "Before we look at this gallery... The only way to do that right now would be to pull the images... That's been changed and fixed in WordPress 6.9" #### โฑ๏ธ [07:20](https://www.youtube.com/watch?v=gVaEg_m6uak?t=440) โ€” [H2] Enhanced Drag and Drop Interface - Key idea: Visual feedback improvements make block manipulation more intuitive - Evidence: "Now if we're in this gallery and we drag, you can see that I'm actually dragging the image... It makes it just a lot easier to move blocks around the canvas" #### โฑ๏ธ [09:15](https://www.youtube.com/watch?v=gVaEg_m6uak?t=555) โ€” [H2] Block Visibility Controls - Key idea: Hide/show functionality enables content staging on live pages - Evidence: "You now have the ability to hide this content. You can think of it like staging content... I can just hide this gallery. I can click save" #### โฑ๏ธ [14:30](https://www.youtube.com/watch?v=gVaEg_m6uak?t=870) โ€” [H2] Accordion Block Introduction - Key idea: Native accordion functionality with customizable styling options - Evidence: "We have an accordion block... you'll have an accordion parent and then you'll have an accordion item for each item inside" #### โฑ๏ธ [16:45](https://www.youtube.com/watch?v=gVaEg_m6uak?t=1005) โ€” [H2] Time to Read Block - Key idea: Automatic reading time calculation based on word count - Evidence: "This is a little block that you can add within query loops or on post pages and it will calculate the time to read based on the word count" #### โฑ๏ธ [18:00](https://www.youtube.com/watch?v=gVaEg_m6uak?t=1080) โ€” [H2] Stretchy Text Feature - Key idea: Text automatically scales to container width for responsive design - Evidence: "This heading is going to expand to the container of this cover block... On mobile, it gets smaller and on desktop, it gets nice and big" #### โฑ๏ธ [20:30](https://www.youtube.com/watch?v=gVaEg_m6uak?t=1230) โ€” [H2] Math Block with LaTeX Support - Key idea: Mathematical equation rendering using LaTeX notation - Evidence: "We have a math block... it's going to use this may seem foreign to many, but those who are familiar with LaTeX notation should be familiar with this" #### โฑ๏ธ [26:45](https://www.youtube.com/watch?v=gVaEg_m6uak?t=1605) โ€” [H1] Block Bindings API Expansion - Key idea: Any block can now bind attributes to data sources, not just original four blocks - Evidence: "What's coming in 6.9 is now we have the ability to basically filter the supported attributes for any blocks and all blocks which is really really powerful" #### โฑ๏ธ [30:15](https://www.youtube.com/watch?v=gVaEg_m6uak?t=1815) โ€” [H3] Custom Block Binding Sources - Key idea: New getFieldsList function enables UI integration for custom binding sources - Evidence: "There is a new function called get fields list. And what this is going to do is enable the UI to be able to talk to this custom binding source" #### โฑ๏ธ [34:00](https://www.youtube.com/watch?v=gVaEg_m6uak?t=2040) โ€” [H3] Command Palette in Admin - Key idea: Command palette functionality extends to all WordPress admin pages - Evidence: "What's coming in 6.9 is now in the regular admin, we never had it before. So now we do" #### โฑ๏ธ [37:30](https://www.youtube.com/watch?v=gVaEg_m6uak?t=2250) โ€” [H3] Interactivity API Improvements - Key idea: Unique identifiers for directives improve HTML validity - Evidence: "There is a new piece to the directive... It is the unique identifier... separated by three dashes followed by a unique ID" #### โฑ๏ธ [42:15](https://www.youtube.com/watch?v=gVaEg_m6uak?t=2535) โ€” [H3] Abilities API Foundation - Key idea: Framework for AI integration and extending WordPress capabilities - Evidence: "The abilities API is the first step to AI enabling WordPress core... you can think of it as a way of adding new features to WordPress that it doesn't have" ## ๐Ÿ“š References - [WordPress 6.9 Field Guide](https://make.wordpress.org/core) - [WordPress Developer Documentation](https://developer.wordpress.org/) - [Block Binding API Documentation](https://developer.wordpress.org/block-editor/) ## ๐Ÿ—ฃ๏ธ Paraphrase - WordPress 6.9 introduces collaborative editing through block-level comments, allowing teams to provide feedback directly on content without external tools - Block bindings now work with any block type instead of just four specific blocks, dramatically expanding customization possibilities without custom development - Quality of life improvements include better gallery management, improved drag-and-drop visuals, content hiding for staging, and new blocks for accordions and reading time ## ๐Ÿ“ฐ Newsletter WordPress 6.9 launches December 2nd with game-changing collaboration features! The new block notes system lets teams comment directly on content blocks, while expanded block bindings reduce custom development needs. New accordion and time-to-read blocks join quality improvements for galleries and drag-and-drop interactions. Developers gain powerful tools with the enhanced block bindings API, admin command palette, and foundations for AI integration through the abilities API. The interactivity API receives refinements for better HTML standards compliance. Test the release candidate now and prepare for the most collaborative WordPress release yet! Resources: [Learn WordPress](https://learn.wordpress.org/), [Developer Docs](https://developer.wordpress.org/), [WP-CLI](https://wp-cli.org/) ## โœ… Action Items #### WordPress - Core: Test WordPress 6.9 RC3 for compatibility and performance issues - Core: Review field guide documentation for implementation details - Core: Validate block bindings integration with existing custom blocks - Community: Provide feedback on collaborative editing features through testing - Documentation: Update tutorials for new block types and binding capabilities - Support: Prepare knowledge base articles for 6.9 feature support requests #### DevRel - Developer advocacy: Create demos showcasing block bindings expansion possibilities - Education: Develop workshops on collaborative editing workflows - Developer experience: Document migration paths for existing custom block solutions - Developer marketing: Highlight WordPress 6.9 as collaboration milestone - Community management: Monitor developer feedback on API changes ## ๐Ÿงช Hypotheses - Block bindings expansion will significantly reduce custom block development needs across WordPress ecosystem - Collaborative notes feature will drive adoption in team-based WordPress development environments - Accordion blocks will replace many third-party accordion plugins due to native integration - Math block will enable WordPress expansion into academic and scientific content markets ### ๐Ÿ“Š Methodology - Analyze plugin repository data for blocks similar to new core features before/after release - Survey WordPress agencies on workflow changes with collaborative editing features - Measure developer adoption rates of expanded block bindings API through GitHub activity ### โ“ Questions - How will block bindings expansion affect the WordPress plugin ecosystem and custom development market? - What additional collaborative editing features are planned beyond basic commenting? - How does the abilities API framework prepare for specific AI integrations in future releases? ### ๐Ÿ”ฎ Future Research - Long-term impact of collaborative editing on WordPress team workflows - Developer adoption patterns for expanded block bindings versus custom block development - Integration potential between abilities API and existing WordPress AI plugins ### ๐Ÿ’ก Implications - Practice: Teams can collaborate directly within WordPress editor instead of external tools - Policy: Agencies may need to adjust development practices around reduced custom block needs - Security: Block bindings expansion requires careful data validation and sanitization - Education: Training programs need updates for collaborative workflows and new binding capabilities - Funding: Reduced custom development needs may shift WordPress development budgets toward design and content strategy ### ๐Ÿง  Learning Styles Assessment Reading level estimate: 12th Grade (technical content with WordPress-specific terminology) #### ๐Ÿ‘€ Visual learners - Present: Screenshots of new features, UI demonstrations, code examples - Improve: Architecture diagrams for block bindings, flowcharts for collaborative workflows #### ๐Ÿ”Š Aural learners - Present: Live demonstration with detailed explanations and Q&A - Improve: Separate audio summaries for each major feature set #### ๐Ÿ—ฃ๏ธ Verbal learners - Present: Clear explanations of technical concepts, analogies to Google Docs - Improve: Glossary of WordPress-specific terms, more real-world use case examples #### ๐Ÿงฉ Kinesthetic learners - Present: Live coding demonstrations, hands-on feature exploration - Improve: Step-by-step setup guides, downloadable demo sites for testing #### ๐Ÿง  Logical learners - Present: Structured feature walkthrough, version comparison tables - Improve: Decision trees for when to use new features, migration checklists #### ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Social learners - Present: Q&A interaction, community discussion during presentation - Improve: Discussion forums for feature feedback, collaborative testing groups #### ๐Ÿง˜โ€โ™€๏ธ Solitary learners - Present: Self-paced video format, detailed written documentation references - Improve: Individual exploration exercises, personal project integration guides #### ๐ŸŒฟ Naturalistic learners - Present: Organic development of features through real-world scenarios - Improve: Ecosystem impact discussions, natural workflow integration examples ### ๐Ÿ“Š Accessibility Assessment #### Screen reader semantics - Present: Clear heading structure in presentation, descriptive link text - Improve: Alt text for code screenshots, ARIA labels for interactive demos #### Keyboard navigation - Present: Standard video controls accessible via keyboard - Improve: Timestamped navigation options, keyboard shortcuts for demo sections #### Contrast and readability - Present: High contrast code examples, clear visual demonstrations - Improve: Ensure demo sites meet WCAG contrast requirements #### Text resizing and reflow - Present: Responsive video player, scalable demonstration interfaces - Improve: Text-based alternatives to visual-only demonstrations #### Media and captions - Present: Live audio explanation of visual demonstrations - Improve: Auto-generated captions, downloadable transcripts #### Forms and interactions - Present: Clear demonstration of WordPress admin interactions - Improve: Alternative input methods for demonstrated features ### ๐ŸŒ DEIB Assessment #### Cultural breadth - Present: English-language presentation with international WordPress community focus - Improve: Multi-language demo sites, global use case examples #### Inclusive language - Present: Technical explanations avoid exclusionary jargon - Improve: More beginner-friendly explanations alongside advanced concepts #### Neurodiversity support - Present: Structured presentation format with clear transitions - Improve: Content warnings for rapid UI changes, consistent visual formatting #### Representation - Present: Two male developers presenting technical content - Improve: Diverse presenter representation, varied user personas in examples #### Psychological safety - Present: Encouraging tone toward community feedback and questions - Improve: Explicit welcome for all skill levels, mistake normalization ### โœ… Logical Validity #### Strong reasoning - Deductive strength: Clear progression from WordPress collaboration needs to specific feature solutions - Inductive strength: Examples demonstrate broader patterns of WordPress development evolution - Causal reasoning: Logical connection between expanded APIs and reduced custom development needs - Analogical strength: Effective comparison to Google Docs for collaborative editing context #### Fallacies - Appeal to novelty: Some emphasis on "new" features without addressing potential downsides - Hasty generalization: Limited testing scenarios may not represent all use cases #### Tone of voice - Overall tone: Enthusiastic and technical, appropriate for WordPress developer audience with clear excitement about collaborative features ### ๐Ÿ›ก๏ธ DARVO Analysis - Deny: No defensive patterns present - Attack: No attacks on critics or alternative approaches - Reverse victim/offender: Not applicable to technical presentation - Emotional cues and rhetoric: Positive excitement about features, technical enthusiasm appropriate for developer audience ## ๐ŸŽฏ Conclusion WordPress 6.9 represents a significant step toward collaborative content management with block-level commenting and dramatically expanded customization through enhance --- ## Full Transcript [00:00] Uh, welcome everybody to the 6.9 live<br>[00:02] stream, WordPress 6.9 live stream here<br>[00:04] on the WordPress.com YouTube channel.<br>[00:07] Uh, we're going to kind of go over some<br>[00:08] of the main features of the release and<br>[00:10] as well as some userfacing stuff and as<br>[00:13] well as some developer facing stuff. I'm<br>[00:15] joined by my co colleague Ryan Welchure.<br>[00:17] Ryan, would you like to introduce<br>[00:18] yourself?<br>[00:19] >> Sure. My name's Ryan Welchure. As Nick<br>[00:20] just said, I'm a developer advocate at<br>[00:22] Automatic. Um, you may have seen me on<br>[00:24] the interwebs as Ryan Welter Codes, uh,<br>[00:26] where I do live streaming and stuff on<br>[00:29] on YouTube. I like to focus in the<br>[00:31] custom block development sort of area of<br>[00:33] things, but uh, yeah, I'm super excited<br>[00:35] to share the cool stuff that's coming<br>[00:37] 6.9.<br>[00:38] >> Yeah, but you got to tell us how you're<br>[00:39] involved in 6.9.<br>[00:40] >> Oh, right. I'm actually um, a co- triage<br>[00:45] release lead this year. So myself and<br>[00:46] Aki Hammano who is um a phenomenal core<br>[00:50] contributor has been been keeping the<br>[00:51] lights on for uh for a long time. We are<br>[00:54] uh doing the the triaging of issues for<br>[00:57] both core and for Gutenberg. So our job<br>[01:00] is to see the issues that that have been<br>[01:02] um milestone for 6.9 and uh talk with<br>[01:06] the developers and and um core<br>[01:07] committers to see if they're going to<br>[01:09] make it in. And at this point, we uh<br>[01:12] actually just released release candidate<br>[01:14] 3 for WordPress 6.9 that went out. It<br>[01:16] went live I think about an hour ago. So<br>[01:18] if you are following along at home, you<br>[01:20] should update your uh your sites. Um and<br>[01:23] uh well, you should test the release<br>[01:25] candidate 3 because um next week we will<br>[01:28] be releasing uh WordPress 6.9 uh on<br>[01:31] December 2nd and uh that's going to<br>[01:32] coincide with state of the word which is<br>[01:34] super exciting. It's never been done<br>[01:35] before where we have a state of the word<br>[01:36] and a major WordPress release all in the<br>[01:38] same day. Nothing will go wrong. It will<br>[01:41] be amazing.<br>[01:44] >> That will be great. And I think that<br>[01:45] there's a lot of great features both for<br>[01:47] users and developers in this release.<br>[01:50] And so kind of what we wanted to do<br>[01:52] today is just give you a preview of<br>[01:54] what's coming. I'm going to kind of<br>[01:55] focus on maybe the more user uh focused<br>[01:59] things uh and then Brian's going to take<br>[02:02] take the lead on the developer stuff.<br>[02:04] So, uh, you can kind of see a a list in<br>[02:06] the sidebar there of kind of how we're<br>[02:08] going to go through things. If you have<br>[02:10] comments or questions, please feel free<br>[02:11] to add them there on YouTube, and we<br>[02:12] will address them as we go through<br>[02:15] things. Uh, one more thing to note is<br>[02:17] that the WordPress 6.9 field guide was<br>[02:20] just published again not too long ago,<br>[02:23] maybe an hour ago. So, if you go to<br>[02:24] make.wordpresscore,<br>[02:27] you'll be able to find that field guide<br>[02:28] where you'll be able to dig into like<br>[02:29] the the nitty-gritty details of kind of<br>[02:31] what we talk about today. Also, we're<br>[02:33] only going to be talking for about an<br>[02:34] hour, so there are things that we won't<br>[02:35] be able to cover, but check out that<br>[02:37] field guide for for all the details. All<br>[02:40] right, I think we're ready to get into<br>[02:42] some of these userf facing stuff in 6.9.<br>[02:45] So, we'll switch over to that view.<br>[02:51] All right, so I created this little demo<br>[02:54] with the help of some of the folks who<br>[02:55] are working on 6.9. It's very basic, but<br>[02:58] hopefully it gives you a flavor of some<br>[03:00] of the cool features that are that are<br>[03:02] in the release. So, we have a fictitious<br>[03:06] website for this person who's both a<br>[03:09] photographer, a designer, and a<br>[03:10] mathematician. You'll understand why<br>[03:12] mathematician in a bit. Um, but it's<br>[03:15] pretty simple site. We have some nice<br>[03:17] layouts here. So, the first kind of<br>[03:20] banner feature of 6.9 is notes. So,<br>[03:25] think of Google Docs. You can add<br>[03:27] comments uh on blocks that other people<br>[03:31] on your website, other users in your<br>[03:32] website can see and they can also add<br>[03:34] their own notes. So, let's head on over<br>[03:36] to the editor here.<br>[03:39] And here we are.<br>[03:41] And as we scroll down, we see our page.<br>[03:45] And if you look closely, there's this<br>[03:47] little notes button up here. So, if you<br>[03:50] click on the notes button, this is your<br>[03:51] notes panel. Let me zoom in a little<br>[03:54] bit. can click here and you'll see that<br>[03:57] I asked Ryan what he thought of the hero<br>[04:00] of this page. And he said, "Let's use a<br>[04:03] different one." So, we're going to see<br>[04:05] uh a lot of comments from Ryan as we<br>[04:07] progress through this uh this demo, but<br>[04:09] it shows you how nice it is. So, if<br>[04:12] you're working with colleagues or maybe<br>[04:13] you're working with clients, you can<br>[04:15] provide, you know, maybe a staging site<br>[04:18] to those to those individuals. They can<br>[04:20] provide notes on the work and then you<br>[04:22] can address those. So Ryan's saying<br>[04:24] let's use a the desert one. So we can<br>[04:28] just go to our media library and we can<br>[04:31] pick this one.<br>[04:36] And once I'm once I've addressed the<br>[04:38] issue,<br>[04:40] I can say fixed it. Hit reply.<br>[04:43] And then kind of like other<br>[04:45] applications, you have the ability to<br>[04:47] resolve. So we can just resolve that. So<br>[04:49] I've resolved Ryan's comment there. Now,<br>[04:53] as we scroll down the page, uh, we're<br>[04:55] going to see some additional notes here.<br>[04:58] Again, more notes from Ryan about<br>[05:00] replacing images and updating things,<br>[05:02] and we can, you know, make those updates<br>[05:03] as we go. This is kind of the initial<br>[05:06] implementation of notes, and I think<br>[05:08] you'll see or block notes, and you'll<br>[05:09] see a lot more of this, uh,<br>[05:10] functionality in the future. You know,<br>[05:12] this is kind of part of that<br>[05:13] collaborative editing milestone for<br>[05:16] WordPress. Uh, and we're really excited<br>[05:18] to see how people use it. I'm finding it<br>[05:20] pretty fun, especially with, you know,<br>[05:22] I, you know, building sites for, you<br>[05:24] know, friends and family and parents and<br>[05:26] they run into a problem, they can just<br>[05:28] add a note and say, "Nick, fix this.<br>[05:30] Answer this question for me." So, try<br>[05:33] out notes. Especially useful when you're<br>[05:34] working with others. Um, the next thing<br>[05:37] that I wanted to show you is, and this<br>[05:40] is this is a bit of a quality of life<br>[05:42] thing, but it's something that if you<br>[05:44] ever worked with galleries in WordPress,<br>[05:47] you probably ran into. Um, before we<br>[05:50] look at this gallery, I'm going to flip<br>[05:51] over to this view in playground.<br>[05:54] This is, let me zoom in a little bit.<br>[05:56] This is WordPress 6.3. So, this is the<br>[05:58] the stable release of WordPress that you<br>[06:00] you have on your own website right now.<br>[06:03] And if we're in this gallery, let's say<br>[06:05] that I want to change the aspect ratio<br>[06:08] of these images. The only way to do that<br>[06:10] right now would be to pull the images.<br>[06:13] We can copy the pull the images out,<br>[06:16] adjust the aspect ratio to square, and<br>[06:20] then you'd have to drag them back in.<br>[06:23] That's kind of how you would do that<br>[06:24] approach, and it's kind of funky, and<br>[06:26] there's some issues with it. Well,<br>[06:28] luckily, that's been changed and fixed<br>[06:30] in WordPress 6.9. So, if we come back<br>[06:33] over to our gallery here, we can click<br>[06:34] on the gallery view, go over to our<br>[06:37] sidebar. me zoom in a little bit more<br>[06:40] and we can just adjust the aspect ratio<br>[06:42] for all of our images very easily right<br>[06:45] from the sidebar. So again, not the<br>[06:47] biggest change, but a really nice<br>[06:49] quality of improvement uh quality of<br>[06:51] life improvement uh that if you're using<br>[06:53] galleries a lot, you'll you'll hopefully<br>[06:55] uh appreciate. The next thing which is<br>[06:58] kind of subtle is that there are some<br>[07:00] pretty big improvements into drag and<br>[07:03] drop. So again, if we go back to 6.3,<br>[07:07] let me just undo this a little bit. When<br>[07:10] you would drag and drop, let's say, this<br>[07:12] image, you get this little black box and<br>[07:15] you'd get these little blue indicators<br>[07:18] of where you're dropping the image. And<br>[07:20] this worked okay, but it was still a<br>[07:22] little bit hard to use. Again, that's<br>[07:25] been improved in 6.9. Keep clicking the<br>[07:27] wrong thing. So now if we're in this<br>[07:29] gallery and we drag, you can see that<br>[07:31] I'm actually dragging the image. We're<br>[07:33] in 6 uh 6.8 um you weren't. So there we<br>[07:39] go. We're dragging the image like this.<br>[07:42] It makes it just a lot easier to to move<br>[07:45] blocks around the canvas. And you can do<br>[07:47] this with other things as well. So if we<br>[07:49] drag this whole element, you can see<br>[07:52] it's dragging with me. And then we can<br>[07:55] drop it. So hopefully that improves the<br>[07:57] way you manipulate elements in the<br>[08:00] canvas in WordPress.<br>[08:03] All right, the next thing which is near<br>[08:05] and dear to my heart, um some of you may<br>[08:07] know I've I I've built a plugin around<br>[08:09] showing and hiding content and I'm so<br>[08:12] happy that the first iteration of it has<br>[08:14] been added to WordPress core. What I<br>[08:18] mean by that is when you have a block,<br>[08:20] let's say that let's go back use this<br>[08:21] gallery as an example. Let's pretend<br>[08:24] that maybe we're not 100% sure, maybe<br>[08:26] we're still working on this gallery, but<br>[08:29] this page is live on my website. You now<br>[08:32] have the ability to hide this content.<br>[08:36] You can think of it like staging<br>[08:37] content. So, if you have a page, you<br>[08:39] know, your homepage of your site, it's<br>[08:41] currently live to the public, but you<br>[08:44] want to start making changes. Maybe<br>[08:45] you're getting ready for Black Friday<br>[08:47] and you're starting to build out your<br>[08:48] Black Friday deal. Or maybe it's a<br>[08:50] seasonal promotional banner that you're<br>[08:52] working on, but it's not quite ready.<br>[08:55] Previous workflows without plugins was<br>[08:57] you would kind of create those elements<br>[08:59] maybe on a on a draft page, and then<br>[09:01] you'd copy them into your live page<br>[09:04] whenever you were ready to make it<br>[09:06] public, and then you click save. The<br>[09:08] hide functionality is really, really<br>[09:10] useful because I can just hide this<br>[09:12] gallery.<br>[09:14] I can click save. And if I view the<br>[09:17] front end,<br>[09:21] the gallery is no longer there, but it's<br>[09:24] still saved in post content.<br>[09:27] So, I can go to my uh sidebar here, and<br>[09:29] you can see that the gallery here is is<br>[09:31] in the post content. So, I can come back<br>[09:33] here and make edits to it.<br>[09:36] All you need to do is show it, and I can<br>[09:38] make my changes. And then if I'm ready<br>[09:41] to make it public, I can click save and<br>[09:43] publish it. It's really handy when<br>[09:45] you're kind of managing a lot of<br>[09:46] content, especially on on live pages. So<br>[09:50] I encourage this again, this is kind of<br>[09:52] the first iteration of, you know,<br>[09:54] showing and hiding content in WordPress<br>[09:57] core. Uh there are some plans uh to<br>[10:01] extend this further in WordPress 7.0<br>[10:03] next year. Um, so we're excited to kind<br>[10:05] of see how this goes, but this<br>[10:07] implementation kind of lays the<br>[10:08] framework for the functionality.<br>[10:12] >> Nick, just before you move on, there are<br>[10:13] some questions in chat. Did you want to<br>[10:15] wait till the end of um all your stuff<br>[10:17] or do you want to sort of address them<br>[10:19] now?<br>[10:20] >> Yeah, let's go through them.<br>[10:21] >> Okay, so the first question uh that I'm<br>[10:23] seeing is from uh Dejan Burick and it<br>[10:26] says, "Hello everyone. No one is is<br>[10:27] mentioning the new 2026 WP theme. When<br>[10:30] it will it be implemented? Uh there will<br>[10:32] not be a 2026 theme released with this<br>[10:34] version of WordPress. Um so that answers<br>[10:37] that. Uh Rich Neighbor had a question<br>[10:39] about the notes. Is notes control always<br>[10:41] available in the editor header<br>[10:45] >> up here? Yep. Um so this is how you can<br>[10:47] access notes. You can also access notes<br>[10:50] at the block level. So let's go to a<br>[10:52] block that doesn't have a note. So this<br>[10:53] paragraph for example, if you click the<br>[10:55] little options menu, you can see the<br>[10:57] option to add a note. Um, so that's how<br>[11:01] you access those.<br>[11:02] >> Cool. Uh, next question is from Elliot<br>[11:04] Richmond WP. Hello Elliot, how's it<br>[11:06] going? Um, do users get notifications<br>[11:08] when a note is submitted? As in user one<br>[11:11] added a note for user two? So when I<br>[11:13] gave all my horrible feedback to you,<br>[11:15] would you get um, notifications on that?<br>[11:18] >> That is a great question that I should<br>[11:20] know the answer to and and I do not.<br>[11:22] Ryan, do you happen to know?<br>[11:24] >> I don't know. I would imagine it's it's<br>[11:25] I mean it makes sense but I don't uh I<br>[11:27] don't know off the top of my head. It's<br>[11:29] it's um it's a feature I'm not that<br>[11:32] familiar with. lot a lot of features<br>[11:34] coming in this release but the field<br>[11:36] guide have those details for you but I<br>[11:38] do want to note that again this is kind<br>[11:39] of the initial implementation of notes<br>[11:41] uh in core and so things like<br>[11:44] notifications things like you know<br>[11:46] additional functionality uh in notes um<br>[11:51] provide that feedback and more will be<br>[11:53] coming in 7.0<br>[11:55] Cool. The last question is uh been<br>[11:57] addressed in chat, but I want to call it<br>[11:58] out as well. Does WordPress 6.9 come<br>[12:00] with the icon block? Uh we need icon<br>[12:03] with menu items. Uh unfortunately, it is<br>[12:06] not going to ship with 6.9. It was<br>[12:07] something uh that Nick knows all about<br>[12:10] because it was basically his block and I<br>[12:11] was working on the poll request for it.<br>[12:13] Uh but it just didn't uh didn't get but<br>[12:16] uh wrapped up in time. So aiming for<br>[12:19] 7.0.<br>[12:20] Um,<br>[12:21] >> but I want I want to say Ryan put in a<br>[12:23] huge amount of good work in terms of<br>[12:25] prepping that pull request for inclusion<br>[12:27] in core. Um, as with any bit of code<br>[12:30] that goes into core, a lot of thought,<br>[12:32] you know, needs to go into it to make<br>[12:33] sure it's, you know, solid for the<br>[12:36] millions of people that, you know, are<br>[12:37] using are using the latest release. So,<br>[12:40] and to get into the weeds on it just a<br>[12:42] little bit, Nick, not to hijack, but uh<br>[12:44] the reason it didn't make it in was<br>[12:45] because the controls that it requires um<br>[12:48] we needed to build them in a core first<br>[12:50] way, meaning that like a block supports<br>[12:53] would have things like width and height<br>[12:54] and stuff like that. So, those those<br>[12:56] don't exist. So, it was sort of we<br>[12:57] needed to get those pull requests done<br>[12:58] before we got the other pull request<br>[13:00] done and they just sort of added up.<br>[13:01] But, um it's definitely something that I<br>[13:04] want to work on personally. And uh yeah,<br>[13:06] anyways, but I will let Nick get back to<br>[13:08] his presentation. starting.<br>[13:10] >> Yes, we icons would be great and I think<br>[13:13] that we're we're on a good path for<br>[13:14] that. The next thing that has been a a<br>[13:17] very common request in core are<br>[13:20] accordians. So now we have an accordion<br>[13:22] block and we can let's look scroll down<br>[13:25] on our list view here. We can see it. So<br>[13:27] this is a an accordion block that's now<br>[13:29] available in 6.9. Uh, and so you'll have<br>[13:33] you'll have a accordion parent and then<br>[13:36] you'll have an accordion item for each<br>[13:38] item inside of the accordion. If we<br>[13:40] click on the accordion here, we can see<br>[13:41] that it has some settings for autoc<br>[13:43] close, show icon, position, where you<br>[13:46] want the icon to show. Um, on the<br>[13:49] WordPress developer blog, a colleague of<br>[13:51] ours, Justin Tablock, wrote a great<br>[13:53] article about how you can style<br>[13:55] accordians using theme.json<br>[13:58] and CSS. So, I would encourage you to<br>[13:59] check out uh that article if you're<br>[14:01] interested in, you know, modifying and<br>[14:03] extending the accordion block for your<br>[14:05] own designs and your own client needs.<br>[14:07] But you can click here and we can see<br>[14:09] that it opens up. I added a a little<br>[14:11] border background. So, these are all<br>[14:12] blocks, so you can style them as you<br>[14:15] normally would with a block with<br>[14:16] typography and background and so on and<br>[14:17] so forth. And you can click on these and<br>[14:20] they all open up uh as you'd expect. So,<br>[14:24] really excited to see that. That's been<br>[14:25] something that folks have asked for for<br>[14:27] for quite a long time.<br>[14:31] All right, so the next thing we're going<br>[14:33] to kind of move out of this single page<br>[14:35] and we're going to look at a couple new<br>[14:36] things. One of them is another highly<br>[14:40] requested block and that is<br>[14:43] the time to read block. So, what I'm<br>[14:46] going to do is I'm going to go edit this<br>[14:47] page here.<br>[14:52] And you'll see that when my query loop<br>[14:54] loads here that we have this little<br>[14:57] block here called time to read. This<br>[14:59] block has actually been in the Gutenberg<br>[15:01] plugin for quite some time. It just took<br>[15:02] a little while to go from experimental<br>[15:04] to stable. It is now stable. And so,<br>[15:07] this is a little block that you can add<br>[15:09] within query loops or on post pages. uh<br>[15:13] and it will calculate the time to read<br>[15:14] based on the word count. So, pretty<br>[15:17] simple little block, but it's really<br>[15:19] handy and a lot of, you know, a lot of<br>[15:21] sites have it and usually you'd have to<br>[15:22] rely on a thirdparty plugin or build one<br>[15:24] your build one yourself and now you can<br>[15:26] just do it right in core. You have all<br>[15:28] the the design options that you normally<br>[15:30] would, typography,<br>[15:32] colors, that sort of thing. Um,<br>[15:36] the next one, which is is a pretty<br>[15:38] pretty fun one, uh, I haven't really<br>[15:41] figured out how I'm going to use it<br>[15:42] myself on my own sites, but it's<br>[15:44] definitely great for creatives and<br>[15:45] people who want to have expressive<br>[15:47] websites. And that is, you know, what<br>[15:49] we're calling stretchy text, but it's<br>[15:52] also fitting text to a container. So,<br>[15:54] here I just have a title that's an H1,<br>[15:56] but let's pretend that I wanted to have<br>[15:58] this word research kind of expand the<br>[16:02] whole width of the page. Before you need<br>[16:04] to, you know, you'd have to have some<br>[16:05] custom CSS. It was a little tricky to<br>[16:07] do. But now what I can do is I'm just<br>[16:09] going to do an H1.<br>[16:13] We'll do research.<br>[16:17] And um<br>[16:20] Oh, I clicked the wrong thing. Okay.<br>[16:22] Sorry about that. When we go to headings<br>[16:27] um<br>[16:30] Okay. Yeah, sorry. When we have our<br>[16:32] heading, we'll do an H1. We'll make it<br>[16:34] nice and big.<br>[16:36] Uh, let's just do extra large. Let's<br>[16:39] just do four. Okay. You can change the<br>[16:43] style of the heading. If you click here,<br>[16:46] you'll see stretchy heading. And you can<br>[16:49] do this with paragraph as well. And what<br>[16:51] this does, we're going to click on it.<br>[16:53] And we have, let's see here.<br>[16:59] This should be full width. There we go.<br>[17:03] Now, this heading is going to expand to<br>[17:08] the container of this cover block. So,<br>[17:11] if I was to look at this on tablet, you<br>[17:13] can see what this There we go. On<br>[17:16] mobile, it gets smaller and on desktop,<br>[17:19] it gets nice and big. So, you can use<br>[17:21] this in many different ways creatively,<br>[17:24] but let's let's even look at it a little<br>[17:26] bit more. We can<br>[17:28] back to tablet<br>[17:33] refresh here. Okay. So, that's how you<br>[17:36] kind of mess with the the stretchy text<br>[17:38] and I'm excited to kind of see how<br>[17:39] people who people want to use that. Now,<br>[17:42] the last thing that I'm<br>[17:45] it seems very niche, but as somebody who<br>[17:47] took a lot of math courses in school and<br>[17:50] had to write latte um equations, this<br>[17:54] next feature is is is really exciting to<br>[17:56] me and it also looks really cool. So,<br>[17:59] let's go out to our main site and we're<br>[18:01] going to go to the research on the front<br>[18:02] end. And again, I said that this person<br>[18:04] was a mathematician for whatever reason,<br>[18:06] and I had AI help us write some uh posts<br>[18:10] around about equations and adaptive<br>[18:12] image compression models in WordPress.<br>[18:14] Again, this is completely made up. Um,<br>[18:16] but let's go take a look at one of<br>[18:17] these. How about this one? And as we<br>[18:20] scroll down, we can see that we have<br>[18:21] these really nice equations that are<br>[18:24] being presented in WordPress. So, if we<br>[18:27] come and look at the post, we can see<br>[18:29] how this works.<br>[18:31] um you're going to have a math block.<br>[18:35] So, if you come over here, we can just<br>[18:37] type in math and you're going to have<br>[18:40] this little math block that you can<br>[18:41] insert. And then it's going to use this<br>[18:44] may seem foreign to many, but those who<br>[18:46] are familiar with latte uh<br>[18:50] uh notation should be familiar with<br>[18:52] this. And this then generates our nice<br>[18:55] looking equation here. But that's not<br>[18:57] all. We also have the ability to add<br>[19:01] math formatting inside of content. So<br>[19:04] this C right here, it's currently just<br>[19:07] inline code, which is, you know, which<br>[19:08] is fine, but we can dress this up a<br>[19:11] little bit by<br>[19:13] making the C math notation, math<br>[19:18] formatting. And you can see, take a look<br>[19:20] at these as well. We have E_X, which<br>[19:22] gives us this nice E with a with a<br>[19:24] subscript of X.<br>[19:26] So, um, again, for any of you out there<br>[19:29] who are needing to write equations and<br>[19:31] blog posts, hopefully you'll find this<br>[19:33] useful. Uh, again, it's it's a<br>[19:35] relatively niche functionality, but for<br>[19:37] those that need it, it's actually a<br>[19:39] lifesaver. Before you had to rely on uh<br>[19:41] e external plugins.<br>[19:44] Any additional questions, Ryan?<br>[19:45] >> Yep. Rich has been flooding chat with<br>[19:48] questions, so we're going to get some<br>[19:50] questions. The first one is about the<br>[19:51] notes API. Uh, does the notes API enable<br>[19:53] externally created notes like for an AI<br>[19:56] leaving notes on your content?<br>[19:58] >> That's a great question, Rich. I am not<br>[20:00] sure.<br>[20:01] >> Um, I would imagine that, and I'm just<br>[20:04] making this up because that's what I do.<br>[20:06] uh that you know if you if you were to<br>[20:09] couple the notes API with the abilities<br>[20:11] API then you would be able to have your<br>[20:13] your website be talking to an AI and<br>[20:16] then creating a notes there will be an<br>[20:18] AI to do sorry an a and some sort of API<br>[20:20] to create notes. So, I can see in the<br>[20:23] future being that that's something that<br>[20:25] could be possible, but um right now I<br>[20:28] don't think it's it's it's it's not in<br>[20:30] the list of features right now as far as<br>[20:32] I as far as I know.<br>[20:33] >> And I think it's Yeah. So, I want to<br>[20:34] note that I want to note that um<br>[20:40] the notes here. This is a little hard to<br>[20:43] see, but you'll note you'll I keep<br>[20:45] saying note. You'll note that the note<br>[20:49] is attached as metadata on the block. So<br>[20:52] you can hear it says note ID number two.<br>[20:54] So this information is stored at the<br>[20:57] block level. Not the actual note itself,<br>[21:00] but the ID for the note. Um so in<br>[21:03] theory, there's a lot of additional uh<br>[21:05] ex things that we can do with notes in<br>[21:07] the future. Again, this is kind of the<br>[21:08] first implementation. Um but again it is<br>[21:11] attached in the block markup to the note<br>[21:14] that it corresponds to.<br>[21:19] >> Very cool. Um okay the next question was<br>[21:22] do accordians accept the same inner<br>[21:24] blocks as the details block?<br>[21:26] >> Yep. Absolutely. So you can put let me<br>[21:28] go back to that. You can put pretty much<br>[21:31] anything you want in a an aquarium<br>[21:34] block.<br>[21:37] So, if we come down here<br>[21:40] to our accordion,<br>[21:42] uh this is just uh you see that I'm<br>[21:44] inside of this accordion area. It kind<br>[21:47] of acts as like a group. So, you can put<br>[21:49] whatever you want here. So, we can put<br>[21:50] an image uh really really whatever you<br>[21:53] whatever you need to put inside of your<br>[21:55] accordion.<br>[22:00] >> Very cool. Very cool. Uh next question<br>[22:02] is, what are the block variations for<br>[22:03] the time to read block?<br>[22:05] Oh, that's that's a great question. Um,<br>[22:08] let's just take a look. This isn't going<br>[22:10] to make a whole lot of sense because<br>[22:11] we're on a homepage, but let's do the<br>[22:13] time to read. And we have oh, word<br>[22:16] count. So, you can do the time to read<br>[22:18] or you can display the number of words<br>[22:20] uh in the in the piece of content.<br>[22:25] >> Um, okay. The next question is, is<br>[22:27] stretchy heading the official block<br>[22:29] name? Does it only apply to headings?<br>[22:32] So it is um it's stretchy. So it's it<br>[22:36] applies to headings and paragraphs. And<br>[22:38] so you can see here that I'm on a<br>[22:39] paragraph. And when I go to the if I<br>[22:41] click on the paragraph, I can transform<br>[22:43] it into a stretchy paragraph. So<br>[22:45] stretchy is the is the terminology<br>[22:47] that's being used to explain this<br>[22:50] functionality.<br>[22:52] >> I think it's a good name. It's a fun<br>[22:53] name.<br>[22:54] >> Um<br>[22:54] >> fun feature. Fun name.<br>[22:56] >> Yeah. As a side note, Rich notes that<br>[22:58] math block would be fun styled to a<br>[23:00] handwriting font. That's pretty cool.<br>[23:01] And you can register a block a style<br>[23:03] variation for that I'm sure. Um, there's<br>[23:06] a question from uh Sunny uh one onto<br>[23:10] podcast. Sorry if I said that wrong.<br>[23:11] Does the math block support math ML as<br>[23:13] well as latex a latex?<br>[23:16] >> So the it generates math ML under the<br>[23:21] like HTML under the hood. Um, so but<br>[23:24] when you go to insert the math block, so<br>[23:26] we'll just add one here. Uh, it's going<br>[23:29] to look for this this formatting, this<br>[23:30] latte formatting.<br>[23:33] >> Cool.<br>[23:35] Um, Rich is also asking, "Is the notes<br>[23:37] API similar to footnotes?"<br>[23:41] >> Rich is just coming in hot with all the<br>[23:42] hard questions.<br>[23:43] >> Yeah, he's got all the tough questions<br>[23:44] right now.<br>[23:45] >> I'm not exactly sure on on the footnotes<br>[23:48] one. Um,<br>[23:50] >> if I understand it correctly, and I<br>[23:52] might be incorrect, I think it I<br>[23:54] footnotes are stored in post meta and I<br>[23:57] don't believe notes are. I think they<br>[23:58] might be stored um as a post type, but I<br>[24:02] would have to look into the code. I<br>[24:03] think there's some there is some<br>[24:04] differences I believe on how notes are<br>[24:06] are saved. Um but uh if I'm wrong, then<br>[24:08] just ignore me because I don't want to<br>[24:09] talk about<br>[24:13] Okay,<br>[24:15] I was just going to quickly look here.<br>[24:23] Yeah, good thing to follow up on. I'm<br>[24:25] not 100% sure.<br>[24:30] Yeah. Okay. Okay. So, that was that<br>[24:32] question. Um, if you uh So, someone's<br>[24:35] saying if you copy a block with a note,<br>[24:36] the duplicate will have the same note<br>[24:38] link, but there will just be one copy of<br>[24:40] the note data. That was a question I<br>[24:42] guess. So,<br>[24:44] >> that is a great question that I have not<br>[24:46] actually explored myself here. So,<br>[24:49] hello there.<br>[24:54] So, now if we<br>[24:59] duplicate our thing here. Yeah. So,<br>[25:02] you're going to have the the same uh ID<br>[25:04] attached uh to each node.<br>[25:08] It's important to note, too, that this<br>[25:09] is still like very much in development.<br>[25:12] It's not it's not ready for for for<br>[25:13] prime time yet. Like, it's, you know,<br>[25:15] there's a lot of features and code and<br>[25:17] everything that that needs to be<br>[25:18] addressed. So,<br>[25:19] >> it's very cool feature that's going to<br>[25:21] be amazing when it's fully fleshed out.<br>[25:24] >> Exactly. So don't don't fully expect<br>[25:26] this to be completely Google Docs uh at<br>[25:29] this point. Um but again this is the the<br>[25:31] first step in kind of making making that<br>[25:33] happen in the future. So but it is still<br>[25:35] super useful. Like granted yes I<br>[25:37] duplicated the block and I see both<br>[25:39] notes here at the same time but um it is<br>[25:42] it's still a very powerful feature for<br>[25:45] getting feedback from colleagues and<br>[25:46] clients. So do use it. It is it is<br>[25:49] pretty useful<br>[25:50] >> for sure. Um, I think that is Oh, wait,<br>[25:53] wait. Another one from Rich. Is stretchy<br>[25:55] text only one line? Like would a<br>[25:56] paragraph stretch on line line<br>[26:00] on line<br>[26:02] line by line? Maybe<br>[26:04] >> it is one line. Yeah. So, it's<br>[26:05] stretching everything in your content to<br>[26:08] the width of that uh that content. So,<br>[26:12] >> cool. Okay. I think I've caught all the<br>[26:15] questions. If I have not, I apologize.<br>[26:17] Um maybe you can drop it in again and<br>[26:19] Nick can address them.<br>[26:22] >> So we should switch over to you to do<br>[26:23] the hard stuff.<br>[26:24] >> Oh yeah. Yeah, totally. I have a<br>[26:26] fiveminute demo. Um cool. Okay. Well,<br>[26:29] yeah, we we can jump into sort of the<br>[26:30] more developer focused things. I'm going<br>[26:32] to kind of jump around between code and<br>[26:36] my browser and devotes and we're just<br>[26:39] going to kind of talk through some some<br>[26:40] things. Um, so the first thing that I'm<br>[26:43] super excited about is the block binding<br>[26:45] changes that are coming in in in 6.9. So<br>[26:48] it just a bit a bit of history on there.<br>[26:50] So block bindings have existed in in<br>[26:53] WordPress for the last few few versions.<br>[26:55] Uh, they were only there was only four<br>[26:57] blocks that supported them. And if<br>[26:58] you're not familiar with about what<br>[27:00] block bindings are, it's the concept of<br>[27:01] taking a block attribute and binding it<br>[27:03] to a piece of data.<br>[27:06] Pardon me. Sorry, I'm just getting over<br>[27:07] a cold, so I'm going to try not to hit<br>[27:09] my microphone and cough into it. Um,<br>[27:11] yeah, so you you could only bind content<br>[27:14] uh to the paragraph block, the heading<br>[27:15] block, the image block, and the button<br>[27:17] block in in versions um before uh 6.9.<br>[27:21] And so the process of doing so was<br>[27:23] fairly straightforward. This is actually<br>[27:24] a paragraph. So you could you could come<br>[27:26] over to uh what am I doing here? Uh oh.<br>[27:29] Oh, sorry. That's a list item. That's<br>[27:31] not even a paragraph block. What am I<br>[27:32] saying? So I could grab any block that<br>[27:34] that supports it. this happens to be a<br>[27:36] header. You you come into attributes,<br>[27:37] you could bind the content to a piece of<br>[27:40] post meta. So what's h what's really<br>[27:42] cool about and what's happening what's<br>[27:43] coming in 69 is now we have the ability<br>[27:45] to basically<br>[27:47] um filter the supported attributes for<br>[27:50] any blocks and all blocks which is re<br>[27:52] really really powerful. So I have it and<br>[27:55] that's done by uh two new filters. we<br>[27:57] have the uh block binding supported<br>[27:59] attributes and then block name filter or<br>[28:02] we have the more generic block binding<br>[28:04] supports supported attributes filter.<br>[28:06] And so what that'll allow us to do is<br>[28:08] get the block that we're we're we're<br>[28:10] wanting to work with and all we have to<br>[28:11] do is add it is add the attribute name<br>[28:14] to the array of supported blocks. Sorry,<br>[28:18] supported block attributes. I'm going to<br>[28:20] keep saying that wrong for the entirety<br>[28:21] of this demo. Um, and so this is an<br>[28:24] example of u, for example, I'm I'm<br>[28:26] editing the core details um, uh,<br>[28:30] supported attributes. So over in my demo<br>[28:32] here, I I have this uh, details block in<br>[28:35] here. I'll just show you to details<br>[28:36] block. And so I've put a list of people<br>[28:39] from WordPress that that I kind of like.<br>[28:41] And then so what I want to do is I'm<br>[28:43] going to bind the the summary by coming<br>[28:45] into attributes. I'm going to select<br>[28:47] summary. I'm going to connect it to to<br>[28:49] some post meta that I have. And I and<br>[28:51] this is people in in in in WordPress.<br>[28:54] Now, all this functionality has<br>[28:55] pre-existed, but the ability to connect<br>[28:57] it to blocks that were not these four<br>[29:00] has not. I'm just going to sorry, I'm<br>[29:01] just going to move this uh toolbar out<br>[29:04] out of the way. We we'll get that out of<br>[29:05] the way there. And and so that's that's<br>[29:09] enabling you to to do some pretty<br>[29:10] powerful things. Um so, for example, we<br>[29:12] have a quot a quote block here. So, the<br>[29:14] quote block, if you look at how the<br>[29:16] quote block works, it's a block that<br>[29:18] that contains inner blocks. So we can<br>[29:20] already bind um a paragraph to anything<br>[29:24] um to our our um our block binding<br>[29:27] sources. So I have this haik coup that<br>[29:29] that um is about uh uh 6.9. But the one<br>[29:32] thing that we couldn't do was we<br>[29:33] couldn't bind the citation. So because<br>[29:36] I've now enabled that in my um<br>[29:40] quote here. So this is an example of the<br>[29:43] filter that's that's that's more<br>[29:45] generic. It receives the array of block<br>[29:47] attributes and it receives the block<br>[29:49] type as a name. So what I'm doing here<br>[29:51] is I'm I'm checking, oh, is this the<br>[29:53] core quote block? It is. Cool. Then<br>[29:54] we're going to add the citation to the<br>[29:56] list of supported attributes. And then<br>[29:58] now I can come into my quote block. I<br>[30:01] select the quote block. I can come down<br>[30:03] here. You can see attributes is um now<br>[30:07] enabled. And I can click this. I click<br>[30:10] again to get the post method that I've<br>[30:13] I've created. And this is going to be<br>[30:14] the citation. And so now we have a a<br>[30:16] block that's completely um it's a core<br>[30:19] block, but now it's completely<br>[30:20] customizable. So now on this post, if if<br>[30:22] I wanted to change this to WordPress um<br>[30:25] builders, that would work and that would<br>[30:27] actually save as post meta with this<br>[30:29] particular piece of post content.<br>[30:31] >> Brian, at this point, there's a very<br>[30:34] appropriate question here. So if you put<br>[30:36] one of these block bindings inside of a<br>[30:39] query loop,<br>[30:40] >> y<br>[30:40] >> will it inherit the whatever post it's<br>[30:43] on in the query loop?<br>[30:44] >> Yes, if it's post meta. So that's that's<br>[30:47] an excellent question. So WordPress core<br>[30:49] ships with a single binding source right<br>[30:51] now and that's post meta. So if you were<br>[30:54] to have um the uh a a block that's<br>[30:57] connected to a piece of post meta in<br>[30:59] that loop, it would still have access to<br>[31:00] that just like it would in sort of like<br>[31:02] preblock theme days when you would run<br>[31:04] that run the uh you know the the loop<br>[31:07] code and you would pull the post meta<br>[31:08] out of that. So yes, it will absolutely<br>[31:10] work. Just keep in mind that it has to<br>[31:13] have the post meta to be displayed,<br>[31:16] >> right? super powerful for like pulling<br>[31:19] in all sorts of excuse me. Yeah.<br>[31:23] >> So, one thing that's really really cool<br>[31:25] about this is that this like everything<br>[31:27] I've shown you so far is just core<br>[31:29] blocks. And this is could potentially<br>[31:31] negate the need for a lot of custom<br>[31:33] block development. There's a lot of<br>[31:34] blocks that do mostly what we're doing<br>[31:36] and and a a combination of block uh<br>[31:39] composition like putting together a<br>[31:40] pattern of blocks to build out certain<br>[31:44] interfaces um and and attach that to to<br>[31:47] post meta or to a custom binding source<br>[31:49] was never really possible but now it is.<br>[31:51] So, you know, a lot a lot of developers<br>[31:53] are reaching for custom blocks to do<br>[31:55] very very bespoke and customized things.<br>[31:57] And this is this is at least the<br>[31:59] beginning, if not the the the official<br>[32:02] start of uh of of like you may not even<br>[32:05] need a custom block anymore, but if you<br>[32:07] do want to do a custom block, it does<br>[32:09] work for custom blocks as well. So, I<br>[32:11] have a custom block in here where I've<br>[32:13] rebuilt the the quote block because why<br>[32:15] not, right? And uh what I've what I've<br>[32:18] done is I've I have a custom block and<br>[32:21] now I'm adding it supported its block<br>[32:23] attributes to the list of supported<br>[32:25] attributes that can be bound. So I can<br>[32:28] do that by again coming into attributes.<br>[32:31] I have two this block has got two<br>[32:33] attributes. We we've got the quote. It's<br>[32:35] not connected. So I'm going to pick the<br>[32:36] post meta. Hit haiku again. And then I I<br>[32:40] I can come back in here and I select the<br>[32:42] other one which is called the the<br>[32:44] citation. and I pick the citation and<br>[32:46] and see because I actually changed<br>[32:48] WordPress contributors up here to<br>[32:50] WordPress builders because it's still<br>[32:51] it's using the the same post method.<br>[32:53] This is automatically inherited. And so<br>[32:55] that that's that just works. Um, which<br>[32:57] is really really cool. And then uh<br>[33:00] sorry, I'll show you what it looks like<br>[33:01] in the front end. It does it does what<br>[33:02] it's supposed to do on the front end. So<br>[33:04] we've got all this stuff. Oh, it's not<br>[33:05] actually showing that. Not sure why.<br>[33:08] Just ignore the live demo that went<br>[33:10] wrong and it's always happens. Um, so<br>[33:12] that's kind of like the block bindings<br>[33:14] part. Uh, but there's there's there's<br>[33:16] another thing that's really cool. I was<br>[33:18] talking about block binding sources<br>[33:19] earlier. Like I said, WordPress 6 point<br>[33:22] um, sorry, WordPress 6.9 doesn't<br>[33:23] introduce any new uh, binding sources.<br>[33:26] We we we only have uh, Postmata, which<br>[33:28] is a pretty powerful one. But you've<br>[33:30] always been able to enable your own and<br>[33:32] create your own. So, I've actually done<br>[33:33] that um in here where I have this um<br>[33:37] this binding source which is going to<br>[33:39] basically expose the post excerpt to be<br>[33:42] bound to uh to a block. So, I'm just<br>[33:44] going to come back over here and refresh<br>[33:45] this. And we can see that um<br>[33:50] um prior to 6.9, the only way to really<br>[33:54] get this to work was you had to drop a<br>[33:57] snippet in that looked like this. So you<br>[33:59] would take your paragraph tag or<br>[34:01] whatever it was and you would have to<br>[34:03] come over into your um in your code<br>[34:06] editor and you'd have to drop it in.<br>[34:08] It's a real real pain. So uh one one<br>[34:11] thing that we used to do to get around<br>[34:12] that was we we would register a block<br>[34:14] variation that preset that metab uh um<br>[34:17] those those binding<br>[34:19] uh relationships. Well, now in 6.9 you<br>[34:21] don't actually have to do that. there is<br>[34:23] a new um uh when when you're when you're<br>[34:27] write when you're creating the the the<br>[34:29] client side JavaScript for this binding<br>[34:31] source, there's a new uh function called<br>[34:33] get fields list. And what this is going<br>[34:34] to do is this going to enable the the UI<br>[34:37] to be able to to talk to this custom<br>[34:39] binding source as well. So if I were to<br>[34:42] come in here, so I'm going to just bind<br>[34:44] a paragraph block, which is the default<br>[34:45] block in here. So if I go in into<br>[34:47] attributes, I'm going to bind content.<br>[34:49] If I cl if I click on this now you see<br>[34:50] I've got post excerpt and so I can click<br>[34:53] on that and now the post excerpt shows<br>[34:54] up in here and if I edit it um<br>[35:00] you can see that it's being edited up up<br>[35:02] here. So this is a super super powerful<br>[35:05] thing and it kind of closes the loop for<br>[35:06] custom binding sources which is really<br>[35:09] really really cool. Um it's one of my<br>[35:12] most favorite things in the whole world<br>[35:13] actually.<br>[35:15] >> Yeah. I mean, it's it's hard to like<br>[35:18] >> illustrate how impactful this is.<br>[35:22] >> Like, it was so hard. You had to write a<br>[35:24] custom block. You had to do all sorts of<br>[35:25] work before and now you can just pull it<br>[35:27] in. One quick question related to this.<br>[35:29] Um, Elliot, is it possible to bind to<br>[35:32] inline elements yet or only at the block<br>[35:33] level?<br>[35:35] >> Um, only at the block level. So, we're<br>[35:37] binding directly to um<br>[35:42] if I understand the question, I think<br>[35:43] you're talking about the the bits<br>[35:45] concept that that we're Yeah. No, that<br>[35:47] that doesn't exist yet. What this all<br>[35:50] this is doing right now is this is just<br>[35:51] like opening up the playing field to all<br>[35:54] other blocks. That's really what it's<br>[35:56] doing. So, instead of being limited to<br>[35:58] to a paragraph block, a heading block,<br>[35:59] an image block, or a button block to<br>[36:01] bind to something, now you can do it to<br>[36:03] anything with just a filter, which is<br>[36:05] super powerful. I I I think there's work<br>[36:07] being done on bits, but it's it's still<br>[36:09] very much um like in the planning<br>[36:12] experimental phase.<br>[36:13] >> Yeah. Yeah. But don't let that get you<br>[36:16] down on the bindings like if you haven't<br>[36:18] you tried it like revolutionizes<br>[36:21] development.<br>[36:22] >> Yeah. And like creating your own custom<br>[36:24] bindings which is kind of not it's it's<br>[36:26] already existed but I think I think the<br>[36:29] the power of custom binding sources are<br>[36:32] is vastly underestimated. You can<br>[36:34] literally connect a block to anything at<br>[36:37] this point. Um, any block to any piece<br>[36:39] of information. You just have to create<br>[36:41] the binding for it, which which is super<br>[36:43] cool. Super super cool.<br>[36:45] >> Um, okay, cool. Any more no more<br>[36:48] questions? I can I can move on. Okay, so<br>[36:51] the next thing I I I wanted to uh talk<br>[36:53] about is the command pallet. So, the<br>[36:55] command pallet is um pretty pretty cool.<br>[36:58] So, we're all familiar with the command<br>[37:00] pallet in the block editor in the site<br>[37:03] editor where you can you you can create<br>[37:05] your own sorry where you can run these<br>[37:07] commands by just hitting command K or<br>[37:10] control K on on PC. I'm not sure what it<br>[37:12] is, but whatever the PC version of<br>[37:14] command K is, that's what you run. And<br>[37:15] then you can you can run a run a<br>[37:17] command, right? So you can see you can<br>[37:18] go to the install plugins and all that<br>[37:20] stuff. But what's coming in 69 is is now<br>[37:23] uh let me just see if I can find a post<br>[37:25] here. Uh so in in the regular admin, we<br>[37:29] never had it before. So now we do. So<br>[37:31] now you can actually uh run these<br>[37:33] commands um right in any part of the<br>[37:35] admin, which is super powerful. Uh, it<br>[37:37] seems like a silly thing, but actually,<br>[37:39] if you think about it, if you're on on<br>[37:40] the plug-in screen or if you have a<br>[37:42] custom plug-in setting, for example, you<br>[37:44] can you can create a a command that will<br>[37:47] jump you to your to your your your<br>[37:50] plug-in settings page from wherever you<br>[37:51] are inside the admin. So, a nice little<br>[37:53] shortcut there. And then, of course, we<br>[37:55] can always shoot some confetti in the<br>[37:57] air, which is so much fun and<br>[37:59] ridiculous.<br>[38:00] >> That's the most important thing.<br>[38:02] >> It is the most important thing. So<br>[38:03] there's a quality of of life um uh<br>[38:06] change as well. Uh where is the sorry I<br>[38:09] don't have the file open. So in in when<br>[38:11] we're registering commands there's a new<br>[38:14] hook if you're familiar with um react<br>[38:16] hooks called use commands which allows<br>[38:18] you to to just specify an an array of<br>[38:22] commands which is a nice uh way of of of<br>[38:25] being able to register all of your<br>[38:27] commands all in one go which is nice.<br>[38:29] It's not a huge sort of you know it's a<br>[38:30] great little developer thing. Now you<br>[38:32] can like store these definitions in an<br>[38:35] array. You can define them dynamically<br>[38:37] and then just pass them to this command.<br>[38:39] So it's um pretty pretty cool stuff<br>[38:42] there. Um any oh one thing that you<br>[38:45] should keep in mind however is that to<br>[38:48] use these hooks you have to be inside of<br>[38:50] a React component. So, if you are in a<br>[38:52] place like the uh block editor, you you<br>[38:55] you can get it in here using the uh the<br>[38:58] register plug-in uh functionality that<br>[39:01] um that that is you're basically<br>[39:03] hijacking the slot fill system to do<br>[39:05] that a little bit, but it it it allows<br>[39:06] you to get this into a React<br>[39:09] environment. Well, when you're in a um a<br>[39:12] a WordPress um sorry, I keep losing that<br>[39:14] page. I'm just going to do this. When<br>[39:16] you're in a page like this, when it<br>[39:18] loads, come on now.<br>[39:23] Oh boy. Okay. I don't know what's going<br>[39:24] on there, but that page is not loading.<br>[39:26] When you're in an admin page that is not<br>[39:27] React based, that is not JavaScript<br>[39:29] based, you have to register these in a<br>[39:30] slightly different way. Um, and you will<br>[39:32] register them using this dispatch<br>[39:34] option. So, what this is doing is going<br>[39:36] to just run the function and dispatch it<br>[39:38] so it's available in those sort of<br>[39:40] nonreact admin places.<br>[39:44] Um, yeah.<br>[39:47] Oh, is there a question? Rich is asking<br>[39:49] a question about commands need do<br>[39:51] commands need to be registered<br>[39:53] explicitly for admin or are they<br>[39:54] available by default everywhere? Um well<br>[39:58] you would only so it's only going to<br>[39:59] work in the admin um if that's the<br>[40:02] question. It won't work on the front end<br>[40:03] because this is an admin only thing but<br>[40:05] the way that you have to register them<br>[40:07] um the way that I'm actually registering<br>[40:09] these I can show you the code that's uh<br>[40:11] doing it. Uh command pallet I I'm I'm<br>[40:14] actually registering it on the admin in<br>[40:16] Q scripts hook. The reason being because<br>[40:19] inside of my JavaScript I have these two<br>[40:24] commands that are being that will get<br>[40:26] run in any JavaScript like in any page<br>[40:29] and then this render plugin will only<br>[40:32] fire in in a place where there there is<br>[40:34] actually where it's set up to accept<br>[40:36] that particular way of approaching<br>[40:38] things. So you could specify that. Now<br>[40:41] in in inside of definitions of commands,<br>[40:44] which is not new to 6.9, you can do<br>[40:46] things like that. There is sort of a<br>[40:47] priority thing. You can have conditional<br>[40:49] commands. It's kind of beyond the scope<br>[40:51] of what we're talking about today, but<br>[40:52] you can do things where like if you're<br>[40:54] in the site editor, uh you know, you<br>[40:56] shouldn't be able to insert post<br>[40:58] content, for example. It's kind of a<br>[41:00] contrived example, but there are ways of<br>[41:01] defining your commands that uh make them<br>[41:04] disabled in certain contexts. So that's<br>[41:06] that that would be how um that that<br>[41:09] would be how you would you would control<br>[41:11] that. And I do agree having a logged in<br>[41:13] user being able to access the commands<br>[41:15] from the front end might be pretty cool.<br>[41:16] So maybe that's uh version 1.1. I don't<br>[41:19] know.<br>[41:19] >> Yeah.<br>[41:22] So<br>[41:24] >> I think we're good on questions.<br>[41:26] >> Okay. Uh in what's the last thing in 6.8<br>[41:29] the blockbinding is not working with<br>[41:30] post metatype because the paragraph is<br>[41:33] type string.<br>[41:35] Oh, sorry. That's not really a question.<br>[41:39] >> No. Does 6.9 support post metatype<br>[41:42] number bind with paragraph? I think you<br>[41:44] had to do the thing where you had to<br>[41:45] like transform it into a string, a<br>[41:47] number into a string.<br>[41:48] >> Yeah. So, post meta by by default for<br>[41:51] the mo uh a lot of post meta is<br>[41:54] interpreted as a string. So, you'll have<br>[41:56] to see how that works. Um and it could<br>[41:58] also Yeah. So, I think this is more of a<br>[42:01] type coercion issue than a bindings<br>[42:03] issue. Um, but it's definitely something<br>[42:05] that that should be able to be accounted<br>[42:07] for. Um,<br>[42:08] >> also the paragraph is stored in post<br>[42:10] content. Well, paragraph content is<br>[42:14] stored in post content as a string. So,<br>[42:16] >> yeah. So also you might run into like<br>[42:19] sometimes I've seen this in some things<br>[42:21] where you have like the input field<br>[42:22] that's being stored or the number<br>[42:24] selector that's being stored like on in<br>[42:25] the the inspector sidebar and sometimes<br>[42:28] even though you're putting a number in<br>[42:29] it gets it gets retrieved as a string<br>[42:33] and then saved as a string. So you get<br>[42:35] these like weird like oh no I put 10 in<br>[42:36] but it's actually 10 in quotes when it<br>[42:38] gets<br>[42:39] >> sure<br>[42:39] >> processed you know. So so yeah you might<br>[42:41] just need to be very explicit wrap it<br>[42:42] inside of a number um function stuff<br>[42:45] like that. Um, I'd be happy to take a<br>[42:47] look at any code that you have um to<br>[42:49] kind of get around that issue. Um,<br>[42:51] thanks for the uh the question comment.<br>[42:55] Um, okay. So, I think that's it for<br>[42:57] black block, sorry, command pallet.<br>[42:59] That's that's where I am right now. And<br>[43:01] the next thing I wanted to talk about is<br>[43:02] the interactivity API. So, um, I highly<br>[43:06] recommend you go and read all the field<br>[43:08] guide notes on this. There's not a huge<br>[43:11] amount of changes. Um, there's one thing<br>[43:13] that's a really nice one. I might just<br>[43:14] zoom that in a little bit. So we um<br>[43:18] there is a a new piece to the directive<br>[43:21] that is is is now possible. It it is the<br>[43:24] unique identifier. And so it's separated<br>[43:27] by three dashes followed by a unique ID.<br>[43:30] Now the reason that this is important is<br>[43:32] because there are times where you may<br>[43:34] want to have multiple like in the<br>[43:35] example here you have multiple watch<br>[43:37] statements or multiple um actions uh<br>[43:40] callbacks being run to to watch various<br>[43:43] things um which is completely possible.<br>[43:45] You might have one that wants to watch<br>[43:47] that you know if a string changes you<br>[43:48] want you might want to have one watch<br>[43:50] whether or not a menu is open. Who<br>[43:51] knows? But it's not valid HTML to have a<br>[43:54] data attribute with the exact same name.<br>[43:57] So adding this again this is just a<br>[43:59] quality of life thing but this is going<br>[44:00] to make your HTML more compat or um<br>[44:04] valid is the word that I was escaping to<br>[44:06] me. So there's that one which is very<br>[44:08] very<br>[44:08] >> quickly Ryan<br>[44:09] >> would you be able to provide like a a<br>[44:11] twominut explanation of what the<br>[44:13] interactivity API is if anybody watching<br>[44:15] is not<br>[44:16] >> sure yeah sorry. So the interactivity a<br>[44:18] API is a standardized way of adding<br>[44:20] front-end interactivity or interactions<br>[44:23] to your blocks. That's that's kind of<br>[44:25] the elevator pitch. So, you know,<br>[44:27] instead of reaching for a library like<br>[44:28] jQuery or like masonry or like insert<br>[44:32] slider gallery name here, you can<br>[44:33] actually build it out using a<br>[44:34] standardized um WordPress first system<br>[44:38] that's based in directives and that's<br>[44:40] what these are. So, these these are<br>[44:42] what's referred to as directives. If<br>[44:43] you're familiar with AlpineJS,<br>[44:45] um you'll know what what that means. But<br>[44:47] what this is doing is this is processed<br>[44:49] on the server and then the this the<br>[44:51] system kind of takes over and it<br>[44:53] connects data and interactivity to all<br>[44:55] of these directives um for your blocks<br>[44:59] and it's super powerful. You can have<br>[45:00] blocks talk to each other, you can have<br>[45:02] blocks that are completely composable.<br>[45:04] So as opposed to having a big React<br>[45:07] application you're rendering inside of a<br>[45:09] single div, you can now put all of your<br>[45:10] interactive blocks into a template and<br>[45:12] move them around as needed and all that<br>[45:14] interactivity still works. um you can<br>[45:16] build some pretty pretty um fun and very<br>[45:19] cool UI experiences with that on the<br>[45:21] front end. So hopefully that's<br>[45:24] >> Yeah, it's great<br>[45:25] >> demo.<br>[45:26] >> Yeah. Um<br>[45:29] Okay, cool. All right, so Oh, and the<br>[45:31] other thing is so there's this fun<br>[45:33] little thing called attach to. Um, and<br>[45:35] so what this does is, um, you know what,<br>[45:38] maybe I don't have I don't have the, um,<br>[45:41] sorry, I don't have the dev the dev node<br>[45:43] up, but the interactivity router package<br>[45:46] allows you to to uh, basically create<br>[45:49] sort of like a client side navigation<br>[45:51] experience. So you can create single<br>[45:52] page applications. We we we've seen<br>[45:55] examples where people have created<br>[45:56] plugins to do all of the page<br>[45:59] navigations on the admin. I think Felix<br>[46:01] Arn did did one where he replaced all of<br>[46:03] the animation in 2024 with the<br>[46:05] interactivity a API and so like your<br>[46:08] page transitions are all automated and<br>[46:09] any it's very very cool but one thing<br>[46:11] that you can now do is you can define<br>[46:13] this thing called a router region and so<br>[46:15] if you have two pages and you have a<br>[46:17] router region with the same name you<br>[46:19] click on a link and the a the API will<br>[46:22] look at what the new page is pull the<br>[46:24] the content from that region and then<br>[46:26] and then replace the current pages<br>[46:29] region with that content. So that's<br>[46:31] pretty cool. But now we have the ability<br>[46:33] to add things to to the page as well.<br>[46:35] It's um it's called uh um let me just<br>[46:38] actually show you the code maybe a<br>[46:39] little bit. Sorry, bear with. So in um<br>[46:42] in here, you're going to define a router<br>[46:45] region with an ID and then this property<br>[46:48] is attached to. So what this is meaning<br>[46:50] is this is going to say I want you to<br>[46:52] attach the content of this router region<br>[46:54] to whatever CSS selector that we put in<br>[46:56] here. So in my case, I'm I'm doing one<br>[46:58] where I'm going to attach this to the<br>[46:59] body. And it's a very very contrived<br>[47:01] example, but basically what happens is<br>[47:04] you would get to this page. You would<br>[47:05] say, "Oh, I I want to see the overlay<br>[47:07] message." And you click on this message<br>[47:09] and it will overlay it will basically<br>[47:11] pull that markup in. Now, I've done all<br>[47:13] this all this, you know, styling and<br>[47:15] stuff and everything in here, but this<br>[47:17] is, you know, could be used as like a, I<br>[47:18] don't know, cookie consent or some sort<br>[47:20] of overlay or whatever. And then you can<br>[47:22] you can remove it and it actually just<br>[47:25] just moves to that page. So, it's I mean<br>[47:27] it's a pretty cool thing. Um I'm excited<br>[47:29] to see what people are going to do with<br>[47:31] this. Um but yeah, it's it's something<br>[47:33] that I nerd I nerd I nerded out on this<br>[47:36] particular example for about two hours<br>[47:38] yesterday trying to figure out a really<br>[47:39] fun way of showing this stuff. So<br>[47:41] anyways, it's one of my most favorite<br>[47:43] things.<br>[47:43] >> And I think that the most important<br>[47:44] thing here is that this is WordPress<br>[47:46] core, right? You're not pulling in<br>[47:48] another package or another library<br>[47:49] somewhere. This is<br>[47:51] >> Yep. It's all WordPress core. You don't<br>[47:53] even need to import these packages to<br>[47:55] your project uh because of the uh um the<br>[47:58] the um scripts. I'm sorry, the word the<br>[48:00] word. Oh my god, the dependency<br>[48:02] extraction plugin. Thank you. That's it.<br>[48:03] So, you don't even need to to add this<br>[48:05] to your your JavaScript project. So,<br>[48:07] it's really really really fun stuff. Um<br>[48:10] yeah. Um how are we doing for time?<br>[48:12] Okay. Okay. So, for the last thing that<br>[48:15] I might get to is the abilities API. So,<br>[48:17] the abilities API, I would I'd recommend<br>[48:20] go and reading the dev note. So if<br>[48:22] you're if you're if you're not familiar<br>[48:23] with it, it is the first step to a AI<br>[48:26] enabling WordPress core. So abilities<br>[48:29] are so what's gone into core now uh or<br>[48:33] for 6.9 is the is the ability to<br>[48:35] register abilities. So which is going to<br>[48:38] be one of those notes and notes things.<br>[48:40] Um so we can we can create basically we<br>[48:43] you can think of it as a way of adding<br>[48:45] new features to to WordPress that it<br>[48:47] doesn't have. So, um, Jonathan Bosinger,<br>[48:49] who is a a colleague a colleague of ours<br>[48:52] and is deep into the AI thing. I met<br>[48:54] with him this morning and he, um, he<br>[48:56] gave me some really, really cool<br>[48:58] examples to show. So, it's hard to demo<br>[49:00] this because the intent of the abilities<br>[49:03] API is to work with AI tools, is to work<br>[49:05] with like an LLM or work with, you know,<br>[49:08] via MCP, which is a whole another<br>[49:11] acronym that you should learn, is um,<br>[49:13] you know, connecting to your IDE. So you<br>[49:15] can work with your code to talking to<br>[49:17] your website, returning post content,<br>[49:19] doing whatever you want to do, but it's<br>[49:20] very hard to demo. So I wanted just to<br>[49:22] show some of the things that Jonathan<br>[49:26] has uh because he has this really really<br>[49:28] cool demo plugin. So the first So he<br>[49:29] wrote this thing um where is it? It is<br>[49:32] called APIs abilities demo. So what he's<br>[49:35] done is he's registered a number of<br>[49:37] abilities basically adding some<br>[49:39] functionality to WordPress. So he's got<br>[49:42] the these examples. So he can return<br>[49:44] information about the site. So we have<br>[49:46] site name, the URL, the active theme,<br>[49:49] all these plugins, so on and so forth.<br>[49:50] The the WordPress version, which is<br>[49:52] released candid 3. Side note, I updated<br>[49:54] this just before the demo. So you know,<br>[49:57] I like to live dangerously. Um, you can<br>[50:00] retrieve a plug-in list and all that<br>[50:01] stuff. Now, some of you on the call<br>[50:03] might be saying, um, you know, I can do<br>[50:06] this with WPCLI. I can do this with REST<br>[50:08] endpoints. Like this is not new stuff.<br>[50:10] and you're right. But what you can do is<br>[50:12] things like this. So Jonathan's got this<br>[50:14] debugged log reader. So you can actually<br>[50:16] read the contents of your debug.log if<br>[50:18] you're not Oh, and this is because I'm<br>[50:20] an excellent developer that it is so<br>[50:21] full of errors right now. But um what<br>[50:24] what this is doing is in in WordPress<br>[50:27] development when you're developing<br>[50:28] locally, you would typically enable the<br>[50:30] ability to have your debugs or your<br>[50:32] errors spit out into a debug.log file.<br>[50:35] So, this is reading that file in real<br>[50:37] time and and and giving me the feedback<br>[50:40] of the error, which is really great<br>[50:42] because sometimes if I get an error, I<br>[50:43] have to jump over here. I got to go find<br>[50:45] my um I have to go find my debug log,<br>[50:48] right? And I have to look at this and<br>[50:49] then I I I you know, so it's a you know,<br>[50:51] it's a nice thing. You can even clear<br>[50:53] it. You can create post. Now, here's a<br>[50:55] really cool one. So, I can get my list<br>[50:58] of plugins from up here. Sorry, I got I<br>[51:00] have to I have to tell Jonathan we have<br>[51:02] to be able to toggle these closed. And<br>[51:04] what I want to do is I want to get a<br>[51:06] plugin. So I have a plug-in list. I'm<br>[51:08] gonna scan the plugin that I wrote for<br>[51:10] this particular<br>[51:12] um demo, which is right here. And I'm<br>[51:14] going to put it into this plug-in<br>[51:16] security check. So this plugin requires<br>[51:18] the PCP, the plug-in check plugin. Um<br>[51:21] and so I'm going to scan this and it's<br>[51:23] going to give me a fe it's going to give<br>[51:25] me all the feedback that I would need to<br>[51:27] Oh, look at that. It's perfect.<br>[51:30] >> You're brilliant, right?<br>[51:31] >> I don't think that's right.<br>[51:34] Let's grab my custom block one. I have a<br>[51:36] custom block plugin as well. So this one<br>[51:38] I think has got a bunch of errors in it.<br>[51:39] But anyways, so if there's errors it,<br>[51:41] you know, we can run Oh, there we go. So<br>[51:43] I I've got some stuff. So all all output<br>[51:46] should be run through escaping plugins.<br>[51:48] I purposefully injected all of these<br>[51:50] errors into the the code. So this is<br>[51:53] giving me like a real like this is<br>[51:55] exactly what would be run if I were to<br>[51:56] update this or if I were to submit this<br>[51:58] to the directory. And all I need to do<br>[52:00] is have this installed. So, what's cool<br>[52:02] about this is like this is a UI, but you<br>[52:05] can actually have this run directly on<br>[52:07] your site. You like there's a lot of<br>[52:09] things that that the abilities API sort<br>[52:11] of enables. One more thing is<br>[52:14] >> and you could hand this off to AI too,<br>[52:15] right?<br>[52:16] >> Absolutely. Yeah. So, you could have<br>[52:18] Yeah, you could have AI like you could<br>[52:20] you could scan it and then you as part<br>[52:22] of the output you could say, "Okay, now<br>[52:23] chat GPT tell me is this real or not?"<br>[52:25] Like, you know, like do I have false<br>[52:27] positives? Things like that. Uh Tammy<br>[52:29] Listister also has a a really cool<br>[52:31] plugin about um that it's called the<br>[52:33] ability explorer where you can look and<br>[52:35] see at all the abilities that are<br>[52:36] registered. So we have things like<br>[52:37] create post um and uh delete plugin and<br>[52:42] core. So all of these core uh prefixes<br>[52:44] ones I believe are are added by like are<br>[52:47] part of core already and so you can view<br>[52:49] these and you can test them. So if we<br>[52:50] want to look at the debug reader we can<br>[52:53] re we can re we can see it we can see<br>[52:55] what the input schema is what the output<br>[52:57] schema is. So this is a really great<br>[52:59] tool for learning about the abilities a<br>[53:00] API because this is actually how you<br>[53:03] define all of this stuff. So it it takes<br>[53:05] an input and what it should return and<br>[53:07] the raw data and things like that. So um<br>[53:11] kind of beyond what we're what we're<br>[53:12] talking about today, you know, it's a<br>[53:13] bit of a deep dive into code. Um the<br>[53:16] code is extremely verbose. Like if we<br>[53:19] were to look at let's see the plugins<br>[53:20] one, you can see there's a lot a lot<br>[53:22] going on here. Um, so for the next hour<br>[53:25] I'm going to go line by line and we're<br>[53:27] going to discuss exactly what each one<br>[53:28] of these things does and you'll all fall<br>[53:30] asleep and never come back to one of my<br>[53:32] streams again. Um, yeah, I don't know<br>[53:35] how much time how we doing for for for<br>[53:37] time.<br>[53:38] >> We're pretty good.<br>[53:39] >> Okay, that was kind of it. There's a a<br>[53:42] number of new things that I just want to<br>[53:43] kind of mention. Um, one thing is we<br>[53:45] have this new streaming block parser in<br>[53:47] 6.9. This is one that's really hard to<br>[53:49] demo, but it's super powerful when you<br>[53:51] need it. uh being able to pull uh block<br>[53:54] content out from the post to do<br>[53:55] something with it and put it back.<br>[53:57] That's really really cool. I'd highly<br>[53:59] recommend reading that. Sorry, I'm going<br>[54:00] to cough. Just one sec.<br>[54:03] Pardon me. Um another thing that I<br>[54:07] wanted to mention is we have a number of<br>[54:08] new hooks and filters coming. We have<br>[54:10] eight new hooks, 13 new filters. Uh we<br>[54:13] have uh where is it? Uh I guess I don't<br>[54:17] have it. So we also have some output<br>[54:19] buffering going on for um Oh, wait.<br>[54:20] this. Sorry, all over the place. Here we<br>[54:24] have output buffering for rendered<br>[54:25] templates. So, block themes have a a way<br>[54:28] of output buffering, which is a way a<br>[54:30] great way for performance to not have to<br>[54:32] rerender the page every single time. And<br>[54:35] there's a whole bunch of of more smaller<br>[54:38] items like quality of life things. I'm<br>[54:40] sure there are things in here that are<br>[54:41] going to excite the developer community<br>[54:43] that are on this this stream that I<br>[54:45] haven't mentioned and uh I apologize for<br>[54:47] that, but you know, it's very uh there's<br>[54:49] lots and lots of really cool stuff<br>[54:50] coming. So, highly recommend that you<br>[54:52] read the field guide, which just came<br>[54:54] out today. I'm going to link that into<br>[54:57] the the um the chat there. I think I did<br>[55:01] earlier, but I'll I'll I'll do it again.<br>[55:02] And also, the Gutenberg Times has the<br>[55:05] source of truth, which is the 6.9<br>[55:07] WordPress source of truth. and you<br>[55:09] should read that as well. It it's going<br>[55:12] to be a lot of the same in information,<br>[55:14] but this is a document that um helps to<br>[55:17] get the information out.<br>[55:20] Cool. And I think with that, I'm pretty<br>[55:22] much wrapped up with my<br>[55:25] >> portion. So,<br>[55:26] >> that's great.<br>[55:27] >> We have any questions or<br>[55:29] >> No, no, no additional questions that I<br>[55:31] saw. I think that as we kind of reflect<br>[55:33] on what we showed today, there's a lot<br>[55:35] of new functionality, whether it's<br>[55:37] notes, you know, abilities API,<br>[55:40] additional improvements to new tools and<br>[55:44] also additional improvements to tools<br>[55:46] that kind of set the stage for 7.0.<br>[55:51] Um, we're going to see more improvements<br>[55:52] to the showing and hiding content. We're<br>[55:55] going to see more improvements to notes.<br>[55:56] We're going to see more improvements all<br>[55:58] the APIs Ryan showed. Uh and so<br>[56:01] I don't know this this this uh release<br>[56:03] really excites me for what's coming next<br>[56:05] in 2026 uh with WordPress which likely<br>[56:08] would be also a lot of AI related<br>[56:10] things. I mean AI taken over the tech<br>[56:12] space so I don't know<br>[56:15] >> well there's the one thing so so there<br>[56:16] is a JavaScript library that that was<br>[56:19] with the ability API and it didn't make<br>[56:20] it in to 6.9. So I would imagine that<br>[56:22] that's probably going to be top of list<br>[56:24] to get into 7.0. I don't know what the<br>[56:27] actual like I don't think the actual uh<br>[56:29] road map has been defined yet but I<br>[56:30] would imagine that's a pretty big deal<br>[56:32] to get that in because um one thing that<br>[56:34] you can that you'll like the one missing<br>[56:36] piece and there was a demo that I had<br>[56:38] with an older uh plugin that that that<br>[56:41] created a chatbot so you could actually<br>[56:43] ask it to like you know in insert<br>[56:44] content and and whatnot but it was a bit<br>[56:46] of an older implementation so it didn't<br>[56:48] work so I couldn't get it to go but to<br>[56:50] do those sort of things you have to<br>[56:51] write that all all yourself right right<br>[56:53] now so I'm hoping that the JavaScript<br>[56:55] API uh will sort of make a lot of that<br>[56:57] simpler um and uh you know enable<br>[57:01] developers to create some really unique<br>[57:03] experiences in the admin.<br>[57:05] >> Yeah, it's very exciting. So release<br>[57:08] candidate 3 came out today. Go check<br>[57:10] that out and you can see everything that<br>[57:11] we talked about today uh in in that<br>[57:13] release. Um, and the official release<br>[57:16] will be coming out next week.<br>[57:19] >> Next week. And it'll coincide with State<br>[57:21] of the Word, which is happening. It's<br>[57:22] going to be live stream from San<br>[57:23] Francisco. Um, at I you know what? I'm<br>[57:27] going to link the I'm going to link the<br>[57:31] page. I believe it is being streamed at<br>[57:35] uh the stream starts, I believe, at noon<br>[57:38] um on like uh local time. So, that would<br>[57:41] be I don't know what that is UTC off the<br>[57:44] top of my head, but I know it's uh like<br>[57:46] 3 pm Eastern, I think.<br>[57:48] >> Y'll be live streams and it'll be<br>[57:50] recorded. So, if you miss it, you can<br>[57:51] catch it later.<br>[57:52] >> Yeah, for sure.<br>[57:54] >> Yeah, that'll also provide a good look<br>[57:55] at like what's coming in 2026. So, it'll<br>[57:57] be kind of a celebration of everything<br>[57:59] that happened this year, but then also<br>[58:00] kind of a look ahead. So, as much as uh<br>[58:02] Ryan and I provided a little bit of a<br>[58:04] look ahead, that'll be a better, more<br>[58:06] official look ahead. Yeah, there'll be<br>[58:08] lots of demos and lots of cool things<br>[58:10] and Matt talking. So, yeah.<br>[58:13] >> Um, and thank you. So, thank you all for<br>[58:15] any everyone that watched and if you're<br>[58:16] watching this recording later, uh, thank<br>[58:18] you. And if you have any questions, you<br>[58:20] know, Ryan and I are very accessible<br>[58:22] either on X or Blue Sky or wherever,<br>[58:24] feel free to reach out to us.<br>[58:26] >> Yeah. And if you liked what you saw<br>[58:27] today, just be sure to give a thumbs up,<br>[58:30] subscribe to the channel because we're<br>[58:31] going to be trying to do more of these,<br>[58:32] get more content out. this is um you<br>[58:34] know and we need to we we need the<br>[58:35] feedback to know that we did a good job<br>[58:37] or there are areas that we can improve<br>[58:39] on maybe. So uh yeah, but thanks so much<br>[58:42] for hanging out with us today. Uh it's<br>[58:44] been it's been a lot of fun.<br>[58:46] >> Go and test out 6.9.<br>[58:49] >> Yeah. All right.<br>[58:51] >> Have a good day everyone.<br>[58:54] Thanks everybody. <!-- deep-read:sections end --> ## ๐Ÿ“บ Video ![](https://www.youtube.com/watch?v=gVaEg_m6uak) --- # ๐Ÿ“„ Full Transcript *Auto-generated from YouTube captions ยท timestamps roughly every 30 seconds ยท [watch on YouTube](https://www.youtube.com/watch?v=gVaEg_m6uak)* **[00:00]** Uh, welcome everybody to the 6.9 live stream, WordPress 6.9 live stream here on the WordPress.com YouTube channel. Uh, we're going to kind of go over some of the main features of the release and as well as some userfacing stuff and as well as some developer facing stuff. I'm joined by my co colleague Ryan Welchure. Ryan, would you like to introduce yourself? >> Sure. My name's Ryan Welchure. As Nick just said, I'm a developer advocate at Automatic. Um, you may have seen me on the interwebs as Ryan Welter Codes, uh, where I do live streaming and stuff on on YouTube. I like to focus in the **[00:31]** custom block development sort of area of things, but uh, yeah, I'm super excited to share the cool stuff that's coming 6.9. >> Yeah, but you got to tell us how you're involved in 6.9. >> Oh, right. I'm actually um, a co- triage release lead this year. So myself and Aki Hammano who is um a phenomenal core contributor has been been keeping the lights on for uh for a long time. We are uh doing the the triaging of issues for both core and for Gutenberg. So our job is to see the issues that that have been **[01:02]** um milestone for 6.9 and uh talk with the developers and and um core committers to see if they're going to make it in. And at this point, we uh actually just released release candidate 3 for WordPress 6.9 that went out. It went live I think about an hour ago. So if you are following along at home, you should update your uh your sites. Um and uh well, you should test the release candidate 3 because um next week we will be releasing uh WordPress 6.9 uh on December 2nd and uh that's going to **[01:32]** coincide with state of the word which is super exciting. It's never been done before where we have a state of the word and a major WordPress release all in the same day. Nothing will go wrong. It will be amazing. [laughter] >> That will be great. And I think that there's a lot of great features both for users and developers in this release. And so kind of what we wanted to do today is just give you a preview of what's coming. I'm going to kind of focus on maybe the more user uh focused things uh and then Brian's going to take take the lead on the developer stuff. **[02:04]** So, uh, you can kind of see a a list in the sidebar there of kind of how we're going to go through things. If you have comments or questions, please feel free to add them there on YouTube, and we will address them as we go through things. Uh, one more thing to note is that the WordPress 6.9 field guide was just published again not too long ago, maybe an hour ago. So, if you go to make.wordpresscore, you'll be able to find that field guide where you'll be able to dig into like the the nitty-gritty details of kind of what we talk about today. Also, we're only going to be talking for about an hour, so there are things that we won't **[02:35]** be able to cover, but check out that field guide for for all the details. All right, I think we're ready to get into some of these userf facing stuff in 6.9. So, we'll switch over to that view. All right, so I created this little demo with the help of some of the folks who are working on 6.9. It's very basic, but hopefully it gives you a flavor of some of the cool features that are that are in the release. So, we have a fictitious **[03:06]** website for this person who's both a photographer, a designer, and a mathematician. You'll understand why mathematician in a bit. Um, but it's pretty simple site. We have some nice layouts here. So, the first kind of banner feature of 6.9 is notes. So, think of Google Docs. You can add comments uh on blocks that other people on your website, other users in your website can see and they can also add their own notes. So, let's head on over **[03:36]** to the editor here. And here we are. And as we scroll down, we see our page. And if you look closely, there's this little notes button up here. So, if you click on the notes button, this is your notes panel. Let me zoom in a little bit. can click here and you'll see that I asked Ryan what he thought of the hero of this page. And he said, "Let's use a different one." So, [snorts] we're going to see uh a lot of comments from Ryan as **[04:07]** we progress through this uh this demo, but it shows you how nice it is. So, if you're working with colleagues or maybe you're working with clients, you can provide, you know, maybe a staging site to those to those individuals. They can provide notes on the work and then you can address those. So Ryan's saying let's use a the desert one. So we can just go to our media library and we can pick this one. And once I'm once I've addressed the **[04:38]** issue, I can say fixed it. Hit reply. And then kind of like other applications, you have the ability to resolve. So we can just resolve that. So I've resolved Ryan's comment there. Now, as we scroll down the page, uh, we're going to see some additional notes here. Again, more notes from Ryan about replacing images and updating things, and we can, you know, make those updates as we go. This is kind of the initial implementation of notes, and I think you'll see or block notes, and you'll **[05:09]** see a lot more of this, uh, functionality in the future. You know, this is kind of part of that collaborative editing milestone for WordPress. Uh, and we're really excited to see how people use it. I'm finding it pretty fun, especially with, you know, I, you know, building sites for, you know, friends and family and parents and they run into a problem, they can just add a note and say, "Nick, fix this. [laughter] Answer this question for me." So, try out notes. Especially useful when you're working with others. Um, the next thing that I wanted to show you is, and this **[05:40]** is this is a bit of a quality of life thing, but it's something that if you ever worked with galleries in WordPress, you probably ran into. Um, before we look at this gallery, I'm going to flip over to this view in playground. This is, let me zoom in a little bit. This is WordPress 6.3. So, this is the the stable release of WordPress that you you have on your own website right now. And if we're in this gallery, let's say that I want to change the aspect ratio of these images. The only way to do that right now would be to pull the images. **[06:13]** We can copy the pull the images out, adjust the aspect ratio to square, and then you'd have to drag them back in. That's kind of how you would do that approach, and it's kind of funky, and there's some issues with it. Well, luckily, that's been changed and fixed in WordPress 6.9. So, if we come back over to our gallery here, we can click on the gallery view, go over to our sidebar. me zoom in a little bit more and we can just adjust the aspect ratio for all of our images very easily right **[06:45]** from the sidebar. So again, not the biggest change, but a really nice quality of improvement uh quality of life improvement uh that if you're using galleries a lot, you'll you'll hopefully uh appreciate. The next thing which is kind of subtle is that there are some pretty big improvements into drag and drop. So again, if we go back to 6.3, let me just undo this a little bit. When you would drag and drop, let's say, this image, you get this little black box and you'd get these little blue indicators **[07:18]** of where you're dropping the image. And this worked okay, but it was still a little bit hard to use. Again, that's been improved in 6.9. Keep clicking the wrong thing. So now if we're in this gallery and we drag, you can see that I'm actually dragging the image. We're in 6 uh 6.8 um you weren't. So there we go. We're dragging the image like this. It makes it just a lot easier to to move blocks around the canvas. And you can do this with other things as well. So if we **[07:49]** drag this whole element, you can see it's dragging with me. And then we can drop it. So hopefully that improves the way you manipulate elements in the canvas in WordPress. All right, the next thing which is near and dear to my heart, um some of you may know I've I I've built a plugin around showing and hiding content and I'm so happy that the first iteration of it has been added to WordPress core. What I mean by that is when you have a block, **[08:20]** let's say that let's go back use this gallery as an example. Let's pretend that maybe we're not 100% sure, maybe we're still working on this gallery, but this page is live on my website. You now have the ability to hide this content. You can think of it like staging content. So, if you have a page, you know, your homepage of your site, it's currently live to the public, but you want to start making changes. Maybe you're getting ready for Black Friday and you're starting to build out your Black Friday deal. Or maybe it's a **[08:50]** seasonal promotional banner that you're working on, but it's not quite ready. Previous workflows without plugins was you would kind of create those elements maybe on a on a draft page, and then you'd copy them into your live page whenever you were ready to make it public, and then you click save. The hide functionality is really, really useful because I can just hide this gallery. I can click save. And if I view the front end, **[09:21]** the gallery is no longer there, but it's still saved in post content. So, I can go to my uh sidebar here, and you can see that the gallery here is is in the post content. So, I can come back here and make edits to it. All you need to do is show it, and I can make my changes. And then if I'm ready to make it public, I can click save and publish it. It's really handy when you're kind of managing a lot of content, especially on on live pages. So I encourage this again, this is kind of **[09:52]** the first iteration of, you know, showing and hiding content in WordPress core. Uh there are some plans uh to extend this further in WordPress 7.0 next year. Um, so we're excited to kind of see how this goes, but this implementation kind of lays the framework for the functionality. >> Nick, just before you move on, there are some questions in chat. Did you want to wait till the end of um all your stuff or do you want to sort of address them now? >> Yeah, let's go through them. >> Okay, so the first question uh that I'm **[10:23]** seeing is from uh Dejan Burick and it says, "Hello everyone. No one is is mentioning the new 2026 WP theme. When it will it be implemented? Uh there will not be a 2026 theme released with this version of WordPress. Um so that answers that. Uh Rich Neighbor had a question about the notes. Is notes control always available in the editor header >> up here? Yep. Um so this is how you can access notes. You can also access notes at the block level. So let's go to a block that doesn't have a note. So this **[10:53]** paragraph for example, if you click the little options menu, you can see the option to add a note. Um, so that's how you access those. >> Cool. Uh, next question is from Elliot Richmond WP. Hello Elliot, how's it going? Um, do users get notifications when a note is submitted? As in user one added a note for user two? So when I gave all my horrible feedback to you, would you get um, notifications on that? >> That is a great question that I should know the answer to and and I do not. Ryan, do you happen to know? **[11:24]** >> I don't know. I would imagine it's it's I mean it makes sense but I don't uh I don't know off the top of my head. It's it's um it's a feature I'm not that familiar with. lot a lot of features coming in this release but the field guide have those details for you but I do want to note that again this is kind of the initial implementation of notes uh in core and so things like notifications things like you know additional functionality uh in notes um provide that feedback and more will be coming in 7.0 **[11:55]** Cool. The last question is uh been addressed in chat, but I want to call it out as well. Does WordPress 6.9 come with the icon block? Uh we need icon with menu items. Uh unfortunately, it is not going to ship with 6.9. It was something uh that Nick knows all about because it was basically his block and I was working on the poll request for it. Uh but it just didn't uh didn't get but uh wrapped up in time. So aiming for 7.0. Um, >> but I want I want to say Ryan put in a huge amount of good work in terms of prepping that pull request for inclusion **[12:27]** in core. Um, as with any bit of code that goes into core, a lot of thought, you know, needs to go into it to make sure it's, you know, solid for the millions of people that, you know, are using are using the latest release. So, and to get into the weeds on it just a little bit, Nick, not to hijack, but uh the reason it didn't make it in was because the controls that it requires um we needed to build them in a core first way, meaning that like a block supports would have things like width and height and stuff like that. So, those those don't exist. So, it was sort of we **[12:57]** needed to get those pull requests done before we got the other pull request done and they just sort of added up. But, um it's definitely something that I want to work on personally. And uh yeah, anyways, but I will let Nick get back to his presentation. starting. >> Yes, we icons would be great and I think that we're we're on a good path for that. The next thing that has been a a very common request in core are accordians. So now we have an accordion block and we can let's look scroll down on our list view here. We can see it. So **[13:27]** this is a an accordion block that's now available in 6.9. Uh, and so you'll have you'll have a accordion parent and then you'll have an accordion item for each item inside of the accordion. If we click on the accordion here, we can see that it has some settings for autoc close, show icon, position, where you want the icon to show. Um, on the WordPress developer blog, a colleague of ours, Justin Tablock, wrote a great article about how you can style accordians using theme.json **[13:58]** and CSS. So, I would encourage you to check out uh that article if you're interested in, you know, modifying and extending the accordion block for your own designs and your own client needs. But you can click here and we can see that it opens up. I added a a little border background. So, these are all blocks, so you can style them as you normally would with a block with typography and background and so on and so forth. And you can click on these and they all open up uh as you'd expect. So, really excited to see that. That's been something that folks have asked for for for quite a long time. **[14:31]** All right, so the next thing we're going to kind of move out of this single page and we're going to look at a couple new things. One of them is another highly requested block and that is the time to read block. So, what I'm going to do is I'm going to go edit this page here. And you'll see that when my query loop loads here that we have this little block here called time to read. This block has actually been in the Gutenberg **[15:01]** plugin for quite some time. It just took a little while to go from experimental to stable. It is now stable. And so, this is a little block that you can add within query loops or on post pages. uh and it will calculate the time to read based on the word count. So, pretty simple little block, but it's really handy and a lot of, you know, a lot of sites have it and usually you'd have to rely on a thirdparty plugin or build one your build one yourself and now you can just do it right in core. You have all the the design options that you normally would, typography, **[15:32]** colors, that sort of thing. Um, the next one, which is is a pretty pretty fun one, uh, I haven't really figured out how I'm going to use it myself on my own sites, but it's definitely great for creatives and people who want to have expressive websites. And that is, you know, what we're calling stretchy text, but it's also fitting text to a container. So, here I just have a title that's an H1, but let's pretend that I wanted to have this word research kind of expand the whole width of the page. Before you need **[16:04]** to, you know, you'd have to have some custom CSS. It was a little tricky to do. But now what I can do is I'm just going to do an H1. We'll do research. And um Oh, I clicked the wrong thing. Okay. Sorry about that. When we go to headings um Okay. Yeah, sorry. When we have our heading, we'll do an H1. We'll make it **[16:34]** nice and big. Uh, let's just do extra large. Let's just do four. Okay. You can change the style of the heading. If you click here, you'll see stretchy heading. And you can do this with paragraph as well. And what this does, we're going to click on it. And we have, let's see here. This should be full width. There we go. Now, this heading is going to expand to **[17:08]** the container of this cover block. So, if I was to look at this on tablet, you can see what this There we go. On mobile, it gets smaller and on desktop, it gets nice and big. So, you can use this in many different ways creatively, but let's let's even look at it a little bit more. We can back to tablet refresh here. Okay. So, that's how you kind of mess with the the stretchy text **[17:38]** and I'm excited to kind of see how people who people want to use that. Now, the last thing that I'm it seems very niche, but as somebody who took a lot of math courses in school and had to write latte um equations, this next feature is is is really exciting to me and it also looks really cool. So, let's go out to our main site and we're going to go to the research on the front end. And again, I said that this person was a mathematician for whatever reason, and I had AI help us write some uh posts **[18:10]** around about equations and adaptive image compression models in WordPress. Again, this is completely made up. Um, but let's go take a look at one of these. How about this one? And as we scroll down, we can see that we have these really nice equations that are being presented in WordPress. So, if we come and look at the post, we can see how this works. um you're going to have a math block. So, if you come over here, we can just type in math and you're going to have this little math block that you can **[18:41]** insert. And then it's going to use this may seem foreign to many, but those who are familiar with latte uh uh notation should be familiar with this. And this then generates our nice looking equation here. But that's not all. We also have the ability to add math formatting inside of content. So this C right here, it's currently just inline code, which is, you know, which is fine, but we can dress this up a little bit by **[19:13]** making the C math notation, math formatting. And you can see, take a look at these as well. We have E_X, which gives us this nice E with a with a subscript of X. So, um, again, for any of you out there who are needing to write equations and blog posts, hopefully you'll find this useful. Uh, again, it's it's a relatively niche functionality, but for those that need it, it's actually a lifesaver. Before you had to rely on uh e external plugins. **[19:44]** Any additional questions, Ryan? >> Yep. Rich has been flooding chat with questions, so we're going to get some questions. The first one is about the notes API. Uh, does the notes API enable externally created notes like for an AI leaving notes on your content? >> That's a great question, Rich. I am not sure. >> Um, I would imagine that, and I'm just making this up because that's what I do. uh that you know if you if you were to couple the notes API with the abilities API then you would be able to have your your website be talking to an AI and **[20:16]** then creating a notes there will be an AI to do sorry an a and some sort of API to create notes. So, I can see in the future being that that's something that could be possible, but um right now I don't think it's it's it's it's not in the list of features right now as far as I as far as I know. >> And I think it's Yeah. So, I want to note that I want to note that um the notes here. This is a little hard to see, but you'll note you'll I keep saying note. You'll note that the note **[20:49]** is attached as metadata on the block. So you can hear it says note ID number two. So this information is stored at the block level. Not the actual note itself, but the ID for the note. Um so in theory, there's a lot of additional uh ex things that we can do with notes in the future. Again, this is kind of the first implementation. Um but again it is attached in the block markup to the note that it corresponds to. **[21:19]** >> Very cool. Um okay the next question was do accordians accept the same inner blocks as the details block? >> Yep. Absolutely. So you can put let me go back to that. You can put pretty much anything you want in a an aquarium block. So, if we come down here to our accordion, uh this is just uh you see that I'm inside of this accordion area. It kind of acts as like a group. So, you can put **[21:49]** whatever you want here. So, we can put an image uh really really whatever you whatever you need to put inside of your accordion. >> Very cool. Very cool. Uh next question is, what are the block variations for the time to read block? Oh, that's that's a great question. Um, let's just take a look. This isn't going to make a whole lot of sense because we're on a homepage, but let's do the time to read. And we have oh, word count. So, you can do the time to read or you can display the number of words **[22:20]** uh in the in the piece of content. >> Um, okay. The next question is, is stretchy heading the official block name? Does it only apply to headings? So it is um it's stretchy. So it's it applies to headings and paragraphs. And so you can see here that I'm on a paragraph. And when I go to the if I click on the paragraph, I can transform it into a stretchy paragraph. So stretchy is the is the terminology that's being used to explain this functionality. [snorts] **[22:52]** >> I think it's a good name. It's a fun name. >> Um >> fun feature. Fun name. >> Yeah. As a side note, Rich notes that math block would be fun styled to a handwriting font. That's pretty cool. And you can register a block a style variation for that I'm sure. Um, there's a question from uh Sunny uh one onto podcast. Sorry if I said that wrong. Does the math block support math ML as well as latex a latex? >> So the it generates math ML under the like HTML under the hood. Um, so but **[23:24]** when you go to insert the math block, so we'll just add one here. Uh, it's going to look for this this formatting, this latte formatting. >> Cool. Um, Rich is also asking, "Is the notes API similar to footnotes?" >> Rich is just coming in hot with all the hard questions. >> Yeah, he's got all the tough questions right now. >> I'm not exactly sure on on the footnotes one. Um, >> if I understand it correctly, and I might be incorrect, I think it I **[23:54]** footnotes are stored in post meta and I don't believe notes are. I think they might be stored um as a post type, but I would have to look into the code. I think there's some there is some differences I believe on how notes are are saved. Um but uh if I'm wrong, then just ignore me because I don't want to talk about Okay, I was just going to quickly look here. Yeah, good thing to follow up on. I'm **[24:25]** not 100% sure. Yeah. Okay. Okay. So, that was that question. Um, if you uh So, someone's saying if you copy a block with a note, the duplicate will have the same note link, but there will just be one copy of the note data. That was a question I guess. So, >> that is a great question that I have not actually explored myself here. So, hello there. So, now if we **[24:59]** duplicate our thing here. Yeah. So, you're going to have the the same uh ID attached uh to each node. [snorts] It's important to note, too, that this is still like very much in development. It's not it's not ready for for for prime time yet. Like, it's, you know, there's a lot of features and code and everything that that needs to be addressed. So, >> it's very cool feature that's going to be amazing when it's fully fleshed out. >> Exactly. So don't don't fully expect this to be completely Google Docs uh at **[25:29]** this point. Um but again this is the the first step in kind of making making that happen in the future. So but it is still super useful. Like granted yes I duplicated the block and I see both notes here at the same time but um it is it's still a very powerful feature for getting feedback from colleagues and clients. So do use it. It is it is pretty useful >> for sure. Um, I think that is Oh, wait, wait. Another one from Rich. Is stretchy text only one line? Like would a paragraph stretch on line line **[26:00]** on line line by line? Maybe >> it is one line. Yeah. So, it's stretching everything in your content to the width of that uh that content. So, >> cool. Okay. I think I've caught all the questions. If I have not, I apologize. Um maybe you can drop it in again and Nick can address them. >> So we should switch over to you to do the hard stuff. >> Oh yeah. Yeah, totally. I have a fiveminute demo. Um cool. [clears throat] Okay. Well, yeah, we we can jump into sort of the more developer **[26:31]** focused things. I'm going to kind of jump around between code and my browser and devotes and we're just going to kind of talk through some some things. Um, so the first thing that I'm super excited about is the block binding changes that are coming in in in 6.9. So it just a bit a bit of history on there. So block bindings have existed in in WordPress for the last few few versions. Uh, they were only there was only four blocks that supported them. And if you're not familiar with about what block bindings are, it's the concept of taking a block **[27:02]** attribute and binding it to a piece of data. Pardon me. Sorry, I'm just getting over a cold, so I'm going to try not to hit my microphone and cough into it. Um, yeah, so you you could only bind content uh to the paragraph block, the heading block, the image block, and the button block in in versions um before uh 6.9. And so the process of doing so was fairly straightforward. This is actually a paragraph. So you could you could come over to uh what am I doing here? Uh oh. Oh, sorry. That's a list item. That's not even a paragraph block. What am I **[27:32]** saying? So I could grab any block that that supports it. this happens to be a header. You you come into attributes, you could bind the content to a piece of post meta. So what's h what's really cool about and what's happening what's coming in 69 is now we have the ability to basically um filter the supported attributes for any blocks and all blocks which is re really really powerful. So I have it and that's done by uh two new filters. we have the uh block binding supported attributes and then block name filter or **[28:02]** we have the more generic block binding supports supported attributes filter. And so what that'll allow us to do is get the block that we're we're we're wanting to work with and all we have to do is add it is add the attribute name to the array of supported blocks. Sorry, supported block attributes. I'm going to keep saying that wrong for the entirety of this demo. Um, and so this is an example of u, for example, I'm I'm editing the core details um, uh, supported attributes. So over in my demo here, I I have this uh, details block in **[28:35]** here. I'll just show you to details block. And so I've put a list of people from WordPress that that I kind of like. And then so what I want to do is I'm going to bind the the summary by coming into attributes. I'm going to select summary. I'm going to connect it to to some post meta that I have. And I and this is people in in in in WordPress. Now, all this functionality has pre-existed, but the ability to connect it to blocks that were not these four has not. I'm just going to sorry, I'm just going to move this uh toolbar out out of the way. We we'll get that out of **[29:05]** the way there. And and so [clears throat] that's that's enabling you to to do some pretty powerful things. Um so, for example, we have a quot a quote block here. So, the quote block, if you look at how the quote block works, it's a block that that contains inner blocks. So we can already bind um a paragraph to anything um to our our um our block binding sources. So I have this haik coup that that um is about uh uh 6.9. But the one thing that we couldn't do was we couldn't bind the citation. So because I've now enabled **[29:37]** that in my um quote here. So this is an example of the filter that's that's that's more generic. It receives the array of block attributes and it receives the block type as a name. So what I'm doing here is I'm I'm checking, oh, is this the core quote block? It is. Cool. Then we're going to add the citation to the list of supported attributes. And then now I can come into my quote block. I select the quote block. I can come down here. You can see attributes is um now **[30:07]** enabled. And I can click this. I click again to get the post method that I've I've created. And this is going to be the citation. And so now we have a a block that's completely um it's a core block, but now it's completely customizable. So now on this post, if if I wanted to change this to WordPress um builders, that would work and that would actually save as post meta with this particular piece of post content. >> Brian, at this point, there's a very appropriate question here. So if you put one of these block bindings inside of a **[30:39]** query loop, >> y >> will it inherit the whatever post it's on in the query loop? >> Yes, if it's post meta. So that's that's an excellent question. So WordPress core ships with a single binding source right now and that's post meta. So if you were to have um the uh a a block that's connected to a piece of post meta in that loop, it would still have access to that just like it would in sort of like preblock theme days when you would run that run the uh you know the the loop code and you would pull the post meta out of that. So yes, it will absolutely **[31:10]** work. [clears throat] Just keep in mind that it has to have the post meta to be displayed, >> right? super powerful for like pulling in all sorts of [cough and clears throat] excuse me. Yeah. >> So, one thing that's really really cool about this is that this like everything I've shown you so far is just core blocks. And this is could potentially negate the need for a lot of custom block development. There's a lot of blocks that do mostly what we're doing and and a a combination of block uh composition like putting together a **[31:40]** pattern of blocks to build out certain interfaces um and and attach that to to post meta or to a custom binding source was never really possible but now it is. So, you know, a lot a lot of developers are reaching for custom blocks to do very very bespoke and customized things. And this is this is at least the beginning, if not the the the official start of uh of of like you may not even need a custom block anymore, but if you do want to do a custom block, it does work for custom blocks as well. So, I **[32:11]** have a custom block in here where I've rebuilt the the quote block because why not, right? And uh what I've what I've done is I've I have a custom block and now I'm adding it supported its block attributes to the list of supported attributes that can be bound. So I can do that by again coming into attributes. I have two this block has got two attributes. We we've got the quote. It's not connected. So I'm going to pick the post meta. Hit haiku again. And then I I I can come back in here and I select the **[32:42]** other one which is called the the citation. and I pick the citation and and see because I actually changed WordPress contributors up here to WordPress builders because it's still it's using the the same post method. This is automatically inherited. And so that that's that just works. Um, which is really really cool. And then uh sorry, I'll show you what it looks like in the front end. It does it does what it's supposed to do on the front end. So we've got all this stuff. Oh, it's not actually showing that. Not sure why. Just ignore the live demo that went wrong and it's always happens. [clears throat] Um, so that's kind of **[33:13]** like the block bindings part. Uh, but there's there's there's another thing that's really cool. I was talking about block binding sources earlier. Like I said, WordPress 6 point um, sorry, WordPress 6.9 doesn't introduce any new uh, binding sources. We we we only have uh, Postmata, which is a pretty powerful one. But you've always been able to enable your own and create your own. So, I've actually done that um in here where I have this um this binding source which is going to basically expose the post excerpt to be bound to uh to a block. **[33:44]** So, I'm just going to come back over here and refresh this. And we can see that um [clears throat] um prior to 6.9, the only way to really get this to work was you had to drop a snippet in that looked like this. So you would take your paragraph tag or whatever it was and you would have to come over into your um in your code editor and you'd have to drop it in. It's a real real pain. So uh one one thing that we used to do to get around that was we we would register a block **[34:14]** variation that preset that metab uh um those those binding uh relationships. Well, now in 6.9 you don't actually have to do that. there is a new um uh when when you're when you're write when you're creating the the the client side JavaScript for this binding source, there's a new uh function called get fields list. And what this is going to do is this going to enable the the UI to be able to to talk to this custom binding source as well. So if I were to come in here, so I'm going to just bind a paragraph block, which is the default **[34:45]** block in here. So if I go in into attributes, I'm going to bind content. If I cl if I click on this now you see I've got post excerpt and so I can click on that and now the post excerpt shows up in here and if I edit it um you can see that it's being edited up up here. So this is a super super powerful thing and it kind of closes the loop for custom binding sources which is really really really cool. Um it's one of my most favorite things in the whole world actually. >> Yeah. I mean, it's it's hard to like **[35:18]** >> illustrate how impactful this [laughter] is. >> Like, it was so hard. You had to write a custom block. You had to do all sorts of work before and now you can just pull it in. One quick question related to this. Um, Elliot, is it possible to bind to inline elements yet or only at the block level? >> Um, only at the block level. So, we're binding directly to um if I understand the question, I think you're talking about the the bits concept that that we're Yeah. No, that that doesn't exist yet. What this all **[35:50]** this is doing right now is this is just like opening up the playing field to all other blocks. That's really what it's doing. So, instead of being limited to to a paragraph block, a heading block, an image block, or a button block to bind to something, now you can do it to anything with just a filter, which is super powerful. I I I think there's work being done on bits, but it's it's still very much um like in the planning experimental phase. >> Yeah. [snorts] Yeah. But don't let that get you down on the bindings like if you haven't you tried it like revolutionizes **[36:21]** development. >> Yeah. And like creating your own custom bindings which is kind of not it's it's already existed but I think I think the the power of custom binding sources are is vastly underestimated. You can literally connect a block to anything at this point. Um, any block to any piece of information. You just have to create the binding for it, which which is super cool. Super super cool. >> Um, okay, cool. Any more no more questions? I can I can move on. Okay, so the next thing I I I wanted to uh talk **[36:53]** about is the command pallet. So, the command pallet is um pretty pretty cool. So, we're all familiar with the command pallet in the block editor in the site editor where you can you you can create your own sorry where you can run these commands by just hitting command K or control K on on PC. I'm not sure what it is, but whatever the PC version of command K is, that's what you run. And then you can you can run a run a command, right? So you can see you can go to the install plugins and all that stuff. But what's coming in 69 is is now **[37:23]** uh let me just see if I can find a post here. Uh so in in the regular admin, we never had it before. So now we do. So now you can actually uh run these commands um right in any part of the admin, which is super powerful. Uh, it seems like a silly thing, but actually, if you think about it, if you're on on the plug-in screen or if you have a custom plug-in setting, for example, you can you can create a a command that will jump you to your to your your your plug-in settings page from wherever you are inside the admin. So, a nice little **[37:53]** shortcut there. And then, of course, we can always shoot some confetti in the air, which is so much fun and ridiculous. >> That's the most important thing. >> It is the most important thing. So there's a quality of of life um uh change as well. Uh where is the sorry I don't have the file open. So in in when we're registering commands there's a new hook if you're familiar with um react hooks called use commands which allows you to to just specify an an array of commands which is a nice uh way of of of **[38:25]** being able to register all of your commands all in one go which is nice. It's not a huge sort of you know it's a great little developer thing. Now you can like store these definitions in an array. You can define them dynamically and then just pass them to this command. So it's um pretty pretty cool stuff there. Um any oh one thing that you should keep in mind however is that [clears throat] to use these hooks you have to be inside of a React component. So, if you are in a place like the uh block editor, you you you can get it in here using the uh **[38:58]** the register plug-in uh functionality that um that that is you're basically hijacking the slot fill system to do that a little bit, but it it it allows you to get this into a React environment. Well, when you're in a um a a WordPress um sorry, I keep losing that page. I'm just going to do this. When you're in a page like this, when it loads, come on now. Oh boy. Okay. I don't know what's going on there, but that page is not loading. When you're in an admin page that is not React based, that is not JavaScript **[39:29]** based, you have to register these in a slightly different way. Um, and you will register them using this dispatch option. So, what this is doing is going to just run the function and dispatch it so it's available in those sort of nonreact admin places. Um, yeah. [clears throat] Oh, is there a question? Rich is asking a question about commands need do commands need to be registered explicitly for admin or are they available by default everywhere? Um [clears throat] well you would only so it's only going to work in the admin um **[40:01]** if that's the question. It won't work on the front end because this is an admin only thing but the way that you have to register them um the way that I'm actually registering these I can show you the code that's uh doing it. Uh command pallet I I'm I'm actually registering it on the admin in Q scripts hook. The reason being [snorts] because inside of my JavaScript I have these two commands that are being that will get run in any JavaScript like in any page and then this render plugin will only **[40:32]** fire in in a place where there there is actually where it's set up to accept that particular way of approaching things. So you could specify that. Now in in inside of definitions of commands, which is not new to 6.9, you can do things like that. There is sort of a priority thing. You can have conditional commands. It's kind of beyond the scope of what we're talking about today, but you can do things where like if you're in the site editor, uh you know, you shouldn't be able to insert post content, for example. It's kind of a contrived example, but there are ways of defining your commands that uh make them **[41:04]** disabled in certain contexts. So that's that that would be how um that that would be how you would you would control that. And I do agree having a logged in user being able to access the commands from the front end might be pretty cool. So maybe that's uh version 1.1. I don't know. >> Yeah. So >> I think we're good on questions. >> Okay. Uh in what's the last thing in 6.8 the blockbinding is not working with post metatype because the paragraph is type string. **[41:35]** Oh, sorry. That's not really a question. >> No. Does 6.9 support post metatype number bind with paragraph? I think you had to do the thing where you had to like transform it into a string, a number into a string. >> Yeah. So, post meta by by default for the mo uh a lot of post meta is interpreted as a string. So, you'll have to see how that works. Um and it could also Yeah. So, I think this is more of a type coercion issue than a bindings issue. Um, but it's definitely something that that should be able to be accounted **[42:07]** for. Um, >> also the paragraph is stored in post content. Well, paragraph content is stored in post content as a string. So, >> yeah. So also you might run into like sometimes I've seen this in some things where you have like the input field that's being stored or the number selector that's being stored like on in the the inspector sidebar and sometimes even though you're putting a number in it gets it gets retrieved as a string and then saved as a string. So you get these like weird like oh no I put 10 in but it's actually 10 in quotes when it **[42:38]** gets >> sure >> processed you know. So so yeah you might just need to be very explicit wrap it inside of a number um function stuff like that. Um, I'd be happy to take a look at any code that you have um to kind of get around that issue. Um, thanks for the uh the question comment. Um, [clears throat] okay. So, I think that's it for black block, sorry, command pallet. That's that's where I am right now. And the next thing I wanted to talk about is the interactivity API. So, um, I highly recommend you go and read all the field guide notes on this. **[43:10]** There's not a huge amount of changes. Um, there's one thing that's a really nice one. I might just zoom that in a little bit. So we um there is a a new piece to the directive that is is is now possible. It it is the unique identifier. And so it's separated by three dashes followed by a unique ID. Now the reason that this is important is because there are times where you may want to have multiple like in the example here you have multiple watch statements or multiple um actions uh **[43:40]** callbacks being run to to watch various things um which is completely possible. You might have one that wants to watch that you know if a string changes you want you might want to have one watch whether or not a menu is open. Who knows? But it's not valid HTML to have a data attribute with the exact same name. So adding this again this is just a quality of life thing but this is going to make your HTML more compat or um valid is the word that I was escaping to me. So there's that one which is very very >> quickly Ryan >> would you be able to provide like a a **[44:11]** twominut explanation of what the interactivity API is if anybody watching is not >> sure yeah sorry. So the interactivity a API is a standardized way of adding front-end interactivity or interactions to your blocks. That's that's kind of the elevator pitch. So, you know, instead of reaching for a library like jQuery or like masonry or like insert slider gallery name here, you can actually build it out using a standardized um WordPress first system that's based in directives and that's what these are. So, these these are **[44:42]** what's referred to as directives. If you're familiar with AlpineJS, um you'll know what what that means. But what this is doing is this is processed on the server and then the this the system kind of takes over and it connects data and interactivity to all of these directives um for your blocks and it's super powerful. You can have blocks talk to each other, you can have blocks that are completely composable. So as opposed to having a big React application you're rendering inside of a single div, you can now put all of your interactive blocks into a template and **[45:12]** move them around as needed and all that interactivity still works. um you can build some pretty pretty um fun and very cool UI experiences with that on the front end. So hopefully that's >> Yeah, it's great >> demo. >> Yeah. Um Okay, cool. All right, [clears throat] so Oh, and the other thing is so there's this fun little thing called attach to. Um, and so what this does is, um, you know what, maybe I don't have I don't have the, um, sorry, I don't have the dev the dev node up, but the **[45:44]** interactivity router package allows you to to uh, basically create sort of like a client side navigation experience. So you can create single page applications. We we we've seen examples where people have created plugins to do all of the page navigations on the admin. I think Felix Arn did did one where he replaced all of the animation in 2024 with the interactivity a API and so like your page transitions are all automated and any it's very very cool but one thing that you can now do is you can define this thing called a router region and so **[46:15]** if you have two pages and you have a router region with the same name you click on a link and the a the API will look at what the new page is pull the the content from that region and then and then replace the current pages region with that content. So that's pretty cool. But now we have the ability to add things to to the page as well. It's um it's called uh um let me just actually show you the code maybe a little bit. Sorry, bear with. So in um in here, you're going to define a router region with an ID and then this property **[46:48]** is attached to. So what this is meaning is this is going to say I want you to attach the content of this router region to whatever CSS selector that we put in here. So in my case, I'm I'm doing one where I'm going to attach this to the body. And it's a very very contrived example, but basically what happens is you would get to this page. You would say, "Oh, I I want to see the overlay message." And you click on this message and it will overlay it will basically pull that markup in. Now, I've done all this all this, you know, styling and stuff and everything in here, but this is, you know, could be used as like a, I **[47:18]** don't know, cookie consent or some sort of overlay or whatever. And then you can you can remove it and it actually just just moves to that page. So, it's I mean it's a pretty cool thing. Um I'm excited to see what people are going to do with this. Um but yeah, it's it's something that I nerd I nerd I nerded out on this particular example for about two hours yesterday trying to figure out a really fun way of showing this stuff. So anyways, it's one of my most favorite things. >> And I think that the most important thing here is that this is WordPress core, right? You're not pulling in another package or another library **[47:49]** somewhere. This is >> Yep. It's all WordPress core. You don't even need to import these packages to your project uh because of the uh um the the um scripts. I'm sorry, the word the word. Oh my god, the dependency extraction plugin. Thank you. That's it. So, you don't even need to to add this to your your JavaScript project. So, it's really really really fun stuff. Um yeah. Um how are we doing for time? Okay. Okay. So, for the last thing that I might get to is the abilities API. So, the abilities API, I would I'd recommend **[48:20]** go and reading the dev note. So if you're if you're if you're not familiar with it, it is the first step to a AI enabling WordPress core. So abilities are so what's gone into core now uh or for 6.9 is the is the ability to register abilities. So which is going to be one of those notes and notes things. Um so we can we can create basically we you can think of it as a way of adding new features to to WordPress that it doesn't have. So, um, Jonathan Bosinger, who is a a colleague a colleague of ours **[48:52]** and is deep into the AI thing. I met with him this morning and he, um, he gave me some really, really cool examples to show. So, it's hard to demo this because the intent of the abilities API is to work with AI tools, is to work with like an LLM or work with, you know, via MCP, which is a whole another acronym that you should learn, is um, you know, connecting to your IDE. So you can work with your code to talking to your website, returning post content, doing whatever you want to do, but it's very hard to demo. So I wanted just to **[49:22]** show some of the things that Jonathan has uh because he has this really really cool demo plugin. So the first So he wrote this thing um where is it? It is called APIs abilities demo. So what he's done is he's registered a number of abilities basically adding some functionality to WordPress. So he's got the these examples. So he can return information about the site. So we have site name, the URL, the active theme, all these plugins, so on and so forth. The the WordPress version, which is released candid 3. Side note, I updated **[49:54]** this just before the demo. So you know, I like to live dangerously. Um, you can retrieve a plug-in list and all that stuff. Now, some of you on the call might be saying, um, you know, I can do this with WPCLI. I can do this with REST endpoints. Like this is not new stuff. and you're right. But what you can do is things like this. So Jonathan's got this debugged log reader. So you can actually read the contents of your debug.log if you're not Oh, and this is because I'm an excellent developer that it is so full of errors right now. But um what what this is doing is in in WordPress **[50:27]** development when you're developing locally, you would typically enable the ability to have your debugs or your errors spit out into a debug.log file. So, this is reading that file in real time and and and giving me the feedback of the error, which is really great because sometimes if I get an error, I have to jump over here. I got to go find my um I have to go find my debug log, right? And I have to look at this and then I I I you know, so it's a you know, it's a nice thing. You can even clear it. You can create post. Now, here's a really cool one. So, I can get my list **[50:58]** of plugins from up here. Sorry, I got I have to I have to tell Jonathan we have to be able to toggle these closed. And what I want to do is I want to get a plugin. So I [clears throat] have a plug-in list. I'm gonna scan the plugin that I wrote for this particular um demo, which is right here. And I'm going to put it into this plug-in security check. So this plugin requires the PCP, the plug-in check plugin. Um and so I'm going to scan this and it's going to give me a fe it's going to give me all the feedback that I would need to Oh, look at that. It's perfect. **[51:30]** >> You're brilliant, right? >> I don't think that's right. [laughter] Let's grab my custom block one. I have a custom block plugin as well. So this one I think has got a bunch of errors in it. But anyways, so if there's errors it, you know, we can run Oh, there we go. So I I've got some stuff. So all all output should be run through escaping plugins. I purposefully injected all of these errors into the the code. So this is giving me like a real like this is exactly what would be run if I were to update this or if I were to submit this to the directory. And all I need to do is have this installed. So, what's cool **[52:02]** about this is like this is a UI, but you can actually have this run directly on your site. You like there's a lot of things that that the abilities API sort of enables. One more thing is >> and you could hand this off to AI too, right? >> Absolutely. Yeah. So, you could have Yeah, you could have AI like you could you could scan it and then you as part of the output you could say, "Okay, now chat GPT tell me is this real or not?" Like, you know, like do I have false positives? Things like that. Uh Tammy Listister also has a a really cool plugin about um that it's called the **[52:33]** ability explorer where you can look and see at all the abilities that are registered. So we have things like create post um and uh delete plugin and core. So all of these core uh prefixes ones I believe are are added by like are part of core already and so you can view these and you can test them. So if we want to look at the debug reader we can re we can re we can see it we can see what the input schema is what the output schema is. So this is a really great tool for learning about the abilities a API because this is actually how you define all of this stuff. So it it takes **[53:05]** an input and what it should return and the raw data and things like that. So um kind of beyond what we're what we're talking about today, you know, it's a bit of a deep dive into code. Um the code is extremely verbose. Like if we were to look at let's see the plugins one, you can see there's a lot a lot going on here. Um, so for the next hour I'm going to go line by line and we're going to discuss exactly what each one of these things does and you'll all fall asleep and never come back to one of my streams again. Um, yeah, I don't know how much time how we doing for for for **[53:37]** time. >> We're pretty good. >> Okay, that was kind of it. There's a a number of new things that I just want to kind of mention. Um, one thing is we have this new streaming block parser in 6.9. This is one that's really hard to demo, but it's super powerful when you need it. uh being able to pull uh block content out from the post to do something with it and put it back. That's really really cool. I'd highly recommend reading that. Sorry, I'm going to cough. Just one sec. [cough] Pardon me. Um [snorts] another thing that I wanted to mention is we have a **[54:08]** number of new hooks and filters coming. We have eight new hooks, 13 new filters. Uh we have uh where is it? Uh I guess I don't have it. So we also have some output buffering going on for um Oh, wait. this. Sorry, all over the place. Here we have output buffering for rendered templates. So, block themes have a a way of output [snorts] buffering, which is a way a great way for performance to not have to rerender the page every single time. And there's a whole bunch of of more smaller items **[54:38]** like quality of life things. I'm sure there are things in here that are going to excite the developer community that are on this this stream that I haven't mentioned and uh I apologize for that, but you know, it's very uh there's lots and lots of really cool stuff coming. So, highly recommend that you read the field guide, which just came out today. I'm going to link that into the the um the chat there. I think I did earlier, but I'll I'll I'll do it again. And also, the Gutenberg Times has the source of truth, which is the 6.9 WordPress source of truth. and you should read **[55:10]** that as well. It it's going to be a lot of the same in information, but this is a document that um helps to get the information out. Cool. And I think with that, I'm pretty much wrapped up with my >> portion. So, >> that's great. >> We have any questions or >> No, no, no additional questions that I saw. I think that as we kind of reflect on what we showed today, there's a lot of new functionality, whether it's notes, you know, abilities API, additional improvements to new tools and **[55:44]** also additional improvements to tools that kind of set the stage for 7.0. Um, we're going to see more improvements to the showing and hiding content. We're going to see more improvements to notes. We're going to see more improvements all the APIs Ryan showed. Uh and so I don't know this this this uh release really excites me for what's coming next in 2026 uh with WordPress which likely would be also a lot of AI related things. I mean AI taken over the tech space so I don't know **[56:15]** >> well there's the one thing so so there is a JavaScript library that that was with the ability API and it didn't make it in to 6.9. So I would imagine that that's probably going to be top of list to get into 7.0. I don't know what the actual like I don't think the actual uh road map has been defined yet but I would imagine that's a pretty big deal to get that in because um one thing that you can that you'll like the one missing piece and there was a demo that I had with an older uh plugin that that that created a chatbot so you could actually ask it to like you know in insert content and and whatnot but it was a bit **[56:46]** of an older implementation so it didn't work so I couldn't get it to go but to do those sort of things you have to write that all all yourself right right now so I'm hoping that the JavaScript API uh will sort of make a lot of that simpler um and uh you know enable developers to create some really unique experiences in the admin. >> Yeah, it's very exciting. So release candidate 3 came out today. Go check that out and you can see everything that we talked about today uh in in that release. Um, and the official release will be coming out next week. **[57:19]** >> Next week. And it'll coincide with State of the Word, which is happening. It's going to be live stream from San Francisco. Um, at I you know what? I'm going to link the I'm going to link the page. I believe it is being streamed at uh the stream starts, I believe, at noon um on like uh local time. So, that would be I don't know what that is UTC off the top of my head, but I know it's uh like 3 pm Eastern, I think. >> Y'll be live streams and it'll be **[57:50]** recorded. So, if you miss it, you can catch it later. >> Yeah, for sure. >> Yeah, that'll also provide a good look at like what's coming in 2026. So, it'll be kind of a celebration of everything that happened this year, but then also kind of a look ahead. So, as much as uh Ryan and I provided a little bit of a look ahead, that'll be a better, more official look ahead. Yeah, there'll be lots of demos and lots of cool things and Matt talking. So, yeah. >> Um, and thank you. So, thank you all for any everyone that watched and if you're watching this recording later, uh, thank you. And if you have any questions, you **[58:20]** know, Ryan and I are very accessible either on X or Blue Sky or wherever, feel free to reach out to us. >> Yeah. And if you liked what you saw today, just be sure to give a thumbs up, subscribe to the channel because we're going to be trying to do more of these, get more content out. this is um you know and we need to we we need the feedback to know that we did a good job or there are areas that we can improve on maybe. [laughter] So uh yeah, but thanks so much for hanging out with us today. Uh it's been it's been a lot of fun. >> Go and test out 6.9. >> Yeah. All right. [snorts] **[58:51]** >> Have a good day everyone. Thanks everybody.