quarta-feira, setembro 23 Central de Jornalismo
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’s involved in moving from a different CMS into WordPress.

If you’d like to subscribe to the podcast, you can do that by searching for WP Tavern in your podcast player of choice, or by going to wptavern.com/feed/podcast, and you can copy that URL into most podcast players.

If you have a topic that you’d like us to feature on the podcast, I’m keen to hear from you and hopefully get you, or your idea, featured on the show. Head to wptavern.com/contact/jukebox and use the form there.

So on the podcast today, we have K. Adam White, or K. Adam for short.  K. Adam is the principal engineer at Human Made, an enterprise WordPress consultancy. He’s 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.

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.

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.

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’s, 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’s a frank reflection on gaps in WordPress, like granular content permissions.

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.

If you’re interested in finding out more, you can find all of the links in the show notes by heading to wptavern.com/podcast, where you’ll find all the other episodes as well.

And so without further delay, I bring you  K. Adam White.

I am joined on the podcast by K. Adam White. Hello, K. Adam.

[00:03:41] K. Adam White: Hello. It’s good to be here.

[00:03:42] Nathan Wrigley: Yeah. Thank you for joining us. You have an interesting name. Just go on, I know it’s totally off piste, but tell us about your name.

[00:03:49] K. Adam White: Sure. It’s 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.

[00:04:04] Nathan Wrigley: Yeah, nice. So we’re in the corridor, so forgive any noise that you hear on this podcast episode. We can’t avoid it. We’re in the corridor at  WordCamp US, and you have done, some presentation work this time around. Do you want to just tell us, I mean I presume it’s happened because we’re at the very closing stages of the conference. How did it go?

[00:04:21] K. Adam White: 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’s coffee has kicked in, and the fatigue of the conference hasn’t quite set in yet.

So I had a great audience and the talk I thing went quite well. I’ve 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.

[00:04:44] Nathan Wrigley: So that is going to be the meat and the bones of what we’re going to talk about today. But first, if you don’t mind, let’s 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.

So tell us about your job, how long you’ve been in the WordPress space? Who do you work for? Et cetera.

[00:04:59] K. Adam White: Yeah. My job is principal engineer at Human Made. We’re a WordPress enterprise consultancy, and I have been there nine years. I’ve 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’re 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.

[00:05:25] Nathan Wrigley: Yeah, nice and Human Made, if you haven’t heard, we’ll 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’s fair to say in the WordPress space.

[00:05:40] K. Adam White: It’s very kind of you to say so.

[00:05:42] Nathan Wrigley: You did your presentation and it was entitled, Migrating to Blocks. I’m going to intuit from that, that Human Made is all in on the block editor. You’re not using some sort of other proprietary platform. Would that be the case?

[00:05:55] K. Adam White: 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.

And it’s 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.

That does mean that we are broadly specialised in WordPress as a platform, including many of those page builders. We’ve worked with Elementor, we’ve 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.

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’t have that native integration into the platform.

[00:07:09] Nathan Wrigley: 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.

[00:07:16] K. Adam White: Absolutely default.

[00:07:17] Nathan Wrigley: Okay. And do you have to do any level of persuasion anymore? I’m guessing if we were to rewind the clock, let’s 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’s going on, and there’s less of a back and forth about whether they should use blocks and patterns and whatever else?

[00:07:41] K. Adam White: If we are building from scratch, we haven’t 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’s never any objection to using it. They might ask, should we use this or some other thing I’ve heard of? And we can say, the block editor is built in. We feel that it’s 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.

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’s Beaver Builder or something else, et cetera, Elementor.

And I think that it’s very important for us to remember what our remit is when we come into a project. That, doesn’t always involve helping them change everything to match what we see as the future. I think that’s 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.

So, for existing projects, we’ll work with what’s right for the clients editorial team, but if we have to make a recommendation, it will always be the block editor.

[00:08:56] Nathan Wrigley: Okay. Yeah, good to know. At place in the market where you are, I’m presuming there’s very little room for error. When you build something, it’s got to work out of the box, on day one. You’ve presumably got stakeholders who’ve got editorial teams, and they’re fairly, we’re, dealing with large corporations that can’t afford for there to be mistakes.

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’m actually just going to read the first paragraph because it summarises what we’re going to talk about perfectly. It’s fairly long, but I’ll go through it all.

Whether we’re 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’s 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.

