{"id":13182,"date":"2026-09-23T12:53:53","date_gmt":"2026-09-23T12:53:53","guid":{"rendered":"https:\/\/gts.sa\/234-k-adam-white-on-migrating-to-blocks-with-artisanal-care-and-enterprise-efficiency\/"},"modified":"2026-09-23T12:53:53","modified_gmt":"2026-09-23T12:53:53","slug":"234-k-adam-white-on-migrating-to-blocks-with-artisanal-care-and-enterprise-efficiency","status":"publish","type":"post","link":"https:\/\/gts.sa\/ar\/234-k-adam-white-on-migrating-to-blocks-with-artisanal-care-and-enterprise-efficiency\/","title":{"rendered":"#234 \u2013 K. Adam White on Migrating to Blocks With Artisanal Care and Enterprise Efficiency"},"content":{"rendered":"<details>\n<summary>Transcript<\/summary>\n<div>\n<p class=\"wp-block-paragraph\">[00:00:19] <strong>Nathan Wrigley:<\/strong> Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley.<\/p>\n<p class=\"wp-block-paragraph\">Jukebox is a podcast which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case, migrating to blocks at an enterprise level and what\u2019s involved in moving from a different CMS into WordPress.<\/p>\n<p class=\"wp-block-paragraph\">If you\u2019d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com\/feed\/podcast, and you can copy that URL into most podcast players.<\/p>\n<p class=\"wp-block-paragraph\">If you have a topic that you\u2019d like us to feature on the podcast, I\u2019m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com\/contact\/jukebox and use the form there.<\/p>\n<p class=\"wp-block-paragraph\">So on the podcast today, we have K. Adam White, or K. Adam for short. \u200aK. Adam is the principal engineer at Human Made, an enterprise WordPress consultancy. He\u2019s been involved with WordPress for almost 20 years, attending his first WordCamp in Boston back in 2011, and has contributed to WordPress Core and the broader open source ecosystem. Human Made is known for delivering complex projects, think high stakes, no room for mistakes? From global brands moving to WordPress.<\/p>\n<p class=\"wp-block-paragraph\">This time around, \u200aK. Adam delivered a presentation at WordCamp US focused on a crucial topic for anyone modernising their site, migrating to blocks. Human Made has been all in on the block editor since the Gutenberg plugin days, and the team now specialises in large scale migrations from other content management systems like Sitecore, as well as from other WordPress page builders.<\/p>\n<p class=\"wp-block-paragraph\">Our conversation focused on the technical and editorial challenges of moving tens, or hundreds, of thousands of posts into the world of blocks and patterns. We talked about the need to combine artisanal care, attention to detail in design, layout, and brand, with industrial scale. The ability to automate, audit and validate mass migrations without losing visual fidelity.<\/p>\n<p class=\"wp-block-paragraph\">We also discussed the use of patterns as a foundation for development, integrating custom and Core blocks, and leveraging new tools, including AI powered agents and open source plugins like Human Made\u2019s, own rehydrator, to streamline migration workflows.<\/p>\n<p class=\"wp-block-paragraph\">We also touched upon how clients are onboarded. The process of auditing legacy content. Strategies for training editorial teams on the block editor. And there\u2019s a frank reflection on gaps in WordPress, like granular content permissions.<\/p>\n<p class=\"wp-block-paragraph\">If you are contemplating a move to the block editor, wrestling with a massive content migration, or curious about what happens when enterprise complexity meets the flexibility of WordPress, this episode is for you.<\/p>\n<p class=\"wp-block-paragraph\">If you\u2019re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com\/podcast, where you\u2019ll find all the other episodes as well.<\/p>\n<p class=\"wp-block-paragraph\">And so without further delay, I bring you \u200aK. Adam White.<\/p>\n<p class=\"wp-block-paragraph\">I am joined on the podcast by K. Adam White. Hello, K. Adam.<\/p>\n<p class=\"wp-block-paragraph\">[00:03:41] <strong>K. Adam White:<\/strong> Hello. It\u2019s good to be here.<\/p>\n<p class=\"wp-block-paragraph\">[00:03:42] <strong>Nathan Wrigley:<\/strong> Yeah. Thank you for joining us. You have an interesting name. Just go on, I know it\u2019s totally off piste, but tell us about your name.<\/p>\n<p class=\"wp-block-paragraph\">[00:03:49] <strong>K. Adam White:<\/strong> Sure. It\u2019s a first initial K, and the middle name Adam that got conjoined in college and I quite like it. So I think in a sphere, and a particular niche in WordPress with so many Adams of so many different colours, then K. Adam is a little bit more me.<\/p>\n<p class=\"wp-block-paragraph\">[00:04:04] <strong>Nathan Wrigley:<\/strong> Yeah, nice. So we\u2019re in the corridor, so forgive any noise that you hear on this podcast episode. We can\u2019t avoid it. We\u2019re in the corridor at \u200aWordCamp US, and you have done, some presentation work this time around. Do you want to just tell us, I mean I presume it\u2019s happened because we\u2019re at the very closing stages of the conference. How did it go?<\/p>\n<p class=\"wp-block-paragraph\">[00:04:21] <strong>K. Adam White:<\/strong> It went, as far as I can tell, quite well. My session was early yesterday, right after the morning keynotes in that early slot where everyone\u2019s coffee has kicked in, and the fatigue of the conference hasn\u2019t quite set in yet.<\/p>\n<p class=\"wp-block-paragraph\">So I had a great audience and the talk I thing went quite well. I\u2019ve had a number of different conversations off the back of it on various different topics that I covered. So the breadth of those discussions has been really exciting for me.<\/p>\n<p class=\"wp-block-paragraph\">[00:04:44] <strong>Nathan Wrigley:<\/strong> So that is going to be the meat and the bones of what we\u2019re going to talk about today. But first, if you don\u2019t mind, let\u2019s talk a little bit about you and what you do and where you work, just so that we can paint your credentials if you like.<\/p>\n<p class=\"wp-block-paragraph\">So tell us about your job, how long you\u2019ve been in the WordPress space? Who do you work for? Et cetera.<\/p>\n<p class=\"wp-block-paragraph\">[00:04:59] <strong>K. Adam White:<\/strong> Yeah. My job is principal engineer at Human Made. We\u2019re a WordPress enterprise consultancy, and I have been there nine years. I\u2019ve been in the WordPress community quite a lot longer than that. My first WordCamp was WordCamp Boston 2011, which is a mind boggling 15 years ago now. And before that, I had been using WordPress personally since 2007. So we\u2019re coming up on 20 years of involvement, at least as a user. And then, became a contributor in the early 2010s around 2013, I think my first commit landed.<\/p>\n<p class=\"wp-block-paragraph\">[00:05:25] <strong>Nathan Wrigley:<\/strong> Yeah, nice and Human Made, if you haven\u2019t heard, we\u2019ll put the links into the show notes, anything that K. Adam mentions today, we will put us a link on the WP Tavern podcast episode website, so you can click through to it. But go and check out Human Made, definitely one of the big hitters. I think it\u2019s fair to say in the WordPress space.<\/p>\n<p class=\"wp-block-paragraph\">[00:05:40] <strong>K. Adam White:<\/strong> It\u2019s very kind of you to say so.<\/p>\n<p class=\"wp-block-paragraph\">[00:05:42] <strong>Nathan Wrigley:<\/strong> You did your presentation and it was entitled, Migrating to Blocks. I\u2019m going to intuit from that, that Human Made is all in on the block editor. You\u2019re not using some sort of other proprietary platform. Would that be the case?<\/p>\n<p class=\"wp-block-paragraph\">[00:05:55] <strong>K. Adam White:<\/strong> That would be the case. We were very early adopters of Gutenberg back in its plugin days. We were doing work before it was merged for building out some early block sites, testing out what we could do. Learning how to build and change our theme development processes to move in a more block oriented direction, and then follow that directly into the Full Site Editor world.<\/p>\n<p class=\"wp-block-paragraph\">And it\u2019s been a great ride. We do work with other page builders and other blocks, platforms and frameworks. We do tend to, as a company, work on projects that have some sort of particular technical complexity that made someone come to us rather than a different agency.<\/p>\n<p class=\"wp-block-paragraph\">That does mean that we are broadly specialised in WordPress as a platform, including many of those page builders. We\u2019ve worked with Elementor, we\u2019ve worked with Divi, Beaver Builder, but we as a company will always advocate for the block editor and the site editor. And we have our own processes oriented more and more towards delivery with that framework in mind.<\/p>\n<p class=\"wp-block-paragraph\">I think that the thing that is bringing some of the companies that we help to migrate to WordPress into this ecosystem is the flexibility and the quality of the editorial experience. And personally, my opinion is that Gutenberg does that leaps and bounds better than any of our other page builders that don\u2019t have that native integration into the platform.<\/p>\n<p class=\"wp-block-paragraph\">[00:07:09] <strong>Nathan Wrigley:<\/strong> So if a client comes to you and they are agnostic as to what you are going to build with, your default posture would be we are going to use the block editor.<\/p>\n<p class=\"wp-block-paragraph\">[00:07:16] <strong>K. Adam White:<\/strong> Absolutely default.<\/p>\n<p class=\"wp-block-paragraph\">[00:07:17] <strong>Nathan Wrigley:<\/strong> Okay. And do you have to do any level of persuasion anymore? I\u2019m guessing if we were to rewind the clock, let\u2019s go to 2017, soon after Gutenberg started to become more widely available. I imagine there was quite a bit of explaining to do. Do you still have to do any of that? Or is it a case now that the enterprise people understand what\u2019s going on, and there\u2019s less of a back and forth about whether they should use blocks and patterns and whatever else?<\/p>\n<p class=\"wp-block-paragraph\">[00:07:41] <strong>K. Adam White:<\/strong> If we are building from scratch, we haven\u2019t found there is any reluctance. Particularly if people are coming from a different content management system, particularly a different enterprise content management system. The editor is so compelling, that there\u2019s never any objection to using it. They might ask, should we use this or some other thing I\u2019ve heard of? And we can say, the block editor is built in. We feel that it\u2019s the most robust and future proof platform that you can choose. So we would recommend going that route rather than adding in another plugin, however good they are.<\/p>\n<p class=\"wp-block-paragraph\">But we do still, nonetheless, have some projects where they are already on a page builder, and they might have invested a lot of training. We might have an entire business school worth of people that are very comfortable with whatever their existing system is, whether that\u2019s Beaver Builder or something else, et cetera, Elementor.<\/p>\n<p class=\"wp-block-paragraph\">And I think that it\u2019s very important for us to remember what our remit is when we come into a project. That, doesn\u2019t always involve helping them change everything to match what we see as the future. I think that\u2019s a responsibility of the client to understand where they are in conjunction with where the WordPress roadmap is, and make their own decisions about what tools are right for them.<\/p>\n<p class=\"wp-block-paragraph\">So, for existing projects, we\u2019ll work with what\u2019s right for the clients editorial team, but if we have to make a recommendation, it will always be the block editor.<\/p>\n<p class=\"wp-block-paragraph\">[00:08:56] <strong>Nathan Wrigley:<\/strong> Okay. Yeah, good to know. At place in the market where you are, I\u2019m presuming there\u2019s very little room for error. When you build something, it\u2019s got to work out of the box, on day one. You\u2019ve presumably got stakeholders who\u2019ve got editorial teams, and they\u2019re fairly, we\u2019re, dealing with large corporations that can\u2019t afford for there to be mistakes.<\/p>\n<p class=\"wp-block-paragraph\">So that kind of leads us to the nature of your presentation, which was called, and again, links will be in the show notes on wptavern.com. Migrating to Blocks with Artisanal Care and Industrial Scale. And I\u2019m actually just going to read the first paragraph because it summarises what we\u2019re going to talk about perfectly. It\u2019s fairly long, but I\u2019ll go through it all.<\/p>\n<p class=\"wp-block-paragraph\">Whether we\u2019re modernising an old personal blog or migrating hundreds of thousands of existing posts from another CMS. Using WordPress in 2026 means converting our contents to blocks. The convert to blocks button in the editor works well enough for one post. But if we have dozens or hundreds, what can we do to make the process less manual and more powerful? How can we integrate a site\u2019s content directly into full block patterns without losing the columns and structure it had before? And then it goes on to mention, a particular build, I presume, where you were leaving one CMS coming into WordPress.<\/p>\n<p class=\"wp-block-paragraph\">Just lay out some of the fun, interesting problems that you have to overcome when you\u2019re moving from an entirely different CMS into WordPress, because I guess it\u2019s more complicated than, \u201cLook, there\u2019s a bunch of paragraphs and images. Let\u2019s just drag those over and hope for the best.\u201d Tell us what the problem before you is.<\/p>\n<p class=\"wp-block-paragraph\">[00:10:22] <strong>K. Adam White:<\/strong> That\u2019s a great question. It\u2019s actually remarkable how close you can get to satisfaction with just moving paragraphs and images over and hoping for the best. But there is a big gap in terms of visual fidelity.<\/p>\n<p class=\"wp-block-paragraph\">The editor in a theme that we\u2019ve built for a client will be configured with patterns and templates and all of the block variations that they need to be able to very quickly sketch out a page. If they are starting from scratch, a client with a fully site editing enabled theme can drop a hero pattern on the page, set in the media they need. Change any font sizes within the pallet of what\u2019s available with their brand guidelines encoded in the theme.json. It\u2019s very easy for them to build out and write content fresh.<\/p>\n<p class=\"wp-block-paragraph\">But if you have, again, hundreds of thousands of posts, even if you\u2019ve built all those patterns, the heading and paragraph and image only approach doesn\u2019t cut it, because then there would be a tremendously backbreaking amount of work, adding group blocks, adding background colours, et cetera.<\/p>\n<p class=\"wp-block-paragraph\">That\u2019s usually data that is available in one form or the other in the current system. If we\u2019re migrating without a design change, we will have, whether it\u2019s the layout database in Sitecore or a metadata in a different WordPress block editor that we\u2019re migrating from. Or whatever the equivalent is in our source. We want to preserve the layout of the page and the styling elements. So making sure that headings get the right text treatment, that anything that\u2019s italicised comes over. All of the nuances there, particularly around background colours, images, et cetera. That\u2019s the piece that we\u2019ve been over the past year, looking at how we can improve our process when we\u2019re building a new site, but bringing content over from an old.<\/p>\n<p class=\"wp-block-paragraph\">Within that context, my talk covered two broad areas. The specific tail end of the talk was about how we can actually use the theme patterns that already exist in the theme directory, and use those to inject particular pieces of source data. So if you have a pattern for a hero element, and you know from your source data what the image URL is supposed to be, what the title is supposed to be. We can use the HTML directly from the pattern file, and do lightweight search replaces within that using either direct PHP string replacements or a tool that we\u2019ve written, that I shared a link to called rehydrator, which is a very early stage experiment, that we\u2019ve got out on GitHub.<\/p>\n<p class=\"wp-block-paragraph\">And we can use that to put the content into the structure that it\u2019s going to need to have for it to be fully, visually correct. So rather than just reducing and throwing away anything that isn\u2019t a heading or a paragraph, we\u2019re taking the framework from the theme pattern that\u2019s been built. And then we\u2019re writing a migrator that takes data and puts it into that HTML structure, and saves that into the post content. So that when an editor opens up a page, it loads correctly in the editor without block validation errors and it looks right on the front end.<\/p>\n<p class=\"wp-block-paragraph\">[00:13:15] <strong>Nathan Wrigley:<\/strong> Okay. There\u2019s a lot of depth in that, isn\u2019t there? We\u2019ll come back to that in a moment.<\/p>\n<p class=\"wp-block-paragraph\">I\u2019m curious about process of how you, persuade clients that you are going to be able to carry this work out successfully. So how does that actually work? You obviously look at their existing content, you have a discussion about what the new design is going to look like, and then do you build out some kind of templates or patterns or what have you, so that you can then pull in a proportion of the content, maybe, I don\u2019t know, 10 or a hundred or 5,000 or whatever it may be, pieces of content. Check that that\u2019s all right. Show it to the client. How does that workflow go to build up their confidence that what you are going to do when you finally click the button is actually going to succeed?<\/p>\n<p class=\"wp-block-paragraph\">[00:13:50] <strong>K. Adam White:<\/strong> The way that we\u2019ve been approaching that, I think particularly, over the past six months, I should caveat first that this process has changed so much. Because the tools we have available with AI agents have been evolving in leaps and bounds alongside this particular migration process, which started in January.<\/p>\n<p class=\"wp-block-paragraph\">So in this case, we started out by building patterns that we could put content for one test post, from the existing site manually. Bringing the contents over, copying and pasting headings, et cetera. And using that to create the patterns that we could show to the client to say, does this look correct? Does this structure mirror what you\u2019re expecting? Is this what you expect an author to have available within the post editor?<\/p>\n<p class=\"wp-block-paragraph\">And then you know, which pieces belong in the template, which pieces are managed at the site editor level? We\u2019ve done a lot of that ahead of starting the actual migration.<\/p>\n<p class=\"wp-block-paragraph\">Now that the migration is in progress, any subsequent pieces we\u2019re developing in tandem, we\u2019re saying, okay, we have a press release. That press release, we have audited the incoming data, and we have determined that there are four different layouts for press releases. And this one is used the most and it has these elements. This one is used less, but it has images, et cetera.<\/p>\n<p class=\"wp-block-paragraph\">And we can build the template for that post type, and at the same time write the migrator for identifying the content nodes, and the source data and bringing that information over into the new patterns.<\/p>\n<p class=\"wp-block-paragraph\">So we have the patterns that we can show, okay, if you\u2019re building something from scratch, this is what that looks like in the editor. But then at the same time, we can run the migrator over, in most cases, all of the relevant type of data and say, and here is a list of pages to validate.<\/p>\n<p class=\"wp-block-paragraph\">So what we\u2019ve been doing is bringing that to our stakeholder, and allowing them to do spot checks, so that they can look through and validate that there are all of the required elements on the test pages. Things like, \u201coh, alright, we don\u2019t have a mapper yet for video embeds. So videos are missing,\u201d and that\u2019s usually going to be an all or nothing thing. We\u2019ve found very few cases where we end up with one or two errors on a specific post basis that aren\u2019t related to support for a complete type of output pattern.<\/p>\n<p class=\"wp-block-paragraph\">[00:15:55] <strong>Nathan Wrigley:<\/strong> Is there a sort of fault tolerance there? So obviously in the case of this particular migration, tens of thousands of posts, I guess there\u2019s never going to be a moment where you can be a hundred percent confident apart from reading the 10,000 posts that you\u2019ve done everything correctly. Is there a, we\u2019ll do 10 to begin with, then we\u2019ll go up to a hundred, then we\u2019ll go up to a thousand.<\/p>\n<p class=\"wp-block-paragraph\">What, is the sort of tolerance that you present to the client? I\u2019m just imagining that just lurking in post 9,999 is just some weird thing that was allowable in the CMS but never got used before or since, and that piece of content got missed. I don\u2019t know what\u2019s allowable in that scenario. So is there any level of tolerance for fault?<\/p>\n<p class=\"wp-block-paragraph\">[00:16:32] <strong>K. Adam White:<\/strong> The major advance that we\u2019ve made with migrations as a broad structure this year is a much better understanding of those edge cases. And the way that we\u2019ve done that is by leveraging Claude and various other tools to do cross site audits to make sure that we have a full picture of the source data.<\/p>\n<p class=\"wp-block-paragraph\">So we are able to feed in whatever export files we get from our source site. In this case we\u2019re working from Sitecore, which is an enterprise CMS, which has two database structure. There\u2019s actually a database with a content tree, and then another database that contains layout information. And a page is rendered by switching back and forth between those and assembling the final output.<\/p>\n<p class=\"wp-block-paragraph\">We were able to get exports of the relevant content from both of those, from the developer of the current site. And we fed those and a whole bunch of documents from the product owner into a ongoing conversation with Claude. And we\u2019re able to use that to build some actually node.js scripts that would take the files we\u2019d gotten from the Sitecore devs, and build a local database in SQLite that each developer on the team was able to run locally. And we can query against that to find those edge cases.<\/p>\n<p class=\"wp-block-paragraph\">So in a combination of writing our own manual queries, or having a chat conversation prompt for finding individual things, and then it will run a number of queries and report back to us. We\u2019re able to identify very quickly, oh, there\u2019s only one press release that has images, that\u2019s interesting. But there are 17 that have a FAQ accordion.<\/p>\n<p class=\"wp-block-paragraph\">So that type of auditing has become trivial, and it\u2019s mind boggling how much faster that\u2019s allowed us to move in terms of understanding the data that\u2019s there, and building out a mapping of how we\u2019ll migrate through the different types of content.<\/p>\n<p class=\"wp-block-paragraph\">We don\u2019t tend to start with only 10 pages in a post type because it\u2019s relatively cheap to run the migrator over a thousand instead of 10. And that gives you a lot more content for both various people on the client team, but then also agentic tools to click through and do a little bit of spot check validation.<\/p>\n<p class=\"wp-block-paragraph\">What we tend to do is to migrate content type by content type, and we\u2019ll prioritise those based on what we see as the balance between scale and complexity.<\/p>\n<p class=\"wp-block-paragraph\">[00:18:39] <strong>Nathan Wrigley:<\/strong> Do you leverage Core blocks wherever possible, or do you bring bespoke Human Made blocks where that\u2019s necessary? Or can you basically bind everything in this particular build to a Core block?<\/p>\n<p class=\"wp-block-paragraph\">[00:18:51] <strong>K. Adam White:<\/strong> Most of the time we will start with Core blocks and get as far as we can with them. This is a change from how we used to do it. Our early days, we had a lot of rapid iteration in the markup that Core blocks were using. In some cases, there was a lot of evolution in how the controls for them were set up.<\/p>\n<p class=\"wp-block-paragraph\">[00:19:07] <strong>Nathan Wrigley:<\/strong> It was brutal.<\/p>\n<p class=\"wp-block-paragraph\">[00:19:09] <strong>K. Adam White:<\/strong> It was brutal. But that pace of change for the main building blocks of a site has slowed down tremendously, and I think it\u2019s a very stable foundation. So we will be pattern first in our development. We will start by working, doing a lot of in-editor prototyping actually, to build out layouts and patterns for each individual unit of content, each individual sort of component group in the source site. And, it will only be when we run into something like a carousel or a modal that we might reach for a off the shelf, third party option that\u2019s not in Core, or bring our own solution to the table.<\/p>\n<p class=\"wp-block-paragraph\">[00:19:45] <strong>Nathan Wrigley:<\/strong> So do you take, when you said pattern there, is a pattern a sub component of a, let\u2019s say post for want of a better word? Or is it that the pattern is the entire post with bits injected into it? So paragraphs, headings, videos, whatever it may be? Like I said, at the beginning, or are you building up the entire post from various different patterns? Here\u2019s a video pattern and here\u2019s a, I don\u2019t know, a paragraph pattern with a heading? Or a background image or whatever it may be.<\/p>\n<p class=\"wp-block-paragraph\">[00:20:12] <strong>K. Adam White:<\/strong> Patterns tends to be at number of different levels. We might have individual patterns for a particular treatment of headline for example. But we also will have a pattern for a hero section. We\u2019ll have a pattern for a hero section plus the bio below that, that we can use to populate a template in the site editor.<\/p>\n<p class=\"wp-block-paragraph\">We build patterns at multiple levels of granularity, and we have a leaf to trunk system where we\u2019ll make sure that we have renderings, whether they\u2019re Core blocks with either default styling or one or two block variations, or individual patterns for things where we need to compose one or two blocks together. We\u2019ll make sure that we have all of those leaf node pieces of content, all of our paragraphs, all of our inline images. And then we\u2019ll build patterns for those higher level groups, the full width backgrounds with coloration and a particular headline treatment.<\/p>\n<p class=\"wp-block-paragraph\">We build out those patterns at all of those different levels because it\u2019s nice to have the granularity when we\u2019re writing our migrators, and patterns can reference each other. So you can have an accordion pattern, which includes two references to an accordion item pattern, and you can have all of those little bits of HTML be discreet PHP files in your WordPress theme. So it makes it very simple to pull up in your editor only the code that you need to edit for a particular unit and know how that\u2019s going to be scoped.<\/p>\n<p class=\"wp-block-paragraph\">[00:21:26] <strong>Nathan Wrigley:<\/strong> This is going to sound like such a peculiar question, but it genuinely, from my point of view, this sounds like really interesting and curious work. It sounds, like there\u2019s a lot to get your teeth into. You\u2019re pushing the boundaries a little bit, but also you\u2019ve got the scope of WordPress, which kind of makes it slightly easier.<\/p>\n<p class=\"wp-block-paragraph\">I\u2019m basically just making the comment that I think I would enjoy doing the work that you are doing. I don\u2019t know if that, yeah, there really a question there.<\/p>\n<p class=\"wp-block-paragraph\">[00:21:47] <strong>K. Adam White:<\/strong> Unfortunately, we\u2019re doing less and less of that work, and Claude\u2019s doing more and more of it. It\u2019s been actually very efficient because this is such a core central construct in the WordPress block editor. There\u2019s a lot of good documentation about it and agentic tools are quite good at helping to build pattern markup.<\/p>\n<p class=\"wp-block-paragraph\">So, what we\u2019ve been doing is bringing our human eyes onto that, doing all of our spot checks, making sure that things are kept as simple as possible. Because I think we\u2019re all familiar with how verbose and overly complicated output can be from some tools. But then it is also something that I really wish more people were talking about and doing. Brian Coords earlier today in his talk, mentioned that pattern driven development really he sees as something that more and more of the WordPress community should be trying out. Because there are so many things that we used to build custom blocks for, that just strictly aren\u2019t necessary anymore. And we can get so far by composing what we get from the lego kit of WordPress out of the box.<\/p>\n<p class=\"wp-block-paragraph\">[00:22:40] <strong>Nathan Wrigley:<\/strong> Yeah, I feel like if we went back to 2015 and began Gutenberg again, I feel going patterns first would actually be a nicer approach, certainly a more straightforward approach. I know that there\u2019s, ways to overcome that, but I always drop patterns in, never blocks, and then I\u2019m always interacting with the blocks within the pattern. But it\u2019s patterns first for me all the time. Just because I like the fact that I\u2019m dropping in multiple bits of content that are pre-configured and pre-made and pre, I\u2019ve fiddled with the CSS and made it just how I like it. And I just click the button once and there it is, and I can just rinse and repeat and it\u2019s really straightforward.<\/p>\n<p class=\"wp-block-paragraph\">[00:23:12] <strong>K. Adam White:<\/strong> I would agree, and over the past two to five releases of WordPress, we\u2019ve also had such powerful additional tools added to the pattern toolkit. For example, Partially Synced Patterns. Was a major topic that I shared in my talk. Being able to have a reusable pattern and then make the content editable on a post by post basis makes it very seamless for a non-technical editor to go in, and not have access out of the box to stylistic controls that would make something drift from the brand\u2019s guidelines that they\u2019re trying to follow, but still be able to customise link targets, CTA, text, all of the descriptive and image elements.<\/p>\n<p class=\"wp-block-paragraph\">[00:23:47] <strong>Nathan Wrigley:<\/strong> You are in the weeds of WordPress, and I\u2019m in the weeds of WordPress all the time, but I still feel those tools are widely, not misunderstood, that\u2019s the wrong, just there\u2019s a void. Nobody even knows they\u2019re there. There\u2019s just tonnes of tooling inside the block editor that people simply don\u2019t know about, because the UI and the UX is still a bit funky. You\u2019ve got to go to various different places, and it\u2019s easy to go down the wrong route.<\/p>\n<p class=\"wp-block-paragraph\">Do you know what I mean? There\u2019s a bunch of tools inside a WordPress that if you only had a few hours with somebody over your shoulder pointing out, \u201cokay, click on that, look at that menu that does this thing.\u201d It\u2019s a shame in a way that\u2019s the case. But I do feel there\u2019s a lot of unexplored potential in every WordPress website that presumably you are leveraging. But I guess just because you\u2019re in the weeds of it.<\/p>\n<p class=\"wp-block-paragraph\">[00:24:30] <strong>K. Adam White:<\/strong> Wherever possible, we have the privilege of having a lot of history with the CMS. Human Made was founded in 2010 and has always had a strong open source posture. We\u2019ve contributed to Core, we\u2019ve put plugins out there in the ecosystem that are used by a number of other agencies. We\u2019ve found the best of what our frenemy competitors use, and been able to adopt those into our own processes.<\/p>\n<p class=\"wp-block-paragraph\">And the benefits of understanding all of the different types of block that you can use tremendously outweigh any time sink that it takes to learn them. I hope that, from my talk, people will now know that in 7.0, we added PHP only blocks, where you can have the attributes auto registered so that you get, even as a non JavaScript developer, a interface in the editor that someone can open up and go in and change values in the sidebar.<\/p>\n<p class=\"wp-block-paragraph\">I hope that more people learn about Partially Synced Patterns. I hope more people learn about all of the different types of block that we have available, and find ways to integrate those into their own toolkits. Because playing with the grain of WordPress and using the Block Editor for all it\u2019s worth, are how we untap the most value for our clients.<\/p>\n<p class=\"wp-block-paragraph\">[00:25:34] <strong>Nathan Wrigley:<\/strong> Yeah, there is certainly an awful lot of power, and like I said, I just think some of it gets missed.<\/p>\n<p class=\"wp-block-paragraph\">How much after you\u2019ve done the migration, how much time do you have to spend with the clients? I have this impression that the Gutenberg editor is pretty straightforward, muscle memory for me essentially. Hours of playing in it. I know where all the bits and pieces are.<\/p>\n<p class=\"wp-block-paragraph\">But I would also recognise that if I was to show it to somebody who\u2019d never played with WordPress and was coming from, in this case Sitecore, how overwhelming is it? And do you take steps to make it less overwhelming by minimising what\u2019s available in the interface, or just disabling options? What do you do in that regard?<\/p>\n<p class=\"wp-block-paragraph\">[00:26:08] <strong>K. Adam White:<\/strong> No matter how much flexibility our clients want, it\u2019s usually valuable to disable some options. I can\u2019t remember a site we\u2019ve shipped recently for any large website where we left the custom colour picker in, for example. You want to do a better job of limiting what people can use, so that we have confidence that the output, no matter how design savvy or not someone is, is going to be consistent with the rest of the site.<\/p>\n<p class=\"wp-block-paragraph\">My colleague, Joeleen Kennedy, gave a talk a couple years ago at the first \u200aWordCamp US Showcase Day back in 2024, about work we had done customising the editor for that type of simplicity. And in particular things that we can do around colour palette selection. Ways that we can hide the styling controls for certain blocks through having them embedded in a pattern.<\/p>\n<p class=\"wp-block-paragraph\">It\u2019s interesting to see that in WordPress recently, if you are editing content that has been marked as having come from a pattern in a post, you can edit all of the text, you can edit all of the images and link targets, but you actually have to hit edit pattern in the sidebar in some cases, depending on how the post is set up, to get into the details within the post that allow all of those other controls to be visible.<\/p>\n<p class=\"wp-block-paragraph\">That divide took a tiny bit of adjustment for people on our client teams, but the separation has helped them stay focused on the content, and worry less about the overwhelming, combinatorial set of styling possibilities that their blocks have.<\/p>\n<p class=\"wp-block-paragraph\">[00:27:29] <strong>Nathan Wrigley:<\/strong> Do you think that the necessary tools are already built into WordPress to do the kind of work that you are doing? Or is there some missing piece that would make it easier for somebody who doesn\u2019t have the deep pockets that presumably Human Made would require, to do that kind of work. Is the default tooling usually okay to migrate things or have you had to build loads of bespoke tooling?<\/p>\n<p class=\"wp-block-paragraph\">So in terms of if I was to approach a WordPress website and try to migrate from Sitecore over to WordPress, is this something that you absolutely need a team to do, or would you be able to get some simulation of this with Core WordPress?<\/p>\n<p class=\"wp-block-paragraph\">[00:28:04] <strong>K. Adam White:<\/strong> If you had access to the exports of data from a Sitecore website, and you had a core vanilla WordPress install. And you had a LLM tool of some sort, I think that you could do a lot to get close to what you want. The LLM piece, I think enables this to be done by more people without having to be completely familiar with all of the internal nuances of WordPress. You need to direct it to the architectural pattern that you want, but we have found that it speaks Gutenberg pretty well.<\/p>\n<p class=\"wp-block-paragraph\">[00:28:32] <strong>Nathan Wrigley:<\/strong> What was the name of the tool that you said you\u2019d custom and built?<\/p>\n<p class=\"wp-block-paragraph\">[00:28:34] <strong>K. Adam White:<\/strong> We had built a plugin called rehydrator.<\/p>\n<p class=\"wp-block-paragraph\">[00:28:36] <strong>Nathan Wrigley:<\/strong> Okay, rehydrator, yeah.<\/p>\n<p class=\"wp-block-paragraph\">[00:28:37] <strong>K. Adam White:<\/strong> rehydrator is the tool that we use to take a pattern in the theme and then use that pattern as the template when we\u2019re bringing content over to make sure that we keep all of the styling theme side, and that our migration script doesn\u2019t duplicate the markup specifically.<\/p>\n<p class=\"wp-block-paragraph\">[00:28:51] <strong>Nathan Wrigley:<\/strong> What\u2019s Human Made\u2019s approach to the WordPress project in that regard? You said it was a plugin. Does that mean it\u2019s a wordpress.org repository plugin, or is it one that you have on your own, I don\u2019t know, GitHub repository or whatever it may be.<\/p>\n<p class=\"wp-block-paragraph\">[00:29:01] <strong>K. Adam White:<\/strong> We have some things in the .org repository. In this case, that particular plugin is only on GitHub. A number of ones that we build are only on GitHub, because we\u2019re building them for a very transient in time period of a site.<\/p>\n<p class=\"wp-block-paragraph\">You don\u2019t need a migration tool to be part of your site long term, it\u2019s not something you\u2019re going to be leaving active, and updating month over month when there is a site running. It\u2019s something that you bring in for the purpose of populating the data. And then you can remove that.<\/p>\n<p class=\"wp-block-paragraph\">And in that regard, for this particular one, at the moment it\u2019s partly because it\u2019s quite young, and it\u2019s also because we don\u2019t see it as being general purpose. So that plugin specifically is on GitHub and publicly available through Composer, but not on the plugin directory.<\/p>\n<p class=\"wp-block-paragraph\">In other situations, we\u2019ve gone the opposite direction, and anything that we see as being a ongoing value to a site as it\u2019s running, we do try to move those over as we can.<\/p>\n<p class=\"wp-block-paragraph\">[00:29:52] <strong>Nathan Wrigley:<\/strong> Given that you are on the sort of engineering side of Human Made, I don\u2019t know if this question will land, but we seem to be in this interesting period where there\u2019s a lot of chatter, AI kind of fits into the equation a little bit, but there\u2019s a lot of chatter about the, market share of WordPress and whether or not WordPress as a tool will continue with the same numbers and clout and market share and all of those kind of things.<\/p>\n<p class=\"wp-block-paragraph\">Do you notice at the enterprise level that there\u2019s been any kind of change in a southerly direction? Maybe there\u2019s been a direct change in a northerly direction. What I\u2019m trying to say is, for the enterprise, does WordPress still maintain that kind of pride place, top of the tree, or are you struggling to find new clients?<\/p>\n<p class=\"wp-block-paragraph\">[00:30:28] <strong>K. Adam White:<\/strong> We\u2019re not struggling to find new clients. We\u2019re lucky that we\u2019re doing quite well on marketing, and we also have had a very powerful year in terms of building relationships with new enterprises, and finding ways to take the technology that we believe in and solve their problems with it.<\/p>\n<p class=\"wp-block-paragraph\">But I would argue that WordPress has never been the top of the enterprise space. And this actually goes back to your question about what is there that might be missing inside WordPress. The biggest thing that I think someone gets from a more, I\u2019m going to use the term loosely, traditional enterprise CMS, is control.<\/p>\n<p class=\"wp-block-paragraph\">And WordPress has a security model where the ability to edit and publish a piece of content is usually at the post level. There\u2019s ways to add specific permission checks for metadata. There\u2019s ways that you can restrict what\u2019s accessible and editable with custom interfaces and custom API endpoints. But we tend to have things fall down to the capability checks for user can edit post 1, 2, 3. Yes. No.<\/p>\n<p class=\"wp-block-paragraph\">And that means that if you have a user profile where your organisation depends on someone being able to come in and touch only the headlines and the SEO metadata, we don\u2019t really have a model for that right now in WordPress.<\/p>\n<p class=\"wp-block-paragraph\">Whereas something like Sitecore, each individual, almost at the level of every string on the site, whether it\u2019s a set of paragraphs or the label of a button, ends up as a individual node in the content tree. And those can be granted or denied to certain users on a much more granular level. So that to me is a bridge that I still am excited to see what we can do within WordPress to maybe build better interfaces, or better primitives in the editor.<\/p>\n<p class=\"wp-block-paragraph\">Block locking helps a little bit, but it is an API that\u2019s quite difficult for some teams to wrap their heads around. And it also doesn\u2019t really change the fact that if you can edit the post, and you were able to get the code editor up, then if you\u2019re able to save it, you\u2019re able to save it and doesn\u2019t really go block by block. You\u2019d have to write custom validation or permissions logic in order to be able to reject and update based on the user if they\u2019re editing a block that is next to the one that they were supposed to.<\/p>\n<p class=\"wp-block-paragraph\">[00:32:32] <strong>Nathan Wrigley:<\/strong> So do you have to present to the clients? It\u2019ll be fine. This is what WordPress has. Don\u2019t worry too much about it. If you\u2019ve got this permission, yep, sure. You might be able to overlap and think people could delete things or modify things that perhaps they wouldn\u2019t have to. That\u2019s an educational piece on your side. Go and teach everybody not to mess around with things that they shouldn\u2019t be messing around with.<\/p>\n<p class=\"wp-block-paragraph\">But you would wish that in WordPress you could assign, say, as you described, this H1, this person can amend it, and this person can access the colour palette for the background image over here, but they can\u2019t access the text. That kind of really granular permission. Whereas block locking just, it seems a bit more of a blunt instrument if you know what I mean. It\u2019s binary. It\u2019s locked or it\u2019s not. You\u2019d like to unlock the capabilities within each block so that certain users can do certain things within the same block.<\/p>\n<p class=\"wp-block-paragraph\">[00:33:15] <strong>K. Adam White:<\/strong> Within blocks, we tend to rely on security through obscurity. We can hide or obfuscate controls behind block locking with content only. We can hide them behind patterns. But if someone\u2019s coming to WordPress, we do make sure that they understand upfront what the nuance of control will be. And we will work with them usually to make things more editable.<\/p>\n<p class=\"wp-block-paragraph\">Again, I will mention that most of the projects that we get that come from one of these more control-oriented CMSs into WordPress, what they\u2019re seeking is actually more flexibility, not less. So they\u2019re making a decision that they are willing to exchange the stringent control that they get in their existing tool for a process-based change. Maybe they add a review step, or add some sort of workflow plugin, so that we can validate that things look good and have someone sign off on it before it gets published. They would prefer to go that route than to sacrifice the ability for the editors to have the full control, and full pallet of options available to them.<\/p>\n<p class=\"wp-block-paragraph\">[00:34:13] <strong>Nathan Wrigley:<\/strong> Right, so that\u2019s a much more loose approach. Everybody can maybe do more than they ought to do. If we have some editorial guideline where that can\u2019t finally hit the public domain because the publish button is unavailable to you, that\u2019s, okay. We\u2019ll accept that kinda halfway house, if you like. That\u2019s interesting.<\/p>\n<p class=\"wp-block-paragraph\">[00:34:30] <strong>K. Adam White:<\/strong> Each client\u2019s needs are going to be slightly different. We do layer in publication checklists. We have tools to be able to say, this has to be tagged with the primary category before it goes live. We have tools to say, this still has lorum ipsum in it. You can add those in and build workflows, but I tend to like to help clients build processes to support those, rather than trying to take a draconian approach and lock everything down. Because then your work is going to be constantly chasing fine-grained permissions controls when you could be working to use that time making sure that all of the editors know what they can do.<\/p>\n<p class=\"wp-block-paragraph\">[00:35:04] <strong>Nathan Wrigley:<\/strong> I just want to drill into this a bit more. I know this isn\u2019t where we were supposed to go, but I find it really interesting. Would you like those things to ship in Core? obviously they suit you down to the ground, all of those granular permissions, but do you think that belongs in Core?<\/p>\n<p class=\"wp-block-paragraph\">[00:35:17] <strong>K. Adam White:<\/strong> I think that we need more workflow in Core.<\/p>\n<p class=\"wp-block-paragraph\">[00:35:20] <strong>Nathan Wrigley:<\/strong> Okay.<\/p>\n<p class=\"wp-block-paragraph\">[00:35:20] <strong>K. Adam White:<\/strong> I know that there\u2019s a number of different agencies and hosts which each have developed our own workflows solutions. I\u2019ve worked across a number of them on projects that I\u2019ve helped to support.<\/p>\n<p class=\"wp-block-paragraph\">But the notion that if you have something published and you make an edit out of the box, WordPress will automatically put live any further changes that you make to a published post when you hit save. That is probably the single thing that we most frequently have to build some type of plugin into a site to handle.<\/p>\n<p class=\"wp-block-paragraph\">Because we need to be able to give people an editorial review step. So that is something that I think we have a number of good tools, but I would love to see a more opinionated default in Core that we can use as a foundation for more complicated post editorial workflow. I think that\u2019s the thing that we most frequently run into. That, and also I guess internationalisation are probably the two things that hopefully will come to the surface of the WordPress roadmap over time.<\/p>\n<p class=\"wp-block-paragraph\">[00:36:13] <strong>Nathan Wrigley:<\/strong> Yeah, I\u2019d really not thought about that. Given Human Made\u2019s sort of credentials and what have you. Do you have a lot of clout? Do you just punch above your weight in conversations about what makes it into Core? Do you get involved in those discussions? I\u2019ve literally no idea how that would happen. Do you communicate to people when a release is coming around. Do you have a voice? Do you make yourself available? What is Human Made\u2019s position in terms of getting things pushed into Core?<\/p>\n<p class=\"wp-block-paragraph\">[00:36:37] <strong>K. Adam White:<\/strong> We participate in the project. I personally have been less involved in Core over the past several years than I would have hoped. I\u2019ve been very much enjoying the detailed, quite close to the ground work that I\u2019m doing on our agency projects. But unfortunately, I have taken a bit of a step back on the open source project.<\/p>\n<p class=\"wp-block-paragraph\">Some of my colleagues are in a slightly different boat. My colleague, John Blackbourn, our Director of Security for our own hosting product is also the head of the Security Team for WordPress? And has been helping us get the core patches out for the recent set of security releases.<\/p>\n<p class=\"wp-block-paragraph\">We obviously will advocate in calls for feedback within the Gutenberg project when we feel that there\u2019s a particular direction that we see from our projects. We are able to provide feedback on the UI, and the capabilities of new blocks that are being proposed. But that\u2019s all done through the normal Gutenberg GitHub issue, and WordPress<\/p>\n<p class=\"wp-block-paragraph\">[00:37:28] <strong>Nathan Wrigley:<\/strong> So I think we should probably knock it on the head there. We\u2019ve reached our allocated time. I\u2019ll just point out that these days, it used to be the case that if I was at a WordCamp, you\u2019d really have to wait about six months before the video for the presentation was available. I\u2019m pretty sure it\u2019ll be done already, in all honesty. 24 hours seems to be the time there. So if you were to go to WP Tavern, I will make sure that the link to the video, of K. Adam is there. If not, you can probably go to Google and search Migrating to Blocks, and in parenthesis, with Artisanal Care at Industrial Scale, and you\u2019ll be able to see what it is that K. Adam was talking about.<\/p>\n<p class=\"wp-block-paragraph\">But really, thank you so much for chatting to me today about all of that.<\/p>\n<p class=\"wp-block-paragraph\">[00:38:06] <strong>K. Adam White:<\/strong> Thank you very much. And I can confirm that the video is already live on YouTube.<\/p>\n<\/div>\n<\/details>\n<p class=\"wp-block-paragraph\">On the podcast today we have <a href=\"https:\/\/www.linkedin.com\/in\/kadamwhite\/\" target=\"_blank\" rel=\"noopener\">K. Adam White<\/a>, or K. Adam for short.<\/p>\n<p class=\"wp-block-paragraph\">K. Adam is the principal engineer at Human Made, an enterprise WordPress consultancy. He\u2019s been involved with WordPress almost 20 years, attended his first WordCamp in Boston back in 2011, and has contributed to WordPress Core and the broader open source ecosystem. Human Made is known for delivering complex projects, think high stakes, no room for mistakes, from global brands moving to WordPress.<\/p>\n<p class=\"wp-block-paragraph\">This time around, K. Adam delivered a presentation at WordCamp US focused on a crucial topic for anyone modernising their site, migrating to blocks. Human Made has been all-in on the block editor since the Gutenberg plugin days, and the team now specialises in large-scale migrations from other content management systems like Sitecore, as well as from other WordPress page builders.<\/p>\n<p class=\"wp-block-paragraph\">Our conversation focused on the technical and editorial challenges of moving tens or hundreds of thousands of posts into the world of blocks and patterns. We talked about the need to combine \u201cartisanal care\u201d, attention to detail in design, layout, and brand, with \u201cindustrial scale\u201d, the ability to automate, audit, and validate mass migrations without losing visual fidelity.<\/p>\n<p class=\"wp-block-paragraph\">We also discussed the use of patterns as a foundation for development, integrating custom and Core blocks, and leveraging new tools (including AI-powered agents and open source plugins like Human Made\u2019s own rehydrator) to streamline migration workflows. We also touched upon how clients are onboarded, the process of auditing legacy content, strategies for training editorial teams on the block editor, and there\u2019s a frank reflection on gaps in WordPress, like granular content permissions.<\/p>\n<p class=\"wp-block-paragraph\">If you\u2019re contemplating a move to the block editor, wrestling with a massive content migration, or curious about what happens when enterprise complexity meets the flexibility of WordPress, this episode is for you.<\/p>\n<h2 class=\"wp-block-heading\">Useful links<\/h2>\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/humanmade.com\/\" target=\"_blank\" rel=\"noopener\">Human Made<\/a><\/p>\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/us.wordcamp.org\/2026\/session\/migrating-to-blocks-with-artisanal-care-at-industrial-scale\/\" target=\"_blank\" rel=\"noopener\">Migrating to Blocks (With Artisanal Care, at Industrial Scale)<\/a> \u2013 K. Adam\u2019s presentation at WordCamp US 2026<\/p>\n<p class=\"wp-block-paragraph\">Human Made\u2019s <a href=\"https:\/\/github.com\/humanmade\/rehydrator\" target=\"_blank\" rel=\"noopener\">rehydrator plugin on GitHub<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Transcript [00:00:19] Nathan Wrigley: Welcome to the Jukebox Podcast from WP Tavern. My name is Nathan Wrigley. Jukebox is a podcast which is dedicated to all things WordPress. The people, the events, the plugins, the blocks, the themes, and in this case, migrating to blocks at an enterprise level and what\u2019s involved in moving from [&hellip;]<\/p>","protected":false},"author":5,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-13182","post","type-post","status-publish","format-standard","hentry","category-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/gts.sa\/ar\/wp-json\/wp\/v2\/posts\/13182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gts.sa\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gts.sa\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gts.sa\/ar\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/gts.sa\/ar\/wp-json\/wp\/v2\/comments?post=13182"}],"version-history":[{"count":0,"href":"https:\/\/gts.sa\/ar\/wp-json\/wp\/v2\/posts\/13182\/revisions"}],"wp:attachment":[{"href":"https:\/\/gts.sa\/ar\/wp-json\/wp\/v2\/media?parent=13182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gts.sa\/ar\/wp-json\/wp\/v2\/categories?post=13182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gts.sa\/ar\/wp-json\/wp\/v2\/tags?post=13182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}