Testing WordPress 6 9 Block Bindings Updates ๐Ÿ”— **Source:** [Testing WordPress 6 9 Block Bindings Updates](https://www.youtube.com/watch?v=iuvs7hm0LRI) > [!note]+ Document Notes > tags: [wordpress, block-bindings, gutenberg-editor] > author: WP Builds > source: YouTube > reference: https://www.youtube.com/watch?v=iuvs7hm0LRI > date created: 2024-12-18 14:30 > > # ๐Ÿท๏ธ Title: Testing WordPress 6.9 Block Bindings Updates > <!-- deep-read:sections start --> ## ๐Ÿงฐ Action Inbox - [H1] Test date block variations with custom dates โ€” explore post date vs modified date functionality #wordpress-testing - [H2] Create custom image caption source plugin โ€” implement JavaScript registration for editor UI #plugin-development - [H3] Build comprehensive block bindings demo โ€” combine multiple custom sources in single project #block-bindings ## ๐Ÿงญ 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 Block Bindings Documentation](https://developer.wordpress.org/block-editor/reference-guides/block-api/block-bindings/) - [Block Bindings GitHub Tracking Issue](https://github.com/WordPress/gutenberg/issues/56939) ## ๐Ÿ“ Summary - Live testing of WordPress 6.9 block bindings improvements including date block variations and image caption binding - Demonstrates new custom source registration capabilities with get_field_list method for editor UI integration - Shows enhanced date block functionality allowing arbitrary date selection beyond post/modified dates - Explores challenges with PHP-based custom sources versus JavaScript implementation - Bottom line: Block bindings are becoming more user-friendly but still require technical implementation knowledge ## ๐Ÿ“– Main Content WordPress 6.9 introduces significant improvements to the block bindings API, making it more accessible to content creators while expanding developer capabilities. The date block now supports three variations: post date, modified date, and arbitrary custom dates - a major improvement from the previous binary choice between default and modified display types. The image block gains caption binding support, allowing developers to connect image captions to custom data sources. However, implementation requires manual markup editing and proper source registration, highlighting the technical gap between developer capabilities and user experience. Custom source registration has been enhanced with a new get_field_list method that enables UI integration directly in the block editor. This allows sources to appear in dropdown menus rather than requiring manual code editing, representing a significant usability improvement. The filter system has been refined with block-type-specific attribute filtering, giving developers granular control over which attributes can be bound for specific block types. ## ๐Ÿ—’๏ธ Notes #### โฑ๏ธ [00:00](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=0) โ€” [H1] Stream Setup and WordPress 6.9 Overview - Key idea: Testing WordPress 6.9 block bindings improvements with focus on date and image blocks - Evidence: "I want to focus specifically today on block bindings updates" #### โฑ๏ธ [03:45](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=225) โ€” [H2] Date Block Binding Improvements - Key idea: Date block now accepts manually set dates and has better post date handling - Evidence: "Date block has block binding support... make the date block accept manually set date" #### โฑ๏ธ [08:30](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=510) โ€” [H3] Testing Date Block Variations in WordPress 6.9 - Key idea: Creating test post with current date and modified date blocks to compare functionality - Evidence: "Let's add date and modify date blocks... this will be then the modified date block" #### โฑ๏ธ [15:20](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=920) โ€” [H2] Block Bindings Markup Structure - Key idea: Date blocks now use block bindings with core post data sources instead of display type - Evidence: "It's using block bindings. It's the core post data modified field" #### โฑ๏ธ [18:45](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=1125) โ€” [H3] Comparing WordPress 6.8 vs 6.9 Date Functionality - Key idea: Version 6.8 only had display type modified option, 6.9 adds block binding sources - Evidence: "This is display type modified... whereas now I have this modify date option up here" #### โฑ๏ธ [22:10](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=1330) โ€” [H2] Creating Custom Block Binding Source - Key idea: Attempting to register custom PHP source for talk dates to demonstrate extensibility - Evidence: "What I could do is I could register a custom source that would always return" #### โฑ๏ธ [28:00](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=1680) โ€” [H3] Arbitrary Date Selection Discovery - Key idea: Date block now allows selecting any arbitrary date, not just post-related dates - Evidence: "You can select an arbitrary date... which wasn't possible before" #### โฑ๏ธ [31:15](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=1875) โ€” [H2] Image Block Caption Binding Setup - Key idea: Testing image caption binding requires manual markup editing with metadata bindings - Evidence: "I have to go and edit this to support the caption custom source" #### โฑ๏ธ [36:40](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=2200) โ€” [H3] Image Caption Binding Implementation Issues - Key idea: PHP custom source for image captions not displaying properly on frontend - Evidence: "I'm not seeing the image caption elements... Either I'm registering my custom source incorrectly" #### โฑ๏ธ [40:20](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=2420) โ€” [H2] Block Type Attribute Filtering - Key idea: New filter allows customizing supported attributes by specific block type - Evidence: "Filter block binding supported attributes by block type... ID, URL, title, alt, caption" #### โฑ๏ธ [42:30](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=2550) โ€” [H1] JavaScript Custom Sources with UI Integration - Key idea: JavaScript sources can integrate with editor UI using get_field_list method - Evidence: "Developers can now register custom sources in editing UI by adding a get fields list method" #### โฑ๏ธ [45:15](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=2715) โ€” [H3] Live Testing JavaScript Source Registration - Key idea: Successfully demonstrated haikus custom source appearing in paragraph block UI - Evidence: "When you select it, it actually returns it and pops it in there" #### โฑ๏ธ [48:00](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=2880) โ€” [H2] Universal Source Availability Across Blocks - Key idea: Custom sources appear to work on any block that supports the target attribute - Evidence: "The source seems to... is just available anything that supports... it will just work" #### โฑ๏ธ [52:30](https://www.youtube.com/watch?v=iuvs7hm0LRI?t=3150) โ€” [H3] Next Steps and Future Development Plans - Key idea: Planning comprehensive JavaScript-based plugin combining multiple block binding features - Evidence: "Next week I'll actually try and see if the custom sources work in JavaScript" ## ๐Ÿ“š References - [WordPress 6.9 Block Bindings Dev Note](https://make.wordpress.org/core/2024/11/15/dev-note-block-bindings-improvements-in-wordpress-6-9/) - [Block Bindings GitHub Tracking Issue](https://github.com/WordPress/gutenberg/issues/56939) - [WordPress Block Editor Handbook](https://developer.wordpress.org/block-editor/) ## ๐Ÿ—ฃ๏ธ Paraphrase - WordPress 6.9 significantly improves block bindings by adding date block variations that can show post date, modified date, or custom arbitrary dates - Image blocks can now bind captions to custom data sources, though implementation requires manual code editing currently - New JavaScript API allows custom sources to integrate directly into the block editor UI with dropdown selection menus ## ๐Ÿ“ฐ Newsletter WordPress 6.9 brings exciting improvements to block bindings that make dynamic content more accessible! The date block now offers three distinct modes - post date, modified date, and custom arbitrary dates - perfect for showing original publication dates alongside update timestamps on your content. For developers, the new get_field_list method enables custom sources to appear directly in the editor UI rather than requiring code editing. This bridges the gap between powerful developer features and user-friendly interfaces. While image caption binding shows promise, the current implementation highlights areas for future enhancement in the user experience. Resources: [Learn WordPress](https://learn.wordpress.org/), [Developer Docs](https://developer.wordpress.org/), [WP-CLI](https://wp-cli.org/) ## โœ… Action Items #### WordPress - Core: Improve block bindings UI to reduce manual markup editing requirements - Core: Document PHP vs JavaScript custom source registration differences - Core: Consider preset custom source templates for common use cases - Documentation: Create comprehensive block bindings tutorial covering both PHP and JavaScript approaches - Community: Share block bindings examples and use case demonstrations ## ๐Ÿงช Hypotheses - JavaScript-registered custom sources provide better editor integration than PHP-registered sources - Image caption binding requires JavaScript implementation for proper frontend display - Block bindings adoption will increase significantly with improved UI integration - Custom source registration will become more popular as documentation improves ### ๐Ÿ“Š Methodology - Compare WordPress 6.8 vs 6.9 date block functionality through direct testing - Test PHP custom source registration with multiple block types - Validate JavaScript custom source UI integration through browser console testing ### โ“ Questions - Why do PHP-registered custom sources not display image captions on the frontend? - How can custom sources be restricted to specific block types rather than universal availability? - What's the roadmap for eliminating manual markup editing requirements in block bindings? ### ๐Ÿ”ฎ Future Research - Comprehensive JavaScript custom source plugin development - Performance implications of extensive block binding usage - User experience studies on block bindings adoption barriers ### ๐Ÿ’ก Implications - Practice: Content creators gain more dynamic content options without custom field complexity - Education: Need for updated tutorials covering new block binding capabilities - Security: Custom source validation becomes increasingly important as adoption grows - Policy: Consider governance around custom source standards and best practices ### ๐Ÿง  Learning Styles Assessment Reading level estimate: 12th grade #### ๐Ÿ‘€ Visual learners - Present: Screen recordings showing block editor interactions and code examples - Improve: Architecture diagrams showing block binding data flow #### ๐Ÿ”Š Aural learners - Present: Live narration of testing process and explanations - Improve: Audio summary of key concepts and implementation steps #### ๐Ÿ—ฃ๏ธ Verbal learners - Present: Clear terminology definitions and step-by-step explanations - Improve: Glossary of block binding terms and concepts #### ๐Ÿงฉ Kinesthetic learners - Present: Hands-on coding examples and live testing - Improve: Downloadable starter plugin template for practice #### ๐Ÿง  Logical learners - Present: Systematic comparison between WordPress versions - Improve: Decision tree for choosing PHP vs JavaScript implementation #### ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Social learners - Present: Live stream format with chat interaction - Improve: Community challenges around block binding implementations #### ๐Ÿง˜โ€โ™€๏ธ Solitary learners - Present: Individual exploration of features and self-directed testing - Improve: Self-assessment checklist for block binding mastery #### ๐ŸŒฟ Naturalistic learners - Present: Real-world use case examples like blog post dating - Improve: Content lifecycle analogies for data binding concepts ### ๐Ÿ“Š Accessibility Assessment #### Screen reader semantics - Present: Clear heading structure in video content - Improve: More detailed alt text for code screenshots #### Keyboard navigation - Present: Standard WordPress editor keyboard support - Improve: Document keyboard shortcuts for block binding features #### Contrast and readability - Present: High contrast code editor themes - Improve: Ensure all UI elements meet WCAG standards #### Media and captions - Present: Full transcript provided for video content - Improve: Time-coded captions for better navigation ### ๐ŸŒ DEIB Assessment #### Cultural breadth - Present: English-focused content with global applicability - Improve: Examples from diverse geographical contexts #### Inclusive language - Present: Technical terminology clearly defined - Improve: Avoid assumptions about prior WordPress experience levels #### Neurodiversity support - Present: Step-by-step structured approach - Improve: More frequent progress check-ins and summaries #### Representation - Present: Individual developer perspective - Improve: Include diverse developer voices and use cases ### โœ… Logical Validity #### Strong reasoning - Deductive strength: Systematic testing approach validates feature claims - Inductive strength: Generalizes from specific examples to broader capabilities - Causal reasoning: Links implementation choices to user experience outcomes #### Fallacies - None identified: Testing approach maintains objectivity #### Tone of voice - Overall tone: Exploratory and educational with authentic problem-solving approach ### ๐Ÿ›ก๏ธ DARVO Analysis - No DARVO patterns detected in technical demonstration content ## ๐ŸŽฏ Conclusion WordPress 6.9's block bindings improvements represent a significant step toward making dynamic content more accessible while expanding developer capabilities. The date block enhancements provide immediate practical value, while the JavaScript UI integration points toward a more user-friendly future. However, the gap between PHP and JavaScript implementation approaches suggests areas for continued development in the user experience. ## ๐Ÿงฑ Refactor Appendix ### ๐Ÿ“š Literature Split Pad ### [H1] Block bindings enable dynamic content without custom fields complexity > [!quote] [Testing WordPress 6 9 Block Bindings Updates](https://www.youtube.com/watch?v=iuvs7hm0LRI) by [[WP Builds]] via [[YouTube]]. Published 2024-12-18. Accessed 2024-12-18. > "You could set that up on your blog posts and you could update them and you could show the original post date and the modified date." Demonstrates practical application for content versioning and transparency. [view highlight](https://www.youtube.com/watch?v=iuvs7hm0LRI#H1) #xref #articleseed ID:rw_block_bindings_dynamic ### [H2] JavaScript custom sources integrate better than PHP sources > [!quote] [Testing WordPress 6 9 Block Bindings Updates](https://www.youtube.com/watch?v=iuvs7hm0LRI) > "I feel like that's probably what's happening with the image caption as well. I need to register it in JavaScript." Evidence from testing suggests implementation method affects functionality. [view highlight](https://www.youtube.com/watch?v=iuvs7hm0LRI#H2) #xref ID:rw_js_php_sources --- ### ๐Ÿ”– Atomic Split Pad (Zettel Candidates) #### [Z1] Date blocks support three distinct binding modes - Post date, modified date, and arbitrary custom date selection - Pointer to 28:00 timestamp demonstration - Links: [[Block-Bindings]] [[WordPress-6-9]] #### [Z2] Custom sources appear universally across compatible blocks - No apparent restriction mechanism for source-to-block relationships - Pointer to 48:00 timestamp testing - Links: [[Custom-Sources]] [[Block-Architecture]] --- ### โœ๏ธ --- ## Full Transcript [00:18] All right.<br>[00:20] Um, so I wanted to<br>[00:24] share out my social media things, but it<br>[00:27] looks like there's a<br>[00:30] a Cloudflare outage of some kind.<br>[00:33] Um, if I go to twitter.com, it doesn't<br>[00:35] work. If I go to x.com,<br>[00:38] it loads but doesn't load my feed. So, I<br>[00:41] don't know what's happening. Um,<br>[00:43] hopefully this doesn't cause us any<br>[00:45] problems today with the stream.<br>[00:48] So, yeah, we'll see. We'll see what<br>[00:50] happens.<br>[00:54] Um,<br>[00:56] okay.<br>[00:58] So, today I'm going to continue testing<br>[01:00] WordPress 6.9.<br>[01:02] Um<br>[01:04] I want to focus specifically today on<br>[01:07] block bindings updates.<br>[01:10] So<br>[01:12] uh there are a couple of things. There<br>[01:14] is a<br>[01:18] uh where is it now? Block improvements.<br>[01:20] Block bindings improvements. Go.<br>[01:23] So there's a couple of updates that have<br>[01:25] come out recently. Um they apparently<br>[01:28] the date block has blockbinding support.<br>[01:30] The image block allows binding of the<br>[01:31] caption.<br>[01:33] And then there's also some improvements<br>[01:37] uh on the server. You can filter block<br>[01:39] binding supported attributes by block<br>[01:41] type.<br>[01:43] Allows developers to customize which of<br>[01:45] the blocks attributes can be connected<br>[01:47] to blockbinding source.<br>[01:49] Um on the editor side there is you can<br>[01:52] register custom sources<br>[01:54] by adding a get field list method and<br>[01:57] there's some example code<br>[02:01] of how this all works.<br>[02:04] So I think today I'm going to go through<br>[02:07] each one of these and just see<br>[02:10] if I can figure out what it's all about.<br>[02:13] Um<br>[02:17] this is the main tracking issue.<br>[02:21] Um<br>[02:26] caption binding to image block bindings<br>[02:28] to date block. There's some bug fixes.<br>[02:31] Um<br>[02:35] so let's open up date block image block.<br>[02:42] Let's see what's what date block except<br>[02:44] to manually set date.<br>[02:54] So I guess this would be<br>[03:06] new post insert date block and modify<br>[03:09] date and the code. So the markup should<br>[03:11] look like that.<br>[03:13] Go back to the visual editor. Set the<br>[03:14] post publish date to an earlier date to<br>[03:16] publish the post front end. It looks<br>[03:18] looks something like that.<br>[03:21] Reload.<br>[03:26] So now it should start using block<br>[03:27] bindings.<br>[03:46] make the data block accept and manually<br>[03:48] set date dependent on the current post.<br>[03:50] Okay, so let's go and create a post and<br>[03:53] see. So I've already got um my local<br>[03:56] environment set up with 6.9 RC1. So that<br>[03:59] should be all the latest and greatest<br>[04:00] stuff.<br>[04:01] Um<br>[04:04] so let's test this out. So let's create<br>[04:10] post<br>[04:14] and let's say this is<br>[04:20] uh testing<br>[04:22] date<br>[04:25] bindings<br>[04:26] and then<br>[04:31] so we're going to add<br>[04:33] date and modify date blocks. Okay. So,<br>[04:37] let's do this. Let's add<br>[04:40] some columns.<br>[04:44] Uh, let's add a paragraph.<br>[04:48] Let's add date.<br>[04:51] And let's add date block there.<br>[04:55] Okay. So, that's today's date.<br>[05:06] Yeah, that's fine. And then let's<br>[05:08] duplicate this.<br>[05:12] So let's say this is current date.<br>[05:16] Let's say this is body<br>[05:19] date and this will be then the modified<br>[05:22] date block.<br>[05:24] Um, hey Ann and says, "Hey John, so much<br>[05:27] exciting stuff coming. Feels like a<br>[05:28] little like Christmas." Um,<br>[05:31] it does kind of So, the time I mean the<br>[05:33] timing is pretty cool, eh? Um, the fact<br>[05:36] that<br>[05:38] it's kind of Christmas time. My<br>[05:39] promptter doesn't seem to be working for<br>[05:41] some reason.<br>[05:44] Going to try and<br>[05:48] figure out why this is working.<br>[06:03] My chat prompt is just not working<br>[06:05] today. I don't know why that is.<br>[06:13] What if it's going to unplug somewhere<br>[06:16] something?<br>[06:20] I lost my screen there.<br>[06:23] That was the wrong thing.<br>[06:34] Let's try this one. Something else.<br>[06:49] Just knocked over my phone.<br>[06:52] Okay, that was the teleporter. Let's see<br>[06:53] if I can get it back.<br>[06:57] Ah, there we go. Didn't Oh, I know why<br>[07:00] it didn't work because I didn't switch<br>[07:00] it on.<br>[07:02] Stupid.<br>[07:04] Uh, there's a little button here. I got<br>[07:05] to switch on every time.<br>[07:08] There we go.<br>[07:10] Now I can actually see when people are<br>[07:12] chatting to me. Just a little test here.<br>[07:17] Yeah, there we go. Okay. Sorry about<br>[07:19] that. I missed a message cuz I didn't<br>[07:20] have it where I normally have it.<br>[07:23] Uh yeah, I guess it doesn't feel a<br>[07:25] little bit like Christmas. Um<br>[07:28] I feel like I feel like a lot of things<br>[07:30] that are coming now are<br>[07:35] um<br>[07:37] sort of laying the foundation for future<br>[07:38] things.<br>[07:40] Um so yeah, it's always fun to play with<br>[07:43] these things. I've lost my second column<br>[07:45] for some reason. I'm going to delete<br>[07:47] this. Do it again.<br>[07:50] Okay. So, let's duplicate the columns.<br>[07:56] There we go. Oh, it's probably because I<br>[08:02] Oh, it's because I removed<br>[08:05] block I need to add modify. Okay.<br>[08:08] Modified date.<br>[08:15] Let's make this<br>[08:17] a little bit bigger.<br>[08:24] Looks better.<br>[08:26] That looks better. Um, okay. And then<br>[08:29] let's add some content.<br>[08:33] Um, oh, the collaboration stuff. Yeah, I<br>[08:36] need to I need to dive into that at some<br>[08:37] point. Um, I just haven't had time. But<br>[08:42] that that that one I'm really looking<br>[08:43] forward to because the moment and I'm<br>[08:45] sure you experienced this as well. If<br>[08:47] you want to work on a post that's going<br>[08:49] to get published in the WordPress site,<br>[08:50] it has to be in a Google doc somewhere<br>[08:51] first and then<br>[08:55] um making updates to it is a pain. So<br>[08:58] that what I am quite excited about would<br>[09:01] agree with you there.<br>[09:03] Okay.<br>[09:06] See here now.<br>[09:08] So, the markup is not going to look like<br>[09:11] this because it's going to be the newer<br>[09:12] markup. So, let's see what the markup<br>[09:14] looks like.<br>[09:16] Um,<br>[09:19] make this bigger.<br>[09:24] Okay. So, there's the current date,<br>[09:26] there's the date, post date, date, time,<br>[09:29] all of that. Okay. There we go. Post<br>[09:31] date metadata. It's using block<br>[09:33] bindings. It's the core post data<br>[09:36] modified field.<br>[09:38] Um,<br>[09:41] so that is I guess what it's supposed to<br>[09:43] do. Yeah, that's what it's supposed to<br>[09:44] do.<br>[09:46] Um,<br>[09:55] okay. So, let's save that post.<br>[10:00] Why can't we see? Oh, you can't see what<br>[10:01] I Oh, flip. That's no good.<br>[10:05] Um, let me try and sit. You You can<br>[10:09] That's interesting. I wonder if<br>[10:15] my screen has done this before where it<br>[10:16] freezes.<br>[10:19] So, let me<br>[10:22] let me switch screens.<br>[10:26] Okay.<br>[10:28] So, let's do that. This happens. There<br>[10:32] you go. So you should see the GitHub<br>[10:33] issue now in uh this happens when my<br>[10:36] monitor gets disconnected which I did<br>[10:37] myself manually by mistake. Um<br>[10:41] so you should now see the screen and<br>[10:43] then you should see the GitHub and I can<br>[10:45] see that on my side as well. So thanks<br>[10:47] for pointing that out. Um okay so just<br>[10:50] let's just go back to the code editor.<br>[10:52] So<br>[10:53] the date block is using<br>[10:57] date time as its source fun side set to<br>[10:59] large.<br>[11:01] The modified block is using the block<br>[11:03] binding.<br>[11:05] It's interesting how it uses post date<br>[11:07] on both.<br>[11:08] There's the modified date class. There's<br>[11:10] the modified field.<br>[11:13] Um,<br>[11:17] so<br>[11:21] now if I save,<br>[11:25] so let's exit the code editor and let's<br>[11:29] publish this.<br>[11:34] And now if I change the publish date to<br>[11:37] let's say Friday.<br>[11:42] Save that.<br>[11:45] And let's refresh this.<br>[11:50] Okay. It doesn't look like a modified<br>[11:51] status change. Let's have a look at the<br>[11:53] code.<br>[12:02] It's not going to be the<br>[12:09] So, this one.<br>[12:15] Oh, there we go. Post date. There we go.<br>[12:17] So, I can change that to the post date,<br>[12:18] not to the modified date.<br>[12:22] And then that will always stay with<br>[12:27] current modified date, which is whatever<br>[12:28] today's date is.<br>[12:34] That's actually kind of cool. You could<br>[12:35] you could you could kind of set that up<br>[12:37] on your blog posts and you could update<br>[12:38] them and you could show the original<br>[12:41] like the original post date<br>[12:44] and the modified date. I'm actually busy<br>[12:47] updating a post on my site. This could<br>[12:48] actually be quite cool. Um,<br>[12:53] I'm not sure what the date block did<br>[12:55] beforehand. I guess it just showed it<br>[12:57] display type modified.<br>[13:00] I'd need to go back to<br>[13:09] post changes on publish.<br>[13:16] Okay. Well, that seems to work pretty<br>[13:18] well. Um, I'm not sure what it did<br>[13:20] beforehand, but it's doing it's doing<br>[13:22] what I expected to do now. The post date<br>[13:24] is showing the post date. The modified<br>[13:25] date is showing whatever the last<br>[13:26] modified date was. Um,<br>[13:32] I'm not quite sure the difference<br>[13:33] between<br>[13:36] here. Make the date block except Oh. Oh,<br>[13:43] so you weren't able to set the date<br>[13:46] manually by the looks of it.<br>[13:52] post date and last modified date<br>[13:54] variations of the block. So, it looks<br>[13:55] like all of this this modifi modified<br>[13:58] date stuff here was the update. Um,<br>[14:03] what would be interesting would be to<br>[14:04] check out what it was like before 6.9.<br>[14:07] So, I'm going to<br>[14:10] open up this AI experiment site that I<br>[14:12] have<br>[14:14] and I'm going to replicate this<br>[14:16] functionality in that site and just see<br>[14:18] what it looks like. So, this is a oh<br>[14:20] blast. This is running 6.9 as well.<br>[14:22] Okay. Uh let's quickly create a new<br>[14:27] site.<br>[14:29] So, we'll just call this<br>[14:32] 3.8.<br>[14:35] Uh, and I want it to use<br>[14:39] the latest version of WordPress cuz I<br>[14:40] want to see<br>[14:43] what this did before.<br>[15:06] Okay, let's have a look here. Um,<br>[15:15] oh, this is I said latest, didn't I? Now<br>[15:18] it's giving me very latest. I don't want<br>[15:19] latest. I wanted I wonder if I can<br>[15:21] change<br>[15:22] No, I can't. Can you change the<br>[15:24] WordPress version? Yes, you can.<br>[15:25] Excellent. Okay, let's go to 6.8.<br>[15:29] save.<br>[15:36] I thought latest would have been 6.8.<br>[15:38] Didn't realize it would give me 6.9.<br>[15:41] Um,<br>[15:50] let's wait for that to finish.<br>[15:56] Okay, let's refresh.<br>[16:07] Okay, so let's run X3. So let's go and<br>[16:09] create the post story again. Let's just<br>[16:11] add new post<br>[16:16] test<br>[16:17] blocks.<br>[16:20] Add some columns again.<br>[16:28] It said current date. No. What am I<br>[16:29] doing? Ah,<br>[16:36] current date.<br>[16:40] And then just a date block. Okay.<br>[16:46] Duplicate that.<br>[16:50] And that's modified date.<br>[16:55] And this needs to change to<br>[16:59] modified date block.<br>[17:05] There's modified date. Okay.<br>[17:08] Um, let's make these a bit bigger so we<br>[17:10] can see them. I think I made them large.<br>[17:15] Large. Okay. Let's see what the code<br>[17:17] looks like.<br>[17:23] Yeah. So this is display type modified.<br>[17:26] Okay.<br>[17:28] Yeah. So that's the difference. I can't<br>[17:33] there's only these options here. So<br>[17:34] default format link to post and display<br>[17:38] last modified date. Those are the<br>[17:39] settings. Whereas now<br>[17:42] I have this modify date option up here<br>[17:45] and I can transport either post date or<br>[17:48] modify date.<br>[17:50] Um<br>[17:55] only shows if the post date has been<br>[17:58] modified.<br>[18:00] Interesting.<br>[18:04] Okay. So that's the difference there.<br>[18:06] Using block bindings as a source. I'm<br>[18:09] not quite sure what the difference is<br>[18:10] under the hood to be honest.<br>[18:13] Um,<br>[18:20] like independent of the current post,<br>[18:22] publish or last modified.<br>[18:25] So that sounds like I could<br>[18:30] Oh. Oh. Oh. room. So, what I could do<br>[18:38] is I could create a custom source<br>[18:42] that would always return.<br>[18:46] So, that's something I can do<br>[18:47] programmatically.<br>[18:49] Um,<br>[18:55] so let me find<br>[18:59] um I think it was in<br>[19:02] 6.7 that you create custom sources.<br>[19:16] as you are.<br>[19:21] It's the whole thing about custom<br>[19:22] sources in the very first one. Yeah,<br>[19:25] block binding source. Here we go.<br>[19:33] To by<br>[19:39] I think this is actually even in the<br>[19:41] hang on the block binding documentation.<br>[19:58] Registering a custom source. Registering<br>[19:59] a custom source requires defining a<br>[20:01] decent name and label a call back. Once<br>[20:04] the source is registered any supporting<br>[20:05] blocks metadating bindings attribute can<br>[20:08] so what I could do is I could register a<br>[20:09] custom source<br>[20:12] um and then I would be able to apply<br>[20:14] that source<br>[20:16] to the date block. So let's do that. I<br>[20:20] think I think that's how it works. Let's<br>[20:22] have a look. Um so let's go into testing<br>[20:25] 6.9<br>[20:29] and let's create a little custom source<br>[20:31] plugin.<br>[20:34] Uh<br>[20:37] so let's say a new directory and let's<br>[20:41] say custom date source.<br>[20:57] Start creating a plugin<br>[21:03] uh custo source for<br>[21:08] bindings<br>[21:14] and I'll just leave it as version one.<br>[21:15] Okay. So then I'm not going to worry<br>[21:18] about all the exiting and stuff that<br>[21:20] this code is suggesting. I'm just going<br>[21:21] to grab this.<br>[21:24] See if I can get this to work. Okay.<br>[21:26] Okay. So, I'm registering a blockbinding<br>[21:27] source. So, let's call it<br>[21:30] uh custom date source and let's call it<br>[21:36] um I don't know what should we make up.<br>[21:40] Um<br>[21:50] let's say it's<br>[21:52] okay. What I'm going to call it talk<br>[21:53] date. So<br>[21:55] to give you some context, I sometimes<br>[21:57] will um<br>[22:01] link to blog posts on my blog when I am<br>[22:05] presenting talks<br>[22:07] and that's what I'm going to basically<br>[22:10] create the talk date the talk this is<br>[22:12] linked to trying to make it random for<br>[22:14] now custom date source source block<br>[22:17] instance post ID post ID that's fine if<br>[22:20] is set so ars key return blah blah blah.<br>[22:25] Um,<br>[22:28] do I need the key? Where's the key?<br>[22:32] Um,<br>[22:43] I'm not too worried about that. I'm just<br>[22:45] going to return for now. I'm just going<br>[22:46] to return the date.<br>[22:48] So, let's just go return. So what you<br>[22:51] would normally do is you would for<br>[22:53] example store the talk date on the blog<br>[22:56] post or whatever as a post meta and then<br>[22:58] you could return it from there. What I'm<br>[23:00] just going to do is make up a talk date.<br>[23:02] So I'm going to say talk date equals<br>[23:05] and<br>[23:10] I spoke at a conference two weekends<br>[23:13] ago. So I'm going to choose that date<br>[23:14] for now manually.<br>[23:16] Uh so it was the 8th of November. Okay.<br>[23:22] Uh, so let's go with<br>[23:26] Oh, here's an interesting point. I<br>[23:27] wonder what kind of date format that's<br>[23:29] going to be. Let's just go with this.<br>[23:31] November 8th,<br>[23:33] was it the 8th of November? Two weekends<br>[23:36] ago. Where are we now? 18 17 16 15.<br>[23:40] Yeah, it's two weeks ago. So, we'll go<br>[23:42] with this November 18, 2025 and just see<br>[23:44] what it does. Um,<br>[23:47] November 8th.<br>[23:50] 2025.<br>[23:52] Okay. So, we'll leave it like that<br>[23:55] and then we'll return the top date.<br>[23:58] Okay.<br>[23:59] Um<br>[24:03] theoretically that should just work.<br>[24:08] Let's see if that shows up<br>[24:11] as a source. Um okay, let's save the<br>[24:15] post.<br>[24:18] Let's go back over here.<br>[24:21] Register the plugin<br>[24:24] as my custom D source. Let me make sure<br>[24:26] that debugging is on.<br>[24:42] Okay, that's on.<br>[24:44] Um,<br>[24:48] so with that in play,<br>[24:53] let's go back to the post.<br>[24:58] And now I should<br>[25:04] doesn't show up.<br>[25:06] Um,<br>[25:09] now,<br>[25:10] interestingly enough,<br>[25:13] my colleague Juanma sent me a message.<br>[25:17] Um, pull this off screen quickly. Sent<br>[25:20] me a message earlier today about the<br>[25:21] date block. So, I'm just going to open<br>[25:24] up work Slack and just see if his<br>[25:25] message is related to<br>[25:29] um<br>[25:33] so he sent me this link<br>[25:38] has name<br>[26:33] Set the date block in the block tool.<br>[26:35] Use the pencil icon to set an arbitary<br>[26:37] date.<br>[26:48] Oh, he's saying just the date.<br>[26:52] Oh, that's what it's doing. It's not a<br>[26:54] custom source. It's just you can select<br>[26:56] an arbitrary date. Okay, I missed that.<br>[26:59] All right. So, for example, let's<br>[27:02] duplicate that again.<br>[27:11] So, let's say<br>[27:14] library<br>[27:15] date<br>[27:17] and then modify date. So, this we can<br>[27:20] just replace with a date block.<br>[27:23] And this I believe you couldn't do<br>[27:24] before.<br>[27:27] Um, so you just go date block<br>[27:31] and here let's change this to large. So<br>[27:36] currently it's just it's choosing<br>[27:38] today's date. But what I can do is I can<br>[27:41] select a custom date, the post date or<br>[27:43] the modified date. If I specify post<br>[27:46] date, it'll be the post date. That's<br>[27:47] kind of cool. If I can specify the<br>[27:48] modified date, it'll be the current<br>[27:49] modified date or<br>[27:53] Um, if I leave it on the post date, then<br>[27:56] I can select here<br>[27:58] and I can change.<br>[28:01] Oh, but this actually changes the<br>[28:03] publish date. Interesting. How do I<br>[28:05] clear<br>[28:08] if I can untick post date? No, you can't<br>[28:10] untick posted once it's ticked. Okay.<br>[28:13] Um,<br>[28:15] so let's remove the date block.<br>[28:18] Let's add it again.<br>[28:20] But what I can now do is here before<br>[28:24] transforming it to a v before<br>[28:26] transforming it to a variation I can<br>[28:28] select an arbitrary date.<br>[28:30] Um so I can say make it November the 1st<br>[28:32] or November the 8th or whatever the case<br>[28:35] may be which wasn't possible before.<br>[28:37] Okay<br>[28:39] I kind of like that. Um<br>[28:42] I still I think the custom source I<br>[28:46] think I did incorrectly. Uh, but I'm at<br>[28:48] least some understanding how these<br>[28:50] things work.<br>[28:51] I still kind of like the idea of having<br>[28:53] this modified date and tying it to the<br>[28:55] modified date is cool. Um, being able to<br>[28:58] have an arbitrary data is school. I want<br>[29:00] to see what the code looks like.<br>[29:03] Um,<br>[29:05] so that's the first one. That's the<br>[29:07] modified date. And then that just<br>[29:09] specifies a specific date time. Okay,<br>[29:11] cool.<br>[29:13] All right. So that's block bindings<br>[29:15] updates coming our way. um can do a<br>[29:17] whole bunch more with block bindings<br>[29:18] than what we used well with a date block<br>[29:20] at least used to be able to before. Uh<br>[29:23] so that's that one out of the way.<br>[29:26] Then the image block um<br>[29:32] where is that help test post image block<br>[29:34] allows binding of the caption.<br>[29:38] So when saving the image block include a<br>[29:41] third caption element<br>[29:44] um bind the caption attribute<br>[29:52] certain image block<br>[29:54] insert markup to update insert markup to<br>[29:57] bind its caption attribute to a block<br>[29:59] binding source.<br>[30:03] Interesting.<br>[30:11] Insert markup to bind its caption<br>[30:12] attribute to a block branding source.<br>[30:14] Okay. So, that I'm going to have to use<br>[30:38] this kind of stuff here.<br>[30:41] Okay.<br>[30:44] So, let's create a custom source for<br>[30:47] that. Um,<br>[30:54] disable this plugin quickly.<br>[30:58] I'm just going to rename it and call it<br>[30:59] custom sources<br>[31:02] just to make my life a bit easier.<br>[31:08] So, as I mentioned earlier, typically<br>[31:10] your custom sources would be fetching<br>[31:12] data from post meta.<br>[31:15] Um, but I'm going to hard code these<br>[31:17] values today.<br>[31:19] So, we'll go custom sources.<br>[31:26] Okay. So, let's go custom source and<br>[31:29] then we'll say<br>[31:32] uh image caption.<br>[32:09] I'll be right back.<br>[32:24] things that means I forget to do.<br>[32:32] Okay, so I've got my custom image<br>[32:34] caption.<br>[32:36] Um,<br>[32:42] why does PHP some have little HalfLife<br>[32:44] icons?<br>[32:48] What's that about?<br>[32:50] Oh, it's showing a different function.<br>[32:54] Interesting.<br>[33:08] Oh, it actually interesting<br>[33:12] actually shows you<br>[33:16] anonymous functions.<br>[33:21] Sorry, I just saw this today.<br>[33:23] Um,<br>[33:30] that's crazy. I didn't even notice that<br>[33:31] previously. Anyway, uh, getting<br>[33:33] distracted by my own developer tools.<br>[33:37] Um,<br>[33:39] okay.<br>[33:41] So, image block. Okay. Insert an image<br>[33:44] block<br>[33:46] in the code editor. Update it markup to<br>[33:48] bind it caption attribute to a source.<br>[33:51] Switch back to the visual editor and<br>[33:53] enable it capture. Okay, so let's start.<br>[33:56] Does this thing have some media? Just<br>[33:58] check here.<br>[34:00] Uh, yes, got some images. Excellent.<br>[34:02] Okay, so let's go back to post. Let's go<br>[34:05] back to plugins and let's enable that<br>[34:07] custom source.<br>[34:09] Source.<br>[34:12] No errors. Good. Go back to posts.<br>[34:17] Let's go.<br>[34:25] testing image<br>[34:28] bindings.<br>[34:30] Uh, let's add an image block.<br>[34:33] Let's add an image. Go birdie.<br>[34:37] Um,<br>[34:42] all right.<br>[34:44] Now, one of the things that I don't<br>[34:45] currently like about block bindings is<br>[34:47] that I have to go and edit this<br>[34:49] to support the caption custom source. It<br>[34:52] would be cool if there was a way to do<br>[34:54] this in the editor. Um,<br>[34:58] but anyway, it is what it is. So, in the<br>[35:02] code editor,<br>[35:05] um,<br>[35:08] I'm going to need to,<br>[35:12] it's the metadata<br>[35:14] metadata bindings,<br>[35:18] blah, blah, blah.<br>[35:21] Um, so it's going to be bindings,<br>[35:24] caption, the source, and if there are<br>[35:26] any arguments. I'm not going to pass in<br>[35:27] any arguments. So, let me grab this.<br>[35:30] Stick it in some JSON quickly.<br>[35:39] Okay. Metadata bindings. We're binding<br>[35:42] the<br>[35:44] caption attribute<br>[35:47] to the custom source.<br>[35:53] The day we can get to a point where I<br>[35:54] can do this in the editor will be very<br>[35:57] cool. I don't need arguments for this<br>[36:00] thing. So, I'm fine to do it like that.<br>[36:02] And then I'm just going to stick this<br>[36:03] all on one line. It'll be easier to<br>[36:04] stick it in the edit eventually.<br>[36:25] Okay. So that will be the uh do one<br>[36:28] more. One, two, three, four. That's it.<br>[36:32] Okay. So let's pop this in here.<br>[36:35] Sorry. Okay. Uh V class image.<br>[36:40] Can it be image ID source? Oh, I need to<br>[36:43] add the meta to this. Okay. So let's<br>[36:44] just take all of this out.<br>[36:48] So did the right thing.<br>[36:52] And then I need to add the metadata.<br>[37:03] Okay,<br>[37:07] there we go.<br>[37:15] So, once I've updated the metadata, then<br>[37:18] it says switch back to the visual editor<br>[37:21] and enable its caption. Okay, let's hope<br>[37:24] this works.<br>[37:32] Huh? Look at that.<br>[37:35] It did work. Okay. Um,<br>[37:39] so then<br>[37:43] enable this caption. So I think to<br>[37:45] enable the caption, we've actually got<br>[37:46] to select<br>[37:50] Oh, I think I think that's all it needs<br>[37:53] is the caption.<br>[37:56] And then it actually gets<br>[38:00] it gets the caption from there. So it's<br>[38:01] going to return that caption. Okay. So<br>[38:05] now if we<br>[38:09] uh save publish the post verify that<br>[38:12] image block contains an empty fig<br>[38:13] caption element. Okay. So let's publish.<br>[38:16] Let's just see what this does on the<br>[38:17] front end.<br>[38:18] Um<br>[38:22] let's view this post.<br>[38:25] And let's inspect<br>[38:42] where it's supposed to be. Uh, reload<br>[38:44] and switch the code to verify the image<br>[38:46] lock contains an empty f caption<br>[38:48] element. Okay, let's see.<br>[38:58] Sort image caption there.<br>[39:19] I'm not seeing the image caption<br>[39:20] elements<br>[39:36] capture. Interesting.<br>[40:01] I wonder if this is because I'm doing a<br>[40:03] custom source in PHP.<br>[40:06] What if my custom source needs to do<br>[40:07] something different for this to work?<br>[40:43] So, one of two things is happening.<br>[40:45] Either I'm registering my custom source<br>[40:46] incorrectly<br>[40:48] or the guys testing this are using a<br>[40:50] JavaScript custom source which<br>[40:56] is done like this.<br>[41:00] Um,<br>[41:44] Get call back. Should return.<br>[42:19] What's not<br>[42:35] source call back function. How to get<br>[42:37] the value from the source and pass it to<br>[42:39] a block attribute. Any block that<br>[42:41] supports can get value by setting its<br>[42:43] binding attributes of value<br>[43:00] metadata bindings<br>[43:04] content but that needs to be captured.<br>[44:45] photo.<br>[45:05] Okay, I'm going to need to do some<br>[45:06] digging around this because<br>[45:24] I'm not sure why this doesn't work.<br>[45:28] Field.<br>[45:34] Okay, I'm going to make a note around<br>[45:36] that one and<br>[45:40] follow up before I get too much into the<br>[45:43] weeds.<br>[45:46] Um,<br>[45:49] feel like there could be something I'm<br>[45:50] doing wrong. I'm not 100% sure myself.<br>[45:53] So, let's get image caption PHP source.<br>[45:59] Okay, let's uh let's move on.<br>[46:04] I definitely didn't.<br>[46:11] It's definitely<br>[46:14] turning this, but I feel like it's doing<br>[46:15] it the wrong place.<br>[46:19] Um<br>[46:37] It's definitely hooking up the caption<br>[46:41] on the image to the custom source.<br>[46:47] Binding this caption.<br>[46:52] Okay, I'm going to have to do some more<br>[46:54] digging on that one. I'm not sure<br>[46:55] myself.<br>[46:57] I'll see if that's a bug or if I'm just<br>[46:58] being dumb.<br>[47:02] Um, okay. Let's<br>[47:08] move on to something else.<br>[47:13] Um, the other thing that I was looking<br>[47:16] through was where is it now? There's<br>[47:20] some block bindings improvements in<br>[47:22] WordPress 6.9.<br>[47:24] Um,<br>[47:26] so there's a filter block binding<br>[47:28] supported attributes<br>[47:30] by block type.<br>[47:34] Um, let's have a look in the code<br>[47:38] what that does.<br>[47:46] So that will give you the supported<br>[47:48] block attributes.<br>[47:51] Okay.<br>[48:00] So it used to just be the block binding<br>[48:02] supported attributes<br>[48:05] um by block type. Now you can actually<br>[48:07] specify by block type.<br>[48:10] Um,<br>[48:13] so for example, if we did something like<br>[48:16] this,<br>[48:19] uh,<br>[48:23] let's do this. Let's say, um,<br>[48:30] no, where did it come from?<br>[48:36] And block type would be what? I think<br>[48:39] it's cool.<br>[48:57] That's probably going to need to get<br>[49:00] Let's find the other one.<br>[49:12] Oh,<br>[49:14] there's no reference.<br>[49:18] That seems weird.<br>[49:29] Okay.<br>[49:31] Oh, it's just 6.9.<br>[49:34] stupid.<br>[49:36] This is all 6.9.<br>[49:44] Okay. So, let's say core image<br>[50:04] blocked. Just see something here.<br>[50:08] Don't do this in the real world, folks.<br>[50:10] But I'm just going to log something<br>[50:14] to the error lock because I want to see<br>[50:16] what the block type would be.<br>[50:20] Um,<br>[50:25] post<br>[50:30] That's fine.<br>[50:38] There's nothing going on.<br>[50:46] Okay, let's see. Okay, so it's just<br>[50:54] so let's go with core image for example.<br>[51:21] Okay.<br>[51:25] Ported block attributes.<br>[51:49] Okay.<br>[51:52] Clear the log.<br>[51:55] So now if I refresh this,<br>[51:59] this will give me the supported<br>[52:01] attributes for the image block, which is<br>[52:03] an array. There we go. ID, URL, title,<br>[52:05] alt, caption. Okay, so<br>[52:10] not sure why that does that, but it's<br>[52:12] there.<br>[52:14] Um, allows developers to customize which<br>[52:17] other blocks attributes can be<br>[52:18] connected.<br>[52:21] I'm guessing you can't add<br>[52:25] Maybe you can, maybe you can add,<br>[52:29] but it wouldn't actually do anything.<br>[52:31] You would need to actually then<br>[52:34] um<br>[52:36] do something with it.<br>[52:38] But that's anyway what that does.<br>[52:42] Um developers can now register custom<br>[52:44] sources in editing UI by adding a get<br>[52:46] fields list method to the source<br>[52:48] registration function.<br>[52:50] This function must return an array of<br>[52:52] objects with following properties.<br>[52:54] Label, type, arguments.<br>[52:57] This is an example that can be tried<br>[52:59] directly in the console from the block<br>[53:00] editor.<br>[53:03] Okay, so it looks like we can just copy<br>[53:05] this code and this stuff will show up.<br>[53:08] So let's see if that works.<br>[53:10] Um,<br>[53:16] so let's go to a post.<br>[53:26] Test custom test.<br>[53:30] What's it called?<br>[53:39] Custom sources field list.<br>[53:47] Um<br>[53:50] Don't know why stream elements suddenly<br>[53:51] posted that but okay. Uh so let's open<br>[53:55] up the develop tools<br>[54:00] and let's paste this in.<br>[54:07] Okay. So it's called state haikus haikus<br>[54:10] blah blah blah<br>[54:12] gets values. If it's haiku all these<br>[54:15] kind of things then it returns<br>[54:17] information. So let's run that.<br>[54:19] And now if we go paragraph<br>[54:24] now<br>[54:30] fonts maybe are the attributes. So we<br>[54:33] can select the content attribute<br>[54:36] and then from there we can select<br>[54:38] haikus. Oh there's a little popup.<br>[54:41] Um,<br>[54:44] and then when you select it, it actually<br>[54:45] returns it and pops it in there. Now,<br>[54:48] this is kind of cool if you want to have<br>[54:49] sort of pre predefined content for<br>[54:51] different blocks or predefined elements.<br>[54:53] You could have maybe for your image<br>[54:55] block, you could have different images<br>[54:56] loaded. Um,<br>[54:59] obviously this looks like it only<br>[55:01] supports the front end UI. So, you<br>[55:05] probably need to register the source in<br>[55:06] JavaScript and then hook up the fields<br>[55:08] list.<br>[55:10] Uh, I feel like that's probably what's<br>[55:12] happening with the image caption as<br>[55:13] well. I need to register it in<br>[55:14] JavaScript.<br>[55:15] Um,<br>[55:18] so that might be something to that maybe<br>[55:20] something to play with next week. Um,<br>[55:22] maybe next week I'll actually try and<br>[55:25] see if the custom sources work in<br>[55:26] JavaScript. Like I'll put together a<br>[55:28] plug-in that loads up some JavaScript in<br>[55:29] the editor, maybe does the caption for<br>[55:32] the image, maybe puts in some content.<br>[55:34] That could be a fun little project to<br>[55:35] actually create something with all of<br>[55:37] this. Um,<br>[55:39] so I'll have a little think about it. I<br>[55:41] quite like all of this. Uh, it does<br>[55:44] work. It does do what what it needs to<br>[55:45] do, which is which is cool.<br>[55:48] Um,<br>[55:55] I will admit I don't spend enough time<br>[55:58] with block bindings to really get into<br>[56:00] the weeds of this. So,<br>[56:04] I probably should do a followup stream<br>[56:06] next week where I actually use some of<br>[56:07] this stuff. So, I'm thinking<br>[56:10] let's think uh let's think about<br>[56:16] uh<br>[56:20] h<br>[56:26] wonder if there's a way we could<br>[56:32] use this code<br>[56:35] to register some like image captions<br>[56:38] that the user could select from<br>[56:41] um<br>[56:44] as like a list of custom sources. That<br>[56:46] could be an interesting little project.<br>[56:50] So,<br>[56:54] uh<br>[56:56] custom image caption source<br>[57:00] Um<br>[57:08] caption<br>[57:12] source enable it returns it supports<br>[57:19] custom fields.<br>[57:21] That could be fun. Um, and I could use<br>[57:25] this kind of stuff.<br>[57:37] I think that's what I'm going to do next<br>[57:38] week is I'm going to play with that.<br>[57:42] So anyway, check out all those things.<br>[57:44] Um,<br>[57:46] this seems to be the main tracking issue<br>[57:48] for all the block bindings UI stuff.<br>[57:51] So, I will<br>[57:53] I will share all of these links that I<br>[57:55] have here<br>[57:58] um<br>[58:00] pop this one in as well<br>[58:03] in the description when I upload this to<br>[58:04] YouTube. So, if you want to catch those<br>[58:06] there. Um<br>[58:11] and then this is the blockbinding<br>[58:13] improvements dev note.<br>[58:16] Uh so, so check that out. That's<br>[58:18] probably where most information is.<br>[58:22] Um,<br>[58:25] what I what I do wish flock bindings had<br>[58:28] I wish there was a way, for example,<br>[58:30] when I added the image.<br>[58:33] Um,<br>[58:35] and I think this is possible. I just<br>[58:37] can't remember how because it's been a<br>[58:39] while since I've done this, but I'd love<br>[58:40] it if I could<br>[58:43] like enable attributes and then<br>[58:47] on the image block. I wonder Let's<br>[58:51] just see something.<br>[59:05] Okay, let me just hang on a sec. I'm<br>[59:07] going to sneeze again maybe or yawn.<br>[59:13] Happens every time. I feel like I'm<br>[59:14] going to sneeze and then I yawn. It's so<br>[59:16] annoying. Um,<br>[59:24] now you see that's interesting. So when<br>[59:25] I add a paragraph, there's no attributes<br>[59:28] option.<br>[59:31] But<br>[59:34] where is it now?<br>[59:36] With this stuff,<br>[59:40] I can basically<br>[59:49] Where does the fields list hook into<br>[59:51] things? Oh, I apply it to the custom<br>[59:53] source.<br>[60:36] What confuses me about this is<br>[60:45] theoretically this this source here<br>[60:51] How does it know<br>[60:55] to apply to paragraphs?<br>[61:07] Would it work on headings as well? If I<br>[61:09] run that code, let's have a look.<br>[61:29] Yes, indeed it would.<br>[61:34] It would. So,<br>[61:37] the source<br>[61:39] seems to<br>[61:42] Let's go back to the<br>[61:45] documentation.<br>[62:28] The one thing that confuses me is how do<br>[62:30] you<br>[62:38] It seems to be at the moment that if you<br>[62:39] register source is just available<br>[62:42] anything that supports. I mean is that<br>[62:45] true? If I<br>[63:04] does this look like now<br>[63:11] if I if I bind it to that what does it<br>[63:14] do?<br>[63:20] Okay. And what does the code look like?<br>[63:26] See then it updates<br>[63:28] bindings content.<br>[63:46] So is it because it returns<br>[63:49] bindings content?<br>[63:52] That's the part that confuses me like<br>[63:53] how how could I change this for example<br>[63:56] to work with<br>[63:58] let's say which one?<br>[64:03] Let's say the<br>[64:07] button text. Would that just work?<br>[64:22] Oh, it'll just work. It's an available<br>[64:24] source and anything that you can bind it<br>[64:25] to, it will just work.<br>[64:28] That's interesting. So, there's no<br>[64:30] there's no like<br>[64:33] um<br>[64:38] So, would I be able to add that to the<br>[64:40] image caption?<br>[64:43] Let's go image library.<br>[64:47] No, that wouldn't work.<br>[64:53] What if I<br>[65:01] Hang on.<br>[65:15] What if I did that?<br>[65:20] And then<br>[65:24] in the editor for the image, it's the<br>[65:26] metadata.<br>[65:33] One, two, three. One, two, three.<br>[65:42] Okay,<br>[65:45] that work. No.<br>[65:53] Okay. So,<br>[65:58] what if I<br>[66:01] save this Refresh.<br>[66:06] Run this again.<br>[66:10] And then click on the image. No, still<br>[66:13] don't. Okay, I need to dive into the<br>[66:16] image thing first. I was hoping it would<br>[66:17] just work on the image caption or<br>[66:19] something.<br>[66:21] So it looks like when you register a<br>[66:22] custom source,<br>[66:31] what I don't understand is why my<br>[66:36] image I think I think if it's in PHP,<br>[66:38] you need to actually specify<br>[66:42] what it's hooked into or something. I'm<br>[66:45] not sure. I'll need to stick to that.<br>[66:48] Okay. Um,<br>[66:51] I need to build something that actually<br>[66:53] I need to go back and find my notes and<br>[66:54] build something that loads some<br>[66:56] JavaScript code in the editor that I can<br>[66:58] play with this because I don't like<br>[66:59] sitting playing with it in in DevTools.<br>[67:03] um<br>[67:05] kind of wrap my head around this,<br>[67:08] but I like the fact that we're getting<br>[67:11] to a point where we can just select the<br>[67:12] block,<br>[67:14] have the custom sources, select from the<br>[67:16] custom sources, it automatically changes<br>[67:18] things. That's a very cool experience.<br>[67:21] Um so yeah, check it out. Uh see what<br>[67:24] you can figure out. I still haven't Can<br>[67:26] I<br>[67:29] update the hide? Yeah, I can. Let's see<br>[67:30] if that works. Yeah, that. Oh, that's<br>[67:32] just returning first IQ, second IQ.<br>[67:35] Interesting.<br>[67:37] Um,<br>[67:40] so I wonder why that does that.<br>[67:46] Oh, if<br>[67:51] interesting.<br>[67:56] So all of this means it assumes it's on<br>[67:58] a paragraph. Otherwise, it just returns<br>[68:00] the content.<br>[68:04] So, that's getting the title.<br>[68:07] So, you could, for example, have<br>[68:17] working on it. It's also working on a<br>[68:18] header because head of sports content.<br>[68:21] Um,<br>[68:27] I still wrap my head around all this.<br>[68:30] But that's where I'm going to call it<br>[68:31] today, folks. Um, so check out those<br>[68:33] blog posts and things. Check out blog<br>[68:35] bindings.<br>[68:36] Um, I still need to sort of unpack it in<br>[68:40] my head properly and kind of build<br>[68:41] something like what I would like to see<br>[68:43] is I have a custom source.<br>[68:47] I I upload I add one of the blocks that<br>[68:50] supports a custom source and then I can<br>[68:52] select from there um depending on what's<br>[68:55] what's supported. So, I'm gonna I'm<br>[68:57] gonna have a little bit more of a play<br>[68:58] with this. Try and build something with<br>[68:59] it so I can understand it. Um, but<br>[69:02] that's me me for today. Hope you've<br>[69:05] enjoyed my fumbling around. Um, and I'll<br>[69:08] see you next week. Bye-bye. <!-- deep-read:sections end -->