Just lay out some of the fun, interesting problems that you have to overcome when you’re moving from an entirely different CMS into WordPress, because I guess it’s more complicated than, “Look, there’s a bunch of paragraphs and images. Let’s just drag those over and hope for the best.” Tell us what the problem before you is.

[00:10:22] K. Adam White: That’s a great question. It’s 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.

The editor in a theme that we’ve 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’s available with their brand guidelines encoded in the theme.json. It’s very easy for them to build out and write content fresh.

But if you have, again, hundreds of thousands of posts, even if you’ve built all those patterns, the heading and paragraph and image only approach doesn’t cut it, because then there would be a tremendously backbreaking amount of work, adding group blocks, adding background colours, et cetera.

That’s usually data that is available in one form or the other in the current system. If we’re migrating without a design change, we will have, whether it’s the layout database in Sitecore or a metadata in a different WordPress block editor that we’re 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’s italicised comes over. All of the nuances there, particularly around background colours, images, et cetera. That’s the piece that we’ve been over the past year, looking at how we can improve our process when we’re building a new site, but bringing content over from an old.

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’ve written, that I shared a link to called rehydrator, which is a very early stage experiment, that we’ve got out on GitHub.

And we can use that to put the content into the structure that it’s going to need to have for it to be fully, visually correct. So rather than just reducing and throwing away anything that isn’t a heading or a paragraph, we’re taking the framework from the theme pattern that’s been built. And then we’re 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.

[00:13:15] Nathan Wrigley: Okay. There’s a lot of depth in that, isn’t there? We’ll come back to that in a moment.

I’m 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’t know, 10 or a hundred or 5,000 or whatever it may be, pieces of content. Check that that’s 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?

[00:13:50] K. Adam White: The way that we’ve 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.

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’re expecting? Is this what you expect an author to have available within the post editor?

And then you know, which pieces belong in the template, which pieces are managed at the site editor level? We’ve done a lot of that ahead of starting the actual migration.

Now that the migration is in progress, any subsequent pieces we’re developing in tandem, we’re 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.

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.

So we have the patterns that we can show, okay, if you’re 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.

So what we’ve 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, “oh, alright, we don’t have a mapper yet for video embeds. So videos are missing,” and that’s usually going to be an all or nothing thing. We’ve found very few cases where we end up with one or two errors on a specific post basis that aren’t related to support for a complete type of output pattern.

[00:15:55] Nathan Wrigley: 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’s never going to be a moment where you can be a hundred percent confident apart from reading the 10,000 posts that you’ve done everything correctly. Is there a, we’ll do 10 to begin with, then we’ll go up to a hundred, then we’ll go up to a thousand.

What, is the sort of tolerance that you present to the client? I’m 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’t know what’s allowable in that scenario. So is there any level of tolerance for fault?

[00:16:32] K. Adam White: The major advance that we’ve made with migrations as a broad structure this year is a much better understanding of those edge cases. And the way that we’ve 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.

So we are able to feed in whatever export files we get from our source site. In this case we’re working from Sitecore, which is an enterprise CMS, which has two database structure. There’s 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.

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’re able to use that to build some actually node.js scripts that would take the files we’d 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.

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’re able to identify very quickly, oh, there’s only one press release that has images, that’s interesting. But there are 17 that have a FAQ accordion.

So that type of auditing has become trivial, and it’s mind boggling how much faster that’s allowed us to move in terms of understanding the data that’s there, and building out a mapping of how we’ll migrate through the different types of content.

We don’t tend to start with only 10 pages in a post type because it’s 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.

What we tend to do is to migrate content type by content type, and we’ll prioritise those based on what we see as the balance between scale and complexity.

[00:18:39] Nathan Wrigley: Do you leverage Core blocks wherever possible, or do you bring bespoke Human Made blocks where that’s necessary? Or can you basically bind everything in this particular build to a Core block?

[00:18:51] K. Adam White: 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.

[00:19:07] Nathan Wrigley: It was brutal.

[00:19:09] K. Adam White: It was brutal. But that pace of change for the main building blocks of a site has slowed down tremendously, and I think it’s 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’s not in Core, or bring our own solution to the table.

[00:19:45] Nathan Wrigley: So do you take, when you said pattern there, is a pattern a sub component of a, let’s 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’s a video pattern and here’s a, I don’t know, a paragraph pattern with a heading? Or a background image or whatever it may be.

[00:20:12] K. Adam White: 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’ll have a pattern for a hero section plus the bio below that, that we can use to populate a template in the site editor.

We build patterns at multiple levels of granularity, and we have a leaf to trunk system where we’ll make sure that we have renderings, whether they’re 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’ll 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’ll build patterns for those higher level groups, the full width backgrounds with coloration and a particular headline treatment.

We build out those patterns at all of those different levels because it’s nice to have the granularity when we’re 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’s going to be scoped.

[00:21:26] Nathan Wrigley: 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’s a lot to get your teeth into. You’re pushing the boundaries a little bit, but also you’ve got the scope of WordPress, which kind of makes it slightly easier.

I’m basically just making the comment that I think I would enjoy doing the work that you are doing. I don’t know if that, yeah, there really a question there.

[00:21:47] K. Adam White: Unfortunately, we’re doing less and less of that work, and Claude’s doing more and more of it. It’s been actually very efficient because this is such a core central construct in the WordPress block editor. There’s a lot of good documentation about it and agentic tools are quite good at helping to build pattern markup.

So, what we’ve 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’re 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’t necessary anymore. And we can get so far by composing what we get from the lego kit of WordPress out of the box.

[00:22:40] Nathan Wrigley: 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’s, ways to overcome that, but I always drop patterns in, never blocks, and then I’m always interacting with the blocks within the pattern. But it’s patterns first for me all the time. Just because I like the fact that I’m dropping in multiple bits of content that are pre-configured and pre-made and pre, I’ve 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’s really straightforward.

[00:23:12] K. Adam White: I would agree, and over the past two to five releases of WordPress, we’ve 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’s guidelines that they’re trying to follow, but still be able to customise link targets, CTA, text, all of the descriptive and image elements.

[00:23:47] Nathan Wrigley: You are in the weeds of WordPress, and I’m in the weeds of WordPress all the time, but I still feel those tools are widely, not misunderstood, that’s the wrong, just there’s a void. Nobody even knows they’re there. There’s just tonnes of tooling inside the block editor that people simply don’t know about, because the UI and the UX is still a bit funky. You’ve got to go to various different places, and it’s easy to go down the wrong route.

Do you know what I mean? There’s a bunch of tools inside a WordPress that if you only had a few hours with somebody over your shoulder pointing out, “okay, click on that, look at that menu that does this thing.” It’s a shame in a way that’s the case. But I do feel there’s a lot of unexplored potential in every WordPress website that presumably you are leveraging. But I guess just because you’re in the weeds of it.

[00:24:30] K. Adam White: 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’ve contributed to Core, we’ve put plugins out there in the ecosystem that are used by a number of other agencies. We’ve found the best of what our frenemy competitors use, and been able to adopt those into our own processes.

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.

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’s worth, are how we untap the most value for our clients.

[00:25:34] Nathan Wrigley: Yeah, there is certainly an awful lot of power, and like I said, I just think some of it gets missed.

How much after you’ve 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.

But I would also recognise that if I was to show it to somebody who’d 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’s available in the interface, or just disabling options? What do you do in that regard?

[00:26:08] K. Adam White: No matter how much flexibility our clients want, it’s usually valuable to disable some options. I can’t remember a site we’ve 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.

My colleague, Joeleen Kennedy, gave a talk a couple years ago at the first  WordCamp 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.

It’s 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.

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.

[00:27:29] Nathan Wrigley: 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’t 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?

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?

[00:28:04] K. Adam White: 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.

[00:28:32] Nathan Wrigley: What was the name of the tool that you said you’d custom and built?

[00:28:34] K. Adam White: We had built a plugin called rehydrator.

[00:28:36] Nathan Wrigley: Okay, rehydrator, yeah.

[00:28:37] K. Adam White: rehydrator is the tool that we use to take a pattern in the theme and then use that pattern as the template when we’re bringing content over to make sure that we keep all of the styling theme side, and that our migration script doesn’t duplicate the markup specifically.

[00:28:51] Nathan Wrigley: What’s Human Made’s approach to the WordPress project in that regard? You said it was a plugin. Does that mean it’s a wordpress.org repository plugin, or is it one that you have on your own, I don’t know, GitHub repository or whatever it may be.

[00:29:01] K. Adam White: 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’re building them for a very transient in time period of a site.

You don’t need a migration tool to be part of your site long term, it’s not something you’re going to be leaving active, and updating month over month when there is a site running. It’s something that you bring in for the purpose of populating the data. And then you can remove that.

And in that regard, for this particular one, at the moment it’s partly because it’s quite young, and it’s also because we don’t see it as being general purpose. So that plugin specifically is on GitHub and publicly available through Composer, but not on the plugin directory.

In other situations, we’ve gone the opposite direction, and anything that we see as being a ongoing value to a site as it’s running, we do try to move those over as we can.

[00:29:52] Nathan Wrigley: Given that you are on the sort of engineering side of Human Made, I don’t know if this question will land, but we seem to be in this interesting period where there’s a lot of chatter, AI kind of fits into the equation a little bit, but there’s 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.

Do you notice at the enterprise level that there’s been any kind of change in a southerly direction? Maybe there’s been a direct change in a northerly direction. What I’m 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?

[00:30:28] K. Adam White: We’re not struggling to find new clients. We’re lucky that we’re 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.

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’m going to use the term loosely, traditional enterprise CMS, is control.

And WordPress has a security model where the ability to edit and publish a piece of content is usually at the post level. There’s ways to add specific permission checks for metadata. There’s ways that you can restrict what’s 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.

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’t really have a model for that right now in WordPress.

Whereas something like Sitecore, each individual, almost at the level of every string on the site, whether it’s 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.

Block locking helps a little bit, but it is an API that’s quite difficult for some teams to wrap their heads around. And it also doesn’t really change the fact that if you can edit the post, and you were able to get the code editor up, then if you’re able to save it, you’re able to save it and doesn’t really go block by block. You’d have to write custom validation or permissions logic in order to be able to reject and update based on the user if they’re editing a block that is next to the one that they were supposed to.

[00:32:32] Nathan Wrigley: So do you have to present to the clients? It’ll be fine. This is what WordPress has. Don’t worry too much about it. If you’ve got this permission, yep, sure. You might be able to overlap and think people could delete things or modify things that perhaps they wouldn’t have to. That’s an educational piece on your side. Go and teach everybody not to mess around with things that they shouldn’t be messing around with.

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’t 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’s binary. It’s locked or it’s not. You’d like to unlock the capabilities within each block so that certain users can do certain things within the same block.

[00:33:15] K. Adam White: 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’s 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.

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’re seeking is actually more flexibility, not less. So they’re 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.

[00:34:13] Nathan Wrigley: Right, so that’s a much more loose approach. Everybody can maybe do more than they ought to do. If we have some editorial guideline where that can’t finally hit the public domain because the publish button is unavailable to you, that’s, okay. We’ll accept that kinda halfway house, if you like. That’s interesting.

[00:34:30] K. Adam White: Each client’s 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.

[00:35:04] Nathan Wrigley: I just want to drill into this a bit more. I know this isn’t 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?

[00:35:17] K. Adam White: I think that we need more workflow in Core.

[00:35:20] Nathan Wrigley: Okay.

[00:35:20] K. Adam White: I know that there’s a number of different agencies and hosts which each have developed our own workflows solutions. I’ve worked across a number of them on projects that I’ve helped to support.

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.

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

[00:36:13] Nathan Wrigley: Yeah, I’d really not thought about that. Given Human Made’s 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’ve 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’s position in terms of getting things pushed into Core?

[00:36:37] K. Adam White: We participate in the project. I personally have been less involved in Core over the past several years than I would have hoped. I’ve been very much enjoying the detailed, quite close to the ground work that I’m doing on our agency projects. But unfortunately, I have taken a bit of a step back on the open source project.

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.

We obviously will advocate in calls for feedback within the Gutenberg project when we feel that there’s 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’s all done through the normal Gutenberg GitHub issue, and WordPress

[00:37:28] Nathan Wrigley: So I think we should probably knock it on the head there. We’ve reached our allocated time. I’ll just point out that these days, it used to be the case that if I was at a WordCamp, you’d really have to wait about six months before the video for the presentation was available. I’m pretty sure it’ll 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’ll be able to see what it is that K. Adam was talking about.

But really, thank you so much for chatting to me today about all of that.

[00:38:06] K. Adam White: Thank you very much. And I can confirm that the video is already live on YouTube.

On the podcast today we have K. Adam White, or K. Adam for short.

K. Adam is the principal engineer at Human Made, an enterprise WordPress consultancy. He’s 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.

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.

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.

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’s 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’s a frank reflection on gaps in WordPress, like granular content permissions.

If you’re 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.

Useful links

Human Made

Migrating to Blocks (With Artisanal Care, at Industrial Scale) – K. Adam’s presentation at WordCamp US 2026

Human Made’s rehydrator plugin on GitHub

Compartilhar.
Deixe Uma Resposta

Português do Brasil
Exit mobile version