Category: Uncategorized

  • Matt: To Cut A Pineapple

    Google has turned 25, which is wow, and they made a cute video about it:

    Of course I tried to visit the original howtocutapineapple.com site, and unfortunately saw a database error connection. From Archive.org it looks like whoever had that domain made a nice WordPress site.

  • #190 – Seth Rubenstein on Block Composability in WordPress’ Future

    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, block composability, what it is and how it’s shaping WordPress’s future.

    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 Seth Rubenstein. Seth is the head engineer at the Pew Research Center, where he leads a team of developers managing the organization’s WordPress based publishing platform for its news site. Passionate about open source, Seth ensures that everything his team builds not only meets the Pew Research Center’s needs, but also benefits the wider community. By actively contributing to the Gutenberg project, he strives to share their solutions, always asking how their work can be given back to help others in the WordPress ecosystem.

    Seth shares fascinating stories from the work he’s been doing recently. He breaks down what block composability means, the ability to build modular, reusable, and even interactive blocks that work seamlessly together, empowering both developers and end users to create sophisticated web applications within the familiar WordPress block editor.

    The conversation gets into some of WordPress’s newest, and most promising, features including the Block Bindings API, Block Bits, which is still very much in development, and the Interactivity API. Seth explains how these tools open a world of possibilities, like building interactive quizzes, dynamically updating content, or even prefetching data, all using blocks, without having to rely on custom React front ends, or heavy server side processing.

    Seth also talks about the path forward for democratizing these advanced capabilities, discussing current limitations, the potential for new UI tools, and what’s still missing in the quest for truly responsive device contextual blocks.

    Throughout the episode, Seth makes a compelling case for why now is a golden opportunity for developers and plugin builders to start experimenting, get involved, and shape the next evolution of WordPress as a cutting edge web application platform.

    Whether you’re a developer curious about the future of Gutenberg, or an editor dreaming of more drag and drop web app power, 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 Seth Rubenstein.

    I am joined on the podcast by Seth Rubenstein. How are you doing, Seth?

    [00:03:40] Seth Rubenstein: Very good. How about you?

    [00:03:41] Nathan Wrigley: Yeah, good. Nice to have you back.

    [00:03:42] Seth Rubenstein: Yeah, second time.

    [00:03:43] Nathan Wrigley: This doesn’t happen too many times. I’ve got to be perfectly honest with you, the audience, I’ve already said this to Seth. Each time I come to WordCamp US, I’m always confounded by how remarkably clever people are, and the depth of the content is sometimes beyond me. I think this is one of those examples.

    I think there’s a high chance that you are going to have to shepherd me. There’s probably going to be a lot of editing, when I pause and you explain what you are talking about. So let’s get into it. First of all, tell us a little bit about you, where you work, what you do in the WordPress space.

    [00:04:10] Seth Rubenstein: Sure. So I work for Pew Research Center. I’m the head of engineering there. I manage a team of four other developers, and I like to tell people that we work with and on WordPress every day.

    We manage a publishing platform for a small news site in the US, Pew Research, but we also contribute to Gutenberg. Everything that we do, everything that we build day in and day out, we try to do from a perspective of how can we open source this? How can we contribute this back to Gutenberg in some way? What can we build to fulfill our needs that would also fulfill other people’s needs?

    [00:04:39] Nathan Wrigley: You said a small organisation, the Pew Research Center. I don’t actually know what they do.

    [00:04:44] Seth Rubenstein: We are a nonprofit, call ourselves a fact tank. What we do is we survey the American public on a variety of issues. Where are they on things like abortion, or religion, or crime, or the economy, or the use of AI, whatever. And we like to kind of say we hold up a mirror to the American public to tell them what they believe back to them.

    [00:05:04] Nathan Wrigley: And so is the WordPress website that you have with them, is that a mechanism to distribute that data back to the public?

    [00:05:09] Seth Rubenstein: Yes, yes.

    [00:05:10] Nathan Wrigley: Okay, that’s interesting. So it’s a data heavy industry that you are dealing with.

    [00:05:13] Seth Rubenstein: It is. It is. We’re very, a kind of academic research institution, but we publish in kind of a news oriented way.

    [00:05:21] Nathan Wrigley: Okay. So we figured out a little bit about you, however you are here at WordCamp US to do a presentation. I actually don’t know if you’ve done it

    [00:05:28] Seth Rubenstein: I have, yeah. I did it the other day.

    [00:05:29] Nathan Wrigley: How did it go?

    [00:05:29] Seth Rubenstein: It went okay. I had a problem with my speaker notes, so I had to ad lib a good bit of it. So it might not be as coherent, or clear as it should have been.

    [00:05:41] Nathan Wrigley: Well we’re here to fix that. You can ad lib all you like here. So it was called, and forgive the pronunciation if I get this wrong, Block Composability: The Past and The Future. I’m actually just going to read the blurb into the record. And I’ll also make sure that there’s a link in the show notes to the page at the WordCamp US website where you can find out about the content. And also if by the time this comes out a WordPress TV episode with your presentation has landed, then I’ll mention that as well.

    Gutenberg excels at crafting beautiful static content, but what if you could empower anyone to build dynamic, interactive web experiences directly within the Block Editor? This session dives into block composability, a powerful concept that enables the creation of rich, interactive content using blocks, making advanced web development accessible to even less technically inclined users, which begs the question, what is block composability?

    [00:06:31] Seth Rubenstein: Block composability, I guess let’s define composability first. Composability in computer science and in software development is the idea that you can create and assemble web applications with reusable components in a modular way. That’s really all that means.

    If you’ve ever used React, if you’ve ever written in React, it means React Component, really. It’s a self-contained modular unit that can act on its own, but when plugged in with other units, it becomes something new, or extend its functionality or changes its functionality in some way.

    [00:07:01] Nathan Wrigley: When Gutenberg dropped, I had this notion that we were going to see mini apps inside of a block. So for example, I had this notion that right off the bat, so I’m going back to 2018 or something, when Gutenberg was still a, so prior to when it was in Core, let’s go with that. And I had this notion that you would drop in, let’s say a real estate block, and that block would encapsulate all the information about this particular house. And you would drop in the block and it would ask you a bunch of questions about the house and out would come a house custom post type, if you like.

    However, what happened was we got paragraph blocks, and we got an image block, and we got these fairly, well, useful, but they do one thing. They do a paragraph. They do an image, and that seems to be kind of where it ended. Are you trying to draw a line in the sand where it’s possible to go beyond that simple, does one thing, paragraph, image, to more the, we have a real estate block with loads of different facets and capabilities?

    [00:07:57] Seth Rubenstein: That’s right, yeah. I think where we’re at now is we’ve reached a point where the block editor, Gutenberg, in both its block editor and site editor kind of flavors, is you can build web applications. Blocks can do something now. They’re not just presenting text or an image and they’re kind of static and, you know, maybe you can style them differently from one post to another, but now they can actually do something.

    And more importantly, they can communicate with one another. You know, one block is adjacent to another. It can tell that block what to do when you click on it. If it’s inside of it, it can change its functionality accordingly. So you might imagine, we have a quiz builder. That’s actually one of our, probably our most technical product.

    And the way it works is there’s a results block where you can build out your results page for your quiz, but if you were to drop in a special block for, we have a special quiz that does scoring a very specific way, well, it changes the scoring functionality in the quiz builder. It doesn’t overwrite that. If you take that block out, the scoring functionality returns back to normal.

    So now we’re at a point where it’s very much possible to build web applications in the block editor with blocks.

    [00:09:00] Nathan Wrigley: So this little quiz block that you’ve described, if I was using, so ignore the developer experience and everything that you have built, the technicalities of all that. If I was somebody that was working for the Pew Research Center and I was, I don’t know, an editor and I needed to create a quiz, would that be my process? I drop in the quiz block, and boom, I have a quiz.

    [00:09:20] Seth Rubenstein: It’s really simple. You would go into, we do kind of store it all in a nice post type. So there’s a quiz post type. And then you open that up, you say, I want to go make a new quiz. And by default, there’s a quiz, we call it the quiz controller block that’s there first. And we have a few templated things in there for you. So like a start page and a question, an answer, and all of those things are block. So a question is a block, and inside of that question goes the answers for that question. That’s a block.

    Go further than that, we also have these kind of bindings. So you drop an answer in, well, there’s text for the answer, right? What if you want an image in there? What if you want a chart? What if you want a video? What if you want some other interactive piece of content to be corresponding to that answer? Well, you can drop that in too. And you can kind of freely move all these things within an answer, while still having that text bound to the answer block.

    So it’s a highly technical product, but for the editors, for the designers, it is literally just drag, drop, drag, drop, drag, drop. Create a page, create a question, type in your answer.

    [00:10:16] Nathan Wrigley: So in the world of 2018 that I alluded to a moment ago when the block editor launched, it feels like there were big missing pieces that prevented what you’ve just described. And maybe they’re APIs. I think possibly in some scenarios they are. What are the bits more recently, I don’t even know if it’s more recently in all honesty, but what are the bits that have enabled the features that you’ve just described?

    [00:10:38] Seth Rubenstein: Sure. So I think it’s funny that you bring back to 2018 because we built Quiz Builder in 2019. I think I’ll go on the record here and say, I think it might be the first kind of product in Gutenberg that was drag and drop building web applications. So I think we kind of pushed really early on the idea of composability inside of Gutenberg.

    And I see it as, there are kind of three waves in Gutenberg. First was, okay, Gutenberg is a CSS generator. That’s how I first kind of imagined it. You’re creating content and you have a style system and that outputs some CSS for your site.

    And then we got, I think the kind of HTML part of that a few years later. With the site editor and the theming inside of the block editor and things like that.

    And now we’ve gotten to the JavaScript part of Gutenberg. Where WordPress has the Inactivity API. And so this is a WordPress native JavaScript framework, so blocks can do something on the front end. And I think that is really the key innovation that’s really opened this up in just the last 12, 16 months.

    [00:11:35] Nathan Wrigley: Are there any APIs that have enabled you to short circuit? So again, in 2018, I would imagine there was quite a lot of heavy lifting that you needed to do order to pull that off, to innovate in that way. Are there any things which have fallen, I think quite recently actually, that have enabled it to be more available to developers who don’t have the time available that you did?

    [00:11:56] Seth Rubenstein: Yeah, I mean, so in 2019 when we did this, you know, all we really had was this ability to kind of scaffolded out these quizzes. The were pretty static in their layout. You drop a question and there were the answers in there, and you could type them in and that was it. No images inside the quiz, nothing like that.

    Now, thanks to things like block bindings, block bits, which we can go into in a little bit.

    [00:12:18] Nathan Wrigley: Yeah, we’d need to I think.

    [00:12:19] Seth Rubenstein: And the Interactivity API, you know, it is, everything is less static. Everything is less set in stone now. With things like the HTML Tag Processor, you can say, oh, this answer has this flag on it so we’re going to change out some of the HTML in it, in kind of real time before it gets to the front end for users. That just really wasn’t possible before, without a lot of work. It wasn’t very performant.

    Now all those things are in place for developers to really tap into. And the documentation and examples are there too, because that was the problem before, I think, is that a lot of people had to figure out how to do this, and now there are real world examples out there.

    [00:12:52] Nathan Wrigley: So you mentioned, quickly skirted over three things there. So there was Block Bits, Block Bindings, which I think the full title would be Block Bindings API, and the Interactivity API, which I think is like a child of the HTML API. I’m not entirely sure about that, but.

    [00:13:07] Seth Rubenstein: It utilises the HTML components.

    [00:13:10] Nathan Wrigley: Okay. Let’s just go through what those three things are in whatever order suits the purposes of this podcast best, because I don’t know which one you’d start on.

    [00:13:16] Seth Rubenstein: Let’s start with Block Bindings API. I would actually imagine a good number of people are familiar with this. This has come up a lot in the last year in the Gutenberg project. What that really lets you do is use Core blocks more effectively.

    For example, before, if you wanted to have a button and you wanted to do a very specific thing and look a very specific way, well, good luck. You had to make your own button. Sure there was the Core button and you could style it to some degree, but what it did was it went to a link.

    Now with things like Block Bindings, you can say, okay, well, I have my Core button and I’m going to style it however I want, but the interior text, you know, what it says, what it does, well, that can be done kind of programmatically on the backend. That’s where the Block Bindings API comes in. It lets you use Core blocks and change them, well, not Core blocks, any blocks, really, and change them to fit your needs.

    [00:14:07] Nathan Wrigley: Can you give us a concrete example of that? So you’ve just talked about the button, you mentioned a sort of, I was struggling to grasp what you were meaning about changing the text programmatically. How would you do that? What would be an example?

    [00:14:18] Seth Rubenstein: Let me give you an example of that, Core paragraph. Very useful with block bindings. And I mentioned answers. So we have this answer block, right? And before it just had a text field in it. You would type in the answer and that was it. That was all you saw. And that meant that you couldn’t do anything inside of the answer. You couldn’t provide any other content inside there, because that would then get rolled up as the answer.

    So now with Block Bindings, what we have is we have this core paragraph binding that you can drop into the answer, and it is a text field still. You can type into it. It’s storing that on the answer block and then you can put other stuff inside the answer block because we’re not reading what’s in there as the content.

    What that meant for us is that we didn’t have to go make another block called answer text. We have hundreds of these kind of scenarios in our system where, yeah, we need a very specific use case, and it’s usually just some text, right, somewhere. Why would I make another block that’s just a paragraph block, really?

    So bindings, it makes blocks way more extensible. So one block can perform multiple functions if you need it to.

    [00:15:19] Nathan Wrigley: So my takeaway from that, it may be ignorant, it kind of adds a layer where you can add more features into any block, Core or otherwise. So in the example of paragraph, it’s like paragraph plus. It’s extended paragraph if you like, and you then get to decide. And that is the binding bit. You bind things to the block.

    [00:15:39] Seth Rubenstein: You bind attributes in a block.

    [00:15:40] Nathan Wrigley: Attributes.

    [00:15:41] Seth Rubenstein: That’s what it really effectively comes down to, is you bind attributes. So you could say that the text, the content attribute, in Core paragraph, well, that’s not coming from whatever you typed in there. It’s coming from some other programmatic interface somewhere in your system, your plugin, whatever.

    So that lets you use Core paragraph as a layout element, put it wherever you’d like, but then what’s inside of it, and perhaps even what happens when you click on it, well, that’s decided elsewhere.

    What’s nice about that is it lessens the number of controls that you need to present to the end user, to the designer, to the editor. For them, they just drop the block in there. The plugin handles the bindings. The plugin handles, okay, the text for this paragraph inside this answer should come from here. They don’t have to think about all that. So it’s less settings for them actually. It’s more just drop blocks in.

    [00:16:27] Nathan Wrigley: You are very much in the weeds of all this, so I suspect the fact that you’ve done this and done this over and over again renders it fairly straightforward. How available is this? Is the documentation there?

    [00:16:38] Seth Rubenstein: Oh yeah. The documentation is there. The WordPress Dev Blog has a number of tutorials on Block Bindings. And I think once you get started with it, it’s extremely easy to work with really.

    [00:16:47] Nathan Wrigley: Okay, so that was Block Bindings. Next one was Block Bits. Now I’ve only heard this phrase a couple of times, so you’re going to have to go 101 on this.

    [00:16:54] Seth Rubenstein: Sure. So Block Bits is, this is an API that is very much in development. It’s a concept more than anything else right now. So with Block Bindings, we can kind of take over a whole paragraph block and change it all out. Well, what if you just need to change one word inside that paragraph? That’s where Block Bits comes into being.

    So this could be you have typed out your sentence, and maybe there’s a name in the sentence. And you need to change that name dynamically based on whatever the user’s choosing in this front end interface. Well, Block Bits, you just select the text, you go to the toolbar, you say, I’m going to bind, quote unquote, this to this thing.

    And Block Bits, the concept is, okay, we’re going to look inside of a block, down to a bit, maybe just a character and do something with that. Change it, make it a button, whatever. That’s really all it is. It’s a fancy name for taking Block Bindings to the next level, which is kind of inside a string of text.

    [00:17:50] Nathan Wrigley: Okay. So it is, again, forgive me if I’ve parsed it incorrectly, but a Block Bit is a binding inside of some other thing. So in the example you gave, swap out this string for a different string, or it could be swap out this image dynamically for a different image, or, I don’t know, insert a dollar sign here instead of a pound sign or.

    [00:18:15] Seth Rubenstein: Well beyond that, beyond just the switching things out, the other kind of powerful part of the concept, and that’s where I think the API part is really still in development, and this will take a little bit further is, one of the examples used in the Gutenberg project is things like ISBN numbers.

    So you can imagine that, you know, maybe you’re running some sort of library like site, you type in an ISBN number. Well, what you want to happen on the front end is maybe a little bit more complex than that. So you type in your ISBN number and the block bit could see that that is an ISBN formatted number, and maybe on the front end it becomes a link with a little popup that goes to the Library of Congress, point to that thing, right?

    So it’s very analogous to Block Bindings, but it’s very much very specific small string inside of a larger string. So they give it as sub block bindings. Maybe that’s even a better term for it. Maybe that’s what would be called in the future. But I really think of it as sub block binding.

    [00:19:10] Nathan Wrigley: And presumably then you can just chain these together inside, well, let’s go with a paragraph. You could just have a one sentence just full of these block bits. So one followed by another, followed by another. Okay, that’s really interesting. So you could have a whole sentence, for example, just made up of bits from all over the place.

    [00:19:28] Seth Rubenstein: Well, and you could imagine that, beyond just like pulling information, it could be really useful when what we’re using it for currently is templating, right? So you want this string, this sentence to have these parameters. Maybe it’s got the format of your post type, and then maybe it’s got the title in there, and then maybe the date. But maybe that’s all on one line and not three different blocks.

    One of the things that drives me crazy right now is, let’s say I want to do a post date, post type, kind of above the post title. I insert a row block, and then I insert my date block, and then I insert my meta block. That’s like a lot of divs, that’s a lot of markup for that. It’s like, why isn’t that just one paragraph line with that bit of information in there? That’s where block bits comes into play.

    [00:20:08] Nathan Wrigley: So it feels like, again, forgive me, it feels like the kind of thing that we would’ve used custom fields for in past. And we would’ve had, I don’t know, dozens of custom fields, each containing their own discreet bit of data, and we would’ve had to have figured out a way to drop those into this paragraph. Now this is all handled natively.

    [00:20:25] Seth Rubenstein: Yeah, and visually in the editor.

    [00:20:26] Nathan Wrigley: Visually in the editor. And so it could be anything. It could be markup, it could be text, it could be an image, it could be, I don’t know, XML, anything you like. That’s really powerful.

    [00:20:36] Seth Rubenstein: It’s exciting. It’s very powerful, and it’s the API that I am most looking forward to seeing completed. I think it will really, without getting too technical, you go a little bit further, Block Bits, Block Bindings. These things I think are kind of critical for responsive blocks. If we’re going to change attributes at kind of a micro level based on certain conditions, like those are the kind of frameworks that we need to be able to do that.

    So beyond just like the content and templating stuff, there are deep technical reasons that these APIs continue to be developed out.

    [00:21:07] Nathan Wrigley: Okay, I think I’ve grasped what that is. Just running the clock back a couple of minutes, you imply, no, I think you said that this is in development more so than Block Bindings. So the block bits is ready to use.

    [00:21:20] Seth Rubenstein: No. There’s very much in a conceptual phase, and I think there’s a lot of other technologies that need to be finished out. There are work on the HTML APIs, even though they’re really well advanced now over the last couple years, there’s more work being done on those. I think those things are kind of blockers to keep pushing forward with the Block Bits. But you can start doing Block Bits today. And I do go over that in the presentation.

    What it really comes down to, fundamentally today is, it’s a rich text custom format, which you can do today. You can go in and make your own kind of custom formats inside the rich text component. You know, that might be bold or italic, a custom format. So it’s really simple as like, okay, well, I have a custom format that adds a class name to something, and then the HTML tag processor, I look for that class name and I change it out. Bingo, bango. So simple.

    But of course, like I said, Block Bits is much bigger than that. There’s an idea of kind of like a library of bits and, you know, you can plug it into different data sources and post meta and this and that and the other thing. But right now at least, you can start to experiment with this idea, with templating and kind of getting dynamic bits of content into a string.

    [00:22:28] Nathan Wrigley: This feels very much to me, like the kind of thing that needs more eyeballs.

    [00:22:31] Seth Rubenstein: It does.

    [00:22:31] Nathan Wrigley: It’s one of those things where you let loose a thousand developers and suddenly some curious thing that nobody thought of occurred and it was like, oh, it does that.

    [00:22:40] Seth Rubenstein: Yeah. I really want to get people to experiment with this concept further, because I think we need to push it further because it’s just so powerful.

    [00:22:48] Nathan Wrigley: Yeah, really interesting. Okay, so we did Block Bits. We did Block Bindings. I think the final one that we mentioned was the Interactivity API.

    [00:22:55] Seth Rubenstein: Yeah. So the Interactivity API, that is about, it’s probably about two years old, I think, at this point. I won’t go into all the history of that, but it is effectively a WordPress native, Preact framework. It’s really easy to work with. You kind of just write basic HTML and the JavaScript is very easy to get into.

    And what that allows you to do is really add interactions at an atomic level to blocks. You can write all sorts of functions. So you might imagine you have a form block, and it has an on submit action. Not every form does the same thing, right? So maybe you have another block, could be send to Firebase. You drop that in there and it changes, it can actually hoist up its own on submit function into that blocks interactivity. And so it makes it really easy to kind of swap JavaScript functionality in and out, and extend functionality across all your blocks.

    [00:23:47] Nathan Wrigley: So it, I guess the easiest way that I parse this was it enables you to have things doing things to other things. That was profound. Things doing things to other things in the same interface.

    [00:23:59] Seth Rubenstein: Yeah.

    [00:23:59] Nathan Wrigley: You click a button and, I don’t know, the cart increments by one or something like that. So this kind of thing that really, in the year 2025, given that we’ve had mobile phones in our hands for decades, this sort of stuff feels like it should have been in websites for decades, but it wasn’t.

    [00:24:12] Seth Rubenstein: Yeah. And the other exciting thing about it is it’s not just about telling blocks what to do. I find it very interesting that it can communicate data across blocks. So I’ll come back to Quiz Builder as a really good example. We just rebuilt that with all of these things, Block Bits, Block Bindings, Interactivity API. That just got completely revamped in the last couple months. Before that, what we were doing is we were building out a custom React front end for every single quiz.

    So the users would go in, they would drag and drop, you know, build up these quizzes. And then on top of that, we were recreating all that for a new front end interface. And we had all this service side processing to kind of build up a data model for the quiz and then score the quiz, and we made a performant as we could be, but it wasn’t.

    [00:24:55] Nathan Wrigley: It’s a lot.

    [00:24:55] Seth Rubenstein: Yeah, it’s a lot. And it’s a lot of like duplicative work and you’re like, what for? With this, it’s now the Interactivity API. Those blocks actually, you know, the answer block just hoists its answer into this larger data model using the Interactivity API.

    So now all that happens client side. So now all these things that we were doing server side, we can do client side with the Interactivity API, and that saves us money, that saves us performance. It yields a better experience for the end user.

    [00:25:19] Nathan Wrigley: So over the last 10 minutes or so, we kind of atomised these three things, Block Bits, Block Bindings, Interactivity. We kind of talked about them as separate things, which I guess they are. But from your experience, I’m guessing that they work in concert really well. In other words, if you understand, if you get into the weeds of those three things, and maybe some other things, you prize open capabilities in WordPress which are pretty profound.

    [00:25:43] Seth Rubenstein: Yeah, well, obviously one of the things that I love most about WordPress is it’s flexibility. Let’s use Block Bits as an example. This kind of pseudo block bits I’ve just described, where you register a custom format and then you use the HTML Tag Processor to switch that out. Well, the way that we’re switching it out is using the Interactivity API.

    So all we do is we say, okay, we look for that class name, we use the HTML Tag Processor, and we add the Interactivity API bits that we need to it. We just say, well, the text value should be this, state dot button text, right? That’s really easy. But you could do it with block context too.

    So there are all these tools in WordPress, all these different APIs related to blocks that once you start to connect them together, you get composability. I mean, that’s what it really comes down to. This ability for developers to build blocks that can be, one, reusable, that’s really important concept for composability, two, stand on their own, right? A button block should do something if it’s on its own. It should go to a link or something. But if that button block is dropped into another block, it’s nestable, well its configuration changes. Now it submits for the form, right? It doesn’t go to a link.

    We’re at this place where just, there’s all these tools available to you when you start plugging them all together, really powerful stuff happens.

    [00:26:53] Nathan Wrigley: Yeah. And I guess it’s like anything, once you’ve made those connections in your own head and done the hard work to understand them all, suddenly ideas begin occurring to you that maybe in a podcast like this, you get to the very edge of that, but you don’t get into the weeds of that. But once you’ve peeled it back and understood it, suddenly, aha, I didn’t realise WordPress could do all of this.

    One of the things that I’m curious about, because I’m no developer, I kind of have a desire for this stuff to become available to non-developers. And at the minute it feels like you would really need to be a developer to build this stuff. Obviously you can surface it in a way that a non-developer can access. So your quiz, for example, I’m guessing I could interact with that almost immediately and understand it. Would there be any utility in building a UI for this so that these kind of things can be accessed?

    [00:27:36] Seth Rubenstein: I think so. We have our own UI for this. We have an Interactivity API panel that we actually have on all of our blocks that have interactivity enabled. And what it does is it does allow us some interesting things for end users that they don’t have to know about.

    So one of those things is you can drop a block into a block that supports interactivity. And the panel shows you all the blocks in the hierarchy that you can connect to. And so you might say, okay, well I want to connect to this, and then I want to pull this action from that interactivity store for this block.

    So now we’ve enabled it so that it’s not the developers making all the Interactivity API connections. You know, this does this when it’s in this block. Actually, you can go in there and decide that for yourself if you want.

    Now obviously that does still require a developer to hook that all up, but what you already see today with Block Bindings is a very similar panel. When you go use a Block Binding today, there’s a little panel called attributes. You click it, it shows you all the attributes you can connect up to a binding. That’s part of Gutenberg and WordPress Core right now.

    So I think that interface is already there, and I think as more Block Bindings and plugins start to utilise that, the interface is already there for really people to kind of make these interactivity connections themselves.

    [00:28:50] Nathan Wrigley: I suppose I’m kind of thinking back to the day when WordPress shipped for the first time, custom post types. I presume lots of people made use of them. It might be analogous to where we are at now with this, you know, people who are experienced can use it. But then somebody, some bright spark, came up with the idea of a custom post type plugin with a UI, and this way of just making it visually appealing and straightforward.

    And when you were talking about this sort of, it felt almost like a flow chart that you were building there, where you’ve got, here’s the options, just sort of clicking on them with a mouse and dragging it so this feature now goes to this feature, and I’m binding this to this, that’s what I was imagining. You know, something really straightforward. Drop dead simple, non developery.

    [00:29:29] Seth Rubenstein: Well, I will give a plug for my friends at Automattic. Part of my session was also sharing a product that we’ve built called Remote Pivot Table, which lets you kind of make really quick pivot tables out of Google Sheets so the data’s not living inside of WordPress, so that our researchers can really quickly update these data sets, and we don’t have to do a thing to get the updates. Well, that’s built on Automattic’s new Remote Data Blocks. And it actually does exactly what you’re saying.

    You go in there, you tell it what your data sources are. Airtable, Google Sheets, Shopify, Custom HTTP endpoints if you want, and it will go create the blocks for you. It will create the bindings for you, and it’ll create the interface for you so that you can select, okay, well, when I’m building out my interface, you know, this text goes to this binding. It should pull from this value from that Google sheet. So that’s actually already out in the wild right now.

    [00:30:18] Nathan Wrigley: What was it called?

    [00:30:18] Seth Rubenstein: Remote Data Blocks.

    [00:30:19] Nathan Wrigley: Okay.

    [00:30:20] Seth Rubenstein: It’s on the WordPress plugin repo. I think they just published it this week.

    [00:30:23] Nathan Wrigley: I’ll remember to put that into the show notes. I will dig that out and make sure that that gets into the show notes.

    Yeah, I kind of feel like, even if we were to build the perfect UI, I still feel for most people this may end up being the domain of, get the developer to do it.

    [00:30:38] Seth Rubenstein: Yeah, it is very much in the domain of the developer. These are all developer APIs for them to build out tools for others. And I think ultimately what these APIs allow is for developers to make products that are easier to use for the end user. Like I said, less settings, less controls, less all these sidebar panels and stuff, and more just, you drag and drop the block in and in the background, through the Interactivity API, through Block Bindings, through Block Bits, you’re configuring how that application should work. So it’s more of just drag and drop for the end user.

    [00:31:09] Nathan Wrigley: The features exist, you’d need to sort of go and figure out how to make it work. I guess we’ve got all these Block Bindings, we’ve got all these Block Bits, we’ve got this enormous complexity that we could get into. How performant is all of this?

    [00:31:22] Seth Rubenstein: Extremely.

    [00:31:23] Nathan Wrigley: So my fear is you just get carried away and you bind everything to every other thing, and where a bit is available, you make a Block Bit. I can’t summon up an example, but you get the point. You just get totally carried away. The performance, I would assume there is some hit, but it sounds like not so much.

    [00:31:40] Seth Rubenstein: I don’t think so. I think the performance is actually better for a lot of these things. All of our Interactivity API projects, like technical performance is substantially better than if we had just built out a React frontend ourself.

    Because think about the weight of that. I mean, React is pretty heavy, one. Preact on the other hand, which the Interactivity API is built on is very lightweight. But additionally you have this, I guess the other element which we really kind of haven’t defined is the HTML Tag Processor. That is what underpins all of these things, all of these APIs, even the Interactivity API, even though that’s JavaScript,

    When you are writing in the Interactivity API, you can write state and context and all these values in HTML, the HTML tag processor that’s reading that, that’s processing it. And it does it so extremely fast. You know, if you’ve worked with a PHP DOM document, it’s slow, it’s very bad. This is not that. This is extraordinarily fast.

    In addition, on the technical performance, when you’re using the Interactivity API, you get speed on the front end as well, because what you can do is you can pre hydrate information into your JavaScript application before it even loads, on the server side, which is really exciting.

    You can see this today actually. Core query, the query loop, and the pagination. Those use an Interactivity API. When you hover over the two or the next page, what’s happening is there’s an Interactivity API function for prefetch. So you’re prefetching the next page of results. So for the user, boom. They click on it, boom. The results are already there. You go a little bit, further, you can cache that information. So now the user has pre fetched the next page and they’ve cached it for the next person to come to this page. That just really wasn’t possible before.

    [00:33:18] Nathan Wrigley: No. Is that kind of leaning into sort of core browser technologies as well?

    [00:33:22] Seth Rubenstein: Oh yes.

    [00:33:22] Nathan Wrigley: Yeah, I’m just thinking of things like.

    [00:33:25] Seth Rubenstein: Well, the prefetch thing is part of the browser technology. I’ll give you an example. We have this very large religious census we do every decade called the Religious Landscape Study. It’s extremely complex database with a lot of querying, and a lot of SQL logic. If we were to, you go to a page on this database and there’s maybe like 12 charts. Well, if we were to load all those 12 charts on page load, like it would take a couple minutes to load the page. The site would probably crash.

    But what we do is, as a user hovers over a chart before they click on it, we prefetch, it and we cache it. So for them, they click it, it’s instantaneous. But also we’ve now done the extra work of waiting for the next person, that’s already waiting there ready for the next person. I cannot state how important this innovation has been for the performance of our site and the Interactivity API.

    [00:34:12] Nathan Wrigley: That is actually fairly profound, isn’t it? Yeah. Sometimes when you are explaining these things, the penny kind of half drops. And then a moment later, the penny drops fully and that one’s just hit. That’s actually really profound, isn’t it? Especially on a high traffic site where you don’t really want to be doing that thing a thousand times a second, just do it once, more or less.

    [00:34:34] Seth Rubenstein: I have a philosophy of if I can offload it to the end user, I’m going to. You know, I’m going to use your computer if I can.

    [00:34:41] Nathan Wrigley: That’s fascinating. Okay, so pivot slightly. Do you think there’s a opportunity here? I expect there’s a bunch of developers listening to this who either haven’t experienced this before, haven’t played with it, and are thinking, okay, I want to wrap a UI around that. I want to build a plugin to make this stuff available. We kind of alluded to this a minute ago. Do you think that there is an opportunity there for developers to kind of neaten this interface up?

    [00:35:02] Seth Rubenstein: Oh, yeah. Oh, yeah, absolutely. I would be very excited to see where the future of this lands for the WordPress ecosystem. You think of plugins like Advanced Custom Fields and what that did for WordPress, right? It was obviously possible to register post meta and all this stuff before, but what a hassle. It just was. And it really opened up WordPress as a content management system in a way that no other plugin had really done before.

    So some very smart person, some enterprising person out there, there is an opportunity here to kind of build out something that would do that for the Interactivity API and empower less technically inclined people and maybe just not technical people at all to use this.

    [00:35:39] Nathan Wrigley: Yeah. Because despite the fact that you’ve explained it really clearly, and I’ve got a grip on it, I suspect that I wouldn’t want to go through all of the weeds to connect all of those pieces. And I don’t want to open up a code editor. I want everything to be point, click, type, inside of WordPress, in a really straightforward, well-designed, beautifully thought through interface. Kind of like gold rush territory I think. Maybe there’s an opportunity here for someone, maybe multiple people.

    Yeah, and it’s what you said before about these kind of custom post type plugins, there’s many of them and I think without them, nobody would’ve been using custom post types, well, not nobody, but a tiny proportion of the people would’ve started to use them. And I feel the same a bit here. I feel like the things that you’ve described, they’re fabulous, technically, conceptually brilliant, but if somebody was to come up with a UI that made them not just conceptually brilliant, but drop dead easy to use, we’ve got something really incredible.

    [00:36:35] Seth Rubenstein: Yeah, absolutely. Yeah, I mean, look, when I first started in WordPress, I didn’t know how to do custom fields, custom post types. You know, ACF helped me out there. And I do them all by hand now, right? I register all my post types and my post meta by hand. But those sort of plugins that make it easier for, well, not even if you’re less technically inclined, you’re busy, you don’t have the time to learn all these new APIs, it really does help out adoption down the road.

    [00:37:00] Nathan Wrigley: And also you can imagine scenarios where people build out pre-configured versions of a thing. So that you might have templates for, I’m struggling to conceptualise that but, you know, you download this plugin, whatever it may be, and they’ve pre-configured useful scenarios that are repeatable. And you just, okay, click a button, that gets me 90% of what I want to do and then I go from there, kind of thing. Yeah, that’s interesting.

    In terms of the bits and pieces that you’ve described, is there anything which you think might be missing? I know that’s a difficult question to answer because I’m asking you to stare into a crystal ball and come up with the future. But is there any kind of concept in here that you’ve thought, you know what, it’d be really handy to have that?

    [00:37:37] Seth Rubenstein: I think it’s responsive. Responsive blocks, responsive attributes.

    [00:37:41] Nathan Wrigley: Describe what that is because in my head, as soon as I hear responsive, I think viewport width.

    [00:37:45] Seth Rubenstein: Yeah, and I think that’s exactly what I’m talking about. You know, I think all of the APIs are here. All the bits are in place to make that happen, the work just needs to be done. There’s actually a function in the Gutenberg source code for, I think it’s called update attribute on screen size or something like that, where you can kind of, desktop, tablet, mobile changes attribute to match for that viewport size.

    I think this has been the Achilles heel for Gutenberg. It’s the constant complaint that I hear out of people. And I think that is really the missing link, the, last thing that would really make Gutenberg perfect.

    [00:38:19] Nathan Wrigley: So scenarios where you could literally change anything based upon, I don’t know, we’re on a tablet now, so what we had on a desktop is no longer appropriate. Again, I’m struggling to conceptualise what that might be, but again, the same on mobile.

    [00:38:32] Seth Rubenstein: I’ll give you a good example. We have our own grid block, columns block. We made our own grid block because we do this responsive attribute stuff. You might have three columns that are x width on desktop, and then on tablet, well, you might want that middle column actually to move to the first position to be 100% width, right? That’s a really easy example, but doing that right now is next impossible without having a developer build out that system for you. That’s just one thing I can think of, but there are a myriad of instances like that.

    [00:39:01] Nathan Wrigley: Yeah, the domino fell a bit there. I understand what you mean. So yeah, it could be width, it could be background colour, it could be font size or content, anything.

    [00:39:09] Seth Rubenstein: A number of things, yeah. Well, it could be also in the Interactivity API. It could be that, you know, on tablet, actually I want, when you click on this thing, I want it to do something else entirely.

    [00:39:16] Nathan Wrigley: The button does a different thing.

    [00:39:17] Seth Rubenstein: Yeah.

    [00:39:17] Nathan Wrigley: Yeah, okay. That’s really interesting.

    [00:39:18] Seth Rubenstein: Well, I’ll give you another example. We do that. Well, not to that degree, but Core social links. We wrap that in another block called Navigator Share Link. So when you’re on mobile and you click on the Facebook button, we’re not taking you to the Facebook share little window. We just open up the little native browser share thing. You just send it off to your app or whatever, friends, your iMessage, whatever you want to do.

    So I think that kind of device contextuality is one area where there’s not a lot of guidance or APIs or anything, and that is kind of entirely on the developers to figure out themselves. But I think that’s probably what’s missing most from Gutenberg, is that kind of idea of screen or device contextuality.

    [00:40:01] Nathan Wrigley: I just think this is all so fascinating. Essentially, during the last 40 minutes or so, you’ve prized open, I think a really different future for WordPress than I had previously thought. I knew all these things existed. I hadn’t really connected the dots. And it feels to me as if suddenly you go from building a bunch of websites to anything. Literally anything. If it’s possible to put in a browser.

    [00:40:27] Seth Rubenstein: It’s a web application framework.

    [00:40:28] Nathan Wrigley: Right. There you go. Yeah. A web application. Build anything inside of WordPress, which is not something that I was all that familiar with. Gosh, the future is bright.

    [00:40:37] Seth Rubenstein: I mean, we have blocks where people are, you know, drag and drop them together and they’re building out little calculators. You know, one of our more popular content types is like, put in your income and where you live, and then we’ll tell you some information about you, you know, about your area or whatever. That’s a web application. That’s not a blog post. That’s not content. That’s a web application that someone just drag and drop built.

    Yeah, we’re at a place, you know, the content management stuff of WordPress, man, that’s rock hard. That’s settled. Now we’re going into another era, a new direction where WordPress is this web development framework, first and foremost. For you, the developer, but also your end users to build web applications with, inside of.

    [00:41:19] Nathan Wrigley: Yeah, absolutely fascinating. So my intuition that I alluded to at the beginning of this podcast, in 2018 or whatever it is, that promise has now become reality. The year 2025, we got there. And now it just needs a bunch of developers, hopefully, dear listener, if you’re listening to this, get on board and try to figure this out and make it straightforward so people like me can use it.

    Seth, I think that’s probably the sweet spot to end it. That’s a very optimistic future you’ve painted there. Where do we find you, if somebody’s listening? I would imagine that there’s a bunch of people listening to this thinking, I need to speak to Seth.

    [00:41:51] Seth Rubenstein: You can find me at sethrubenstein.info. And you can find me on Twitter or Bluesky. Please find me on Bluesky, though, I hate Twitter.

    [00:41:57] Nathan Wrigley: We will drop the links into the show notes. So if you head to wptavern.com, search for the episode with Seth Rubenstein, that’s S-T-E-I-N, search for that and then the links will be there for Seth’s socials, plus anything to do with the talk that we’ve been mentioning as well. Seth Rubenstein, thank you so much for chatting to me today.

    [00:42:15] Seth Rubenstein: Thank you for having me.

    On the podcast today we have Seth Rubenstein.

    Seth is the head of engineering at the Pew Research Center, where he leads a team of developers managing the organisation’s WordPress-based publishing platform for its news site. Passionate about open source, Seth ensures that everything his team builds not only meets the Pew Research Center’s needs, but also benefits the wider community. By actively contributing to the Gutenberg project, he strives to share their solutions, always asking how their work can be given back to help others in the WordPress ecosystem.

    Seth shares fascinating stories from the work h e’s recently been doing. He breaks down what block composability really means, the ability to build modular, reusable, and even interactive blocks that work seamlessly together, empowering both developers and end users to create sophisticated web applications within the familiar WordPress block editor.

    The conversation gets into some of WordPress’s newest and most promising features, including the Block Bindings API, Block Bits (still very much in development), and the Interactivity API. Seth explains how these tools open a world of possibilities, like building interactive quizzes, dynamically updating content, or even prefetching data, all using blocks, without having to rely on custom React front-ends or heavy server-side processing.

    Seth also talks about the path forward for democratising these advanced capabilities, discussing current limitations, the potential for new UI tools, and what’s still missing in the quest for truly responsive, device-contextual blocks.

    Throughout the episode, Seth makes a compelling case for why now is a golden opportunity for developers and plugin builders to start experimenting, get involved, and shape the next evolution of WordPress as a cutting-edge web application platform.

    Whether you’re a developer curious about the future of Gutenberg or an editor dreaming of more drag-and-drop web app power, this episode is for you.

    Useful links

     Pew Research Center

    Seth and Max Schmeling’s presentation at WordCamp US 2025 –  Block Composability: The Past and The Future

    Interactivity API

    Block Bits – Proposal: Bits as dynamic tokens

    Block Bindings API

    HTML API

     Preact framework

     Automattic’s new Remote Data Blocks

     Religious Landscape Study

    Seth’s website

    Seth on Bluesky

  • Open Channels FM: Transforming Website Analytics for WordPress Users with a Privacy-First Approach

    In this episode, Adam chats with the creators of Independent Analytics, a WordPress plugin focusing on user-friendly, privacy-oriented website stats. They highlight its benefits over Google Analytics and upcoming features.

  • 5 Best Image Optimization Plugins for WordPress Tested on Real Images

    5 Best Image Optimization Plugins for WordPress Tested on Real Images

    Image optimization plugin for wordpress.Looking for the best image optimization plugin for WordPress? To help you choose, we went hands-on with five popular options and ran our own tests. See the results of these tests here.

  • Open Channels FM: From Identica to ActivityPub: How Open Social Protocols Are Shaping the Future of the Web

    The Fediverse, shaped by pioneers like Evan Prodromou, evolved from Identica to ActivityPub, fostering decentralization and user control. It contrasts corporate social networks by promoting openness, privacy, and collaborative development for online communities.

  • The Easy Way to Embed TripAdvisor Reviews in WordPress (No API Required)

    The Easy Way to Embed TripAdvisor Reviews in WordPress (No API Required)

    If you run a hotel, restaurant, or tour business, you already know how much TripAdvisor reviews can impact your bookings. They build trust, boost visibility, and can be the difference between a casual visitor to your website and a paying customer.

    When I first tried displaying TripAdvisor reviews on a WordPress website, I realized how time-consuming it can be. Manually copying and pasting the testimonials looked messy, and most built-in widgets didn’t fit well with my site’s design.

    After testing several methods and plugins, I finally found a solution that works well: Smash Balloon’s Reviews Feed Pro. It automatically pulls in your latest customer reviews, keeps them up to date, and blends perfectly with your site’s design.

    In this guide, I’ll show you exactly how to embed TripAdvisor reviews in WordPress without writing any code, so you can highlight your best feedback and attract more customers.

    Embed TripAdvisor Reviews in WordPress

    Why Embed TripAdvisor Reviews in WordPress?

    Positive TripAdvisor reviews can convince people to choose your hotel, restaurant, or tour company over your competitors. And showing these reviews directly on your WordPress website allows visitors to see real guest experiences without visiting a third-party site.

    This helps build trust right away.

    People can read genuine feedback from your past guests, which makes them more confident about choosing your business. When travelers or diners see positive reviews, they’re more likely to book a stay, make a reservation, or join a tour.

    Here are some key reasons to add TripAdvisor reviews to your WordPress site:

    • Keep visitors on your site — People can explore reviews without clicking away to another platform. This can also help you to get more direct bookings through your website.
    • Boost local SEO — Reviews add fresh content that helps your site appear more often in local results.
    • Save time on marketing — Reviews promote your reputation automatically, so you don’t need to create testimonials manually.
    • Get more bookings and sales — Positive feedback encourages new customers to choose you over competitors.

    Plus, I’ve spoken to many tour operators who feature customer reviews directly on their websites, and they tend to convert better. This is simply because visitors can see real proof that others enjoyed their experience.

    Now, let’s start embedding TripAdvisor reviews on your WordPress website.

    Here’s a quick overview of all the things I’ll share in this guide:

    Step 1: Install and Activate Smash Balloon’s Reviews Feed Pro

    For this tutorial, I’ll use the Smash Balloon Reviews Feed plugin. This is the best product review WordPress plugin for pulling reviews from multiple platforms, including TripAdvisor.

    At WPBeginner, we’ve thoroughly tested the plugin in real WordPress setups. Check out our full Smash Balloon review for all the details.

    What’s great about this plugin is that it gives you two ways to connect your site to TripAdvisor. If you prefer, you can use TripAdvisor’s official API. But for most people, the easiest option doesn’t require any code or API keys – just a link to your TripAdvisor page.

    In this guide, we’ll use the simple method so you can get set up in minutes.

    First, you’ll need to sign up for Reviews Feed Pro on Smash Balloon’s website. This plugin is specifically designed to pull in reviews from multiple platforms, including TripAdvisor, and display them beautifully on your WordPress site.

    On the Smash Balloon website, click ‘Get Started Now,’ choose a plan, and follow the signup process.

    Smash Balloon website

    💡 Note: To display TripAdvisor reviews, you’ll need the Smash Balloon Reviews Feed’s Elite plan or the All Access Bundle that has all the Smash Balloon plugins.

    After purchasing the plugin, you can download the Reviews Feed Pro file to your computer. Or you can copy the license key and store it somewhere safe.

    Then, head to Plugins » Add New Plugin in your WordPress dashboard to install and activate the plugin.

    The Add New Plugin submenu under Plugins in the WordPress admin area

    On the next screen, you can use the ‘Upload Plugin’ button to add the Reviews Feed Pro zip file.

    Or you can use the search bar to quickly find the Reviews Feed plugin. Click the ‘Install Now’ button and then ‘Activate’ in the relevant search result.

    Installing the Reviews Feed plugin

    If you need help, see our guide on how to install a WordPress plugin.

    Once the plugin is active, you’ll see a new Reviews Feed menu item in your WordPress dashboard. This is where you’ll manage all your review feeds and customize how they appear on your site.

    Now, let’s go to Reviews Feed » Settings.

    In the ‘General’ tab, you can enter your license key and click ‘Install Pro’ to verify it. This will unlock all the Reviews Feed Pro features.

    Verifying the Reviews Feed Pro plugin's license key

    Step 2: Create a TripAdvisor Review Feed

    Now it’s time to set up your TripAdvisor review feed.

    To get started, you need to first navigate to Reviews Feed » All Feeds in your WordPress dashboard. Then, click the ‘Add New’ button to create your first feed.

    Creating a reviews feed on your WordPress website

    This will open the feed creation wizard that walks you through the setup process.

    Next, click ‘Add Source’ and choose ‘TripAdvisor’ from the list of available review platforms. This tells the plugin that you want to pull reviews specifically from TripAdvisor.

    Click ‘Next’ to continue to the connection settings.

    Adding TripAdvisor as the source

    The plugin will then ask for your TripAdvisor page URL.

    You can simply paste the URL of your business’s TripAdvisor page into the field provided. This is how the plugin knows which reviews to fetch. Just make sure you have the full URL to your page.

    💡 Note: How does this method work without an API? The plugin acts like a browser, visiting your public TripAdvisor page to gather the latest reviews. It then formats and displays them on your site automatically.

    For example, here’s what it might look like:

    TripAdvisor URL example

    After entering your URL, click ‘Finish’ to establish the connection.

    The plugin will test the connection and confirm that it can access your TripAdvisor reviews.

    Adding the TripAdvisor URL

    Once the connection is successful, you can click ‘Next’ to move on to the design and customization options.

    This will take you to the Reviews Feed visual editor, where you’ll make your reviews look exactly how you want them on your WordPress site.

    TripAdvisor reviews added and ready to customize

    Step 3: Customize Your TripAdvisor Reviews Feed

    With your TripAdvisor connection established, you can now customize how your reviews will look on your hotel, restaurant, or travel website.

    On the next screen, Reviews Feed Pro will prompt you to select a template.

    Here, I’ll use the default one, but you can choose the one that fits your style best. Click the ‘Next’ button to continue.

    Selecting a Reviews Feed template

    Next, you’ll see the visual feed customizer.

    The customizer gives you a live preview, so you can see changes as you make them.

    TripAdvisor reviews on the Reviews Feed visual editor

    From here, you can start customizing your TripAdvisor reviews feed by choosing a template design. Simply click on the ‘Layout’ tab, and you’ll see three options:

    • Default – Displays your reviews in a clean, stacked layout that works well for most websites.
    • Masonry – Arranges your reviews in multiple columns for a more dynamic, grid-style look.
    • Carousel – Shows your reviews in a rotating slider, which is perfect for highlighting a few reviews in a smaller space.

    I went with the Carousel layout, but you can choose the one that suits your site design best.

    The Carousel layout for example

    While you’re here, you can adjust other display settings, like the number of reviews to show and how much of each review text to display (on mobile, tablet, and desktops).

    For the number of reviews to display, I recommend showing at least 6-8 reviews per page to give visitors a good sense of your customer satisfaction.

    There are a lot more you can do on this visual editor, such as:

    • Header options – Show or hide the heading, include the ‘Write a Review’ button, and display the average rating for your hotel, restaurant, or travel services.
    • Post style – Choose how your reviews are displayed, either in individual boxes or in a simple, regular list.
    • Load more button – Add a custom call-to-action (CTA) when loading more reviews.

    For each of those settings, you can customize colors, padding, and other styling details to match your website’s design.

    Customizing the Load More button

    Next, you might want to check out the ‘Settings’ page, where you can access filtering options.

    This is where you can control which reviews appear on your site. For example, you might want to show only 4-star and 5-star ratings to highlight your best customer feedback.

    You can even filter reviews by specific words, for example, choose only to show or hide reviews that contain certain terms.

    Filtering options in Reviews Feed

    The live preview updates instantly as you make changes. This makes it easier to experiment with different settings until you find the perfect combination for your site.

    There’s also a moderation option that puts you in complete control of what gets shown. When it’s enabled, you can approve or hide individual reviews before they show up on your site.

    Moderation in Reviews Feed

    Once you’re happy with how everything is set up, click ‘Save’ to store your customizations. Your review feed is now ready to embed on your website.

    Step 4: Embed TripAdvisor Reviews in WordPress

    Now it’s time to actually display your TripAdvisor reviews on your hotel, travel, or restaurant website.

    Reviews Feed Pro gives you two main ways to showcase your reviews: on specific pages or in widget areas like your sidebar or footer.

    Let’s walk through how to do both.

    Embed TripAdvisor Reviews on a WordPress Page

    To add reviews to a specific page, start in the visual feed customizer by clicking the ‘Embed’ button.

    Embedding TripAdvisor reviews feed

    This opens the embedding options, where you can choose exactly where you want your reviews to appear.

    In the popup, you can select ‘Add to a Page’ and choose the WordPress page where you want your reviews to display.

    Choosing the Add to a Page option on the Embed Feed popup

    This could be your homepage, about page, or a dedicated testimonials page.

    Click ‘Add’ at the bottom of the popup to continue.

    Adding reviews to the home page

    This will take you to the WordPress block editor.

    Simply click the plus (+) icon and add a new Reviews Feed block wherever you prefer.

    Adding Reviews Feed block in content editor

    Next, if you have more than one review feed, you’ll need to select which one to add to this page.

    On the right-hand panel, simply click to expand the dropdown menu and choose the TripAdvisor reviews feed.

    Choosing the TripAdvisor reviews feed to add

    The Reviews Feed block will then automatically add the TripAdvisor reviews to your content editor.

    You can go ahead and move it around to position the reviews wherever you’d like.

    TripAdvisor reviews loaded on the content editor

    Before publishing, you can preview the page to make sure the TripAdvisor reviews feed has been added to your page content.

    If everything looks good already, click ‘Update’ to save your changes and make the reviews live on your site. Visitors will now see your TripAdvisor reviews displayed beautifully on that page.

    TripAdvisor reviews feed on a live site
    Embed TripAdvisor Review Widget in the WordPress Sidebar or Footer

    For a site-wide display, you can start by clicking the ‘Embed’ button inside the Reviews Feed.

    Just keep in mind that your theme needs to support widgets for this to work.

    Embedding TripAdvisor reviews feed

    In the popup that appears, choose ‘Add to a Widget’ from the options.

    This will then take you to the WordPress widget management area.

    Adding reviews feed to a widget

    Click the plus (+) icon in your chosen widget area (like a sidebar) and search for the Reviews Feed block.

    Then, go ahead and add this block to display your TripAdvisor reviews.

    Adding TripAdvisor review to the sidebar

    If you have multiple review feeds, you’ll need to select the one you want to embed.

    In the right-hand panel, open the dropdown and click on the TripAdvisor reviews feed you just created.

    Selecting the TripAdvisor reviews feed to embed

    You’ll then see the reviews in your widget management area.

    With that done, click the ‘Update’ button to save your widget settings.

    TripAdvisor reviews on the widget management area

    Your TripAdvisor reviews will now appear in the sidebar (or footer) of every page on your site, giving you maximum visibility for your customer feedback.

    This is how it looks on our demo site:

    TripAdvisor reviews on the sidebar

    Expert Tip: If you don’t see any widget areas on your website, then you may be using a newer block theme. You can read our guide on how to use the full site editor for more information.

    How to Manage and Troubleshoot Your TripAdvisor Reviews Feed

    If you run into any errors with your review feeds, you will want to quickly fix them. Here are some common scenarios and simple tips to help you update your reviews with ease.

    Reviews Feed Not Displaying

    The reviews not displaying can happen for a few reasons.

    You can start by checking that your feed is set to ‘Published’ and that you haven’t accidentally set filters that exclude all your reviews.

    If reviews still aren’t showing up, go to Reviews Feed » Support and look at the System Information. You can find Error Logs at the end of this panel, so you can see if any issues are preventing the plugin from fetching your reviews.

    Error logs in Reviews Feed system info
    New Reviews Not Appearing Immediately

    If you’ve just received a great new review on TripAdvisor and don’t see it on your site right away, don’t worry.

    To keep your website running fast, the plugin caches your reviews (stores them temporarily).

    For details on how to fix this, you can see our guide on how to clear the cache in WordPress.

    Troubleshooting an Optional API Connection

    While this guide uses the simple URL method, Reviews Feed Pro also offers an optional API connection for developers. If you chose to set up your feed using that advanced method and your reviews stop displaying, the issue may be with your API credentials.

    To fix this, go to Reviews Feed » Settings and navigate to the TripAdvisor section to ensure your API keys are correct.

    Checking API keys in Reviews Feed

    If needed, you can also update your API keys from here.

    Overall, I recommend checking your reviews feed monthly to ensure everything is working smoothly. TripAdvisor occasionally updates its system, which can affect how plugins connect to its data.

    When in doubt, don’t hesitate to contact Smash Balloon’s support team. They can help quickly identify connection issues that might not be obvious.

    Bonus Tip: How to Show Your Google, Facebook, and Yelp Reviews in WordPress

    TripAdvisor reviews are great, but combining them with reviews from other platforms can give your hotel, restaurant, or travel business even more credibility. Many businesses use reviews from multiple sources to give visitors a fuller picture of their reputation.

    With Reviews Feed Pro, you can easily pull in feedback from Google My Business, Facebook, and Yelp — all using the same plugin and setup you’ve already learned.

    A Google review feed, created using Smash Balloon

    You can create separate feeds for each platform and display them on different pages, or mix everything into a single rotating feed.

    This works especially well because not everyone uses the same review site. Some people trust Google reviews most, while others rely on Facebook or Yelp when deciding where to go.

    For a complete guide on setting up reviews from these other platforms, check out our detailed tutorial on how to show Google, Facebook, and Yelp reviews in WordPress.

    Frequently Asked Questions About Showing TripAdvisor Reviews in WordPress

    Here are the answers to a few common questions that I get about showing reviews in WordPress.

    How do I extract reviews from TripAdvisor and add them to my WordPress site?

    The easiest way is to use a plugin like Smash Balloon Reviews Feed. It automatically pulls your latest TripAdvisor reviews and displays them beautifully on your website (no need to copy and paste anything manually).

    Does Tripadvisor have an API?

    Yes. TripAdvisor offers an API that lets developers access business information and reviews directly. However, it’s mainly intended for approved partners and requires API credentials, which can be tricky to manage for most users.

    Do I have to use the TripAdvisor API to show reviews?

    No. With Reviews Feed Pro, for example, you don’t need to deal with complex API setups. You can simply connect your TripAdvisor page by URL, and the plugin will automatically fetch and display your reviews.

    But if you prefer more control, you can still connect via API because the plugin supports both methods.

    Keep Exploring: How to Add More Social Proof to Your WordPress Site

    I hope this guide has helped you embed TripAdvisor reviews in WordPress.

    However, adding TripAdvisor reviews is just one way to build trust and credibility with your potential clients. There are many other forms of social proof you can add to make your site even more persuasive and engaging.

    Here are other guides you might find helpful:

    If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

    The post The Easy Way to Embed TripAdvisor Reviews in WordPress (No API Required) first appeared on WPBeginner.

  • Matt: Make No Little Plans

    Make no little plans. They have no magic to stir men’s blood and probably themselves will not be realized. Make big plans; aim high in hope and work, remembering that a noble, logical diagram once recorded will never die, but long after we are gone will be a living thing, asserting itself with ever-growing insistency. Remember that our sons and grandsons are going to do things that would stagger us. Let your watchword be order and your beacon beauty. Think big.

    Daniel Burnham, Chicago architect (1864–1912) (Hat tip: Erin, and the Summit folks.) (It’s an old quote but update in your head to include the ladies too.)

  • Matt: Albumin

    Since reading the Four Hour Workweek and Tim Ferriss I’ve been a bit of a bio-hacker, always trying weird and new stuff. Today was a new one! I did therapeutic plasma exchange (TPE), also known as plasmapheresis, which supposedly gives you all the benefits of parabiosis without, you know, needing to be a vampire or having a blood boy. So with the awesome folks at Extension Health I had my blood filtered and put back in, which took a few hours. My plasma was not as clear as Bryan Johnson’s, with 41 years of microplastics and mold and who knows what else in there. The process took a few hours, and afterward I got some chicken on rice from a Halal cart on Broadway so maybe it all evens out.

  • Gutenberg Times: Abilities API, Block Accessibility Check, Gutenberg Framework, AI creating Blocks and themes—Weekend Edition 345

    Gutenberg Times: Abilities API, Block Accessibility Check, Gutenberg Framework, AI creating Blocks and themes—Weekend Edition 345

    Hi there,

    A release party is coming up on Tuesday, October 21, at 15:00 UTC for WordPress 6.9 Beta 1. It’s the first time for this release squad. Good luck!

    Will you start testing WordPress 6.9 next week? You can use the Beta Tester plugin by Andy Fragen and install it on your test site. I am using WordPress Studio on my computer for systematic testing and prep work for the Source of Truth post to come out in a few weeks.

    The WordPress Test team already published a few pre-beta calls for testing, you can work through, and they are preparing a comprehensive post for all of WordPress 6.9 testing for next week.

    WordPress 6.9 is a big focus of my work now. As always, I’ll keep you updated.

    Have a fantastic weekend!

    Yours, 💕
    Birgit

    PS: On Monday, October 20th, I will be on the 353rd episode of This week in WordPress show together with Michelle Frechette, Tim Nash, and the brilliant host Nathan Wrigley. You can join us live! 📺

    PPS: This week, I celebrated the five-year anniversary of Gutenberg Nightly. 🎉

    Need a plugin .zip from Gutenberg’s master branch?
    Gutenberg Times provides daily build for testing and review.

    Now also available via WordPress Playground. There is no need for a test site locally or on a server. Have you been using it? Email me with your experience

    Developing Gutenberg and WordPress

    Yesterday, Matt Mullenweg talked briefly at WordCamp Canada, gave a demo, and then answered questions from the the audience. The wizards behind the scenes already posted the recording of the session to YouTube. WordCamp Canada 2025—Ma.tt Mullenweg “Town Hall/AMA”. If you rather read about the talk on Mullenweg’s blog, WordCamp Canada Talk. He also added the Q & A transcript as well.

    🎙 The latest episode is Gutenberg Changelog #122 – Gutenberg 21.8 and WordPress 6.9 with Beth Soderberg of Bethink Studio

    Gutenberg Changelog 122 with Beth Soderberg

    If you are listening via Spotify, please leave a comment. If you listen via other podcast apps, please leave a review. It’ll help with the distribution.

    Plugins, Themes, and Tools for #nocode site builders and owner

    In his video AI Builds WordPress Blocks , Jamie Marsland introduced Automattic Telex and showed off about ten blocks he and other people built with it, like animated text, a countdown counter, and mermaid diagram and more. Check it out; it’s not only amazing, it borders on voodoo or magic.


    Tammie Lister continues her October Challenge on the Blocktober.fun site. The latest blocks are Flip Card, Emoji Voting, Highlighter, Story Generator, Watermark and Make the logo bigger. You not only can try them all out on Telex and remix them with your own ideas. Lister also shares here elaborate prompts you can study and learn how to skill up your AI work.


    Troy Chaplin released Block Accessibility Check v2.2! It introduces Heading structure validation, alt-text pattern detection and provides an upgraded URL checks with real TLD validation + dev environment support”Along with the new release comes a new dedicated website featuring improved docs, feature overviews, and developer API guide”. Chaplin wrote. The site is focused to assist content creators and developers alike.


    Anne Katzeff shared how she created overlapping Columns with the Media & Text Block and little Additional CSS. The step-by-step instructions show you how you can build some dynamic layouts with the core block features.

    Katzeff also posted a video of her process on YouTube. Overlapping Columns With the Media & Text Block.


    Michael Manuel, WordPress VIP, posted a four-part series of short video: Behind the Build: How Christianity Today Modernized its Publishing Experience and how the team of WebDevStudios helped transform editorial workflows, infrastructure, and content operations for one of America’s most trusted media brands.

    • Part 1: Editorial empowerment & workflow efficiency
    • Part 2: Performance & platform modernization
    • Part 3: Homepage & design system overhaul
    • Part 4: Content migration & CMS modernization

    Brad Salomons, 8r4d Consulting, Ltd, created the Panoramic Slider Block to scratch an itch. With this block you can post your Pano photos from your phone camera as it provides horizontal sliding controls.

    Brad Salomons - screenshot of the Panoramic Slider Block in the editor.

    Theme Development for Full Site Editing and Blocks

    On the WordPress Developer Blog, Nick Diego published a Snippet on How to add custom blocks to navigation menus. It shows how to use the blocks.registerBlockType filter to extend the navigation block’s allowedBlocks array.


    Elliott Richmond demonstrated how to create a block theme using Claude Code on YouTube. He built a theme from scratch with Claude Code, providing clear structure and Markdown tips for the AI tool. You’ll discover how to set up a CLAUDE.md file for AI-assisted theme development and how Claude works with the WordPress Block Theme structure.

    “Keeping up with Gutenberg – Index 2025”
    A chronological list of the WordPress Make Blog posts from various teams involved in Gutenberg development: Design, Theme Review Team, Core Editor, Core JS, Core CSS, Test, and Meta team from Jan. 2024 on. Updated by yours truly. The earlier years are also available: 2020 | 2021 | 2022 | 2023 | 2024

    Building Blocks and Tools for the Block editor

    Muhammad Muhsin senior engineer at Fueled gave a talk on Building a Web App with the Gutenberg Framework at WordSesh earlier this year. What is Gutenberg as a Framework? It’s a way to use the block editor in a JavaScript application outside of WordPress. Muhsin “built CareerVision.io using Gutenberg outside WordPress—a standalone React framework for block-based apps”. You can watch the presentation on YouTube now.


    Ryan Welcher was the Pro WordPress Developer Watches AI Build a Custom Block… and is Blown Away! He put Automattic’s Telex to the test, to build a live audio visualizer block inspired by the classic iTunes music visualizer. The AI writes the React code, handles audio input, and even makes the block respond to live microphone sound, all in about 15 minutes. It’s an impressive look at how Telex could reshape the way developers build custom blocks for WordPress.


    JuanMa Garrido, developer advocate at Automattic, livestreamed his ongoing discovery of the Abilities API. He explored how to register custom abilities, expose them to AI models, and understand how this fits into WordPress’ broader AI architecture alongside the MCP Adapter and PHP AI API. The recording is now available on YouTube.


    Questions? Suggestions? Ideas?
    Don’t hesitate to send them via email or
    send me a message on WordPress Slack or Twitter @bph.

    For questions to be answered on the Gutenberg Changelog,
    send them to changelog@gutenbergtimes.com


    Featured Image: Photo by MRFE MRFE on Pexels.com


    Don’t want to miss the next Weekend Edition?

    We hate spam, too, and won’t give your email address to anyone
    except Mailchimp to send out our Weekend Edition

    Thanks for subscribing.

  • Matt: WordCamp Canada

    Howdy and bonjour! First, thank you so much, merci beaucoup, for having me at your WordCamp. I love the spirit of local communities gathering and helping each other learn and grow together. I wasn’t planning to speak; I was just going to attend this WordCamp, but since the organizers have given me a bit of your time, I’ll try to make the best of it.

    I love Canada, I first came here for the Northern Voices conference in 2006 in Vancouver, and have since been back dozens of times, including spending several summers in Montreal at the jazz festival there, and a few times here to Ottawa where I’m on the board of a cybersecurity company called Field Effect.

    Let me give a little update on what I’ve been up to. My life mission is to democratize publishing, commerce, and messaging, so I have some projects in each of those areas. In publishing my main work is in WordPress, the core software available to everyone, hosting it on WP.com, Pressable, allowing others to host it with WP.cloud, and using a Jetpack to bring all the best cloud features to every WordPress wherever it’s running, and of course running the main community hubs at WordPress.org, WordPress.tv, WordCamps, WordPress.net, etc.

    On the social side of publishing I have Tumblr, which is a microblogging social network, but right now it’s on a different technical stack. I need to switch it over to WordPress but it’s a big lift and as a business it’s costing so much more to run than it generates in revenue we’ve had to prioritize other projects to make it sustainable. It’s probably my biggest failure or missed opportunity right now, but still working on it.

    I’m really excited about the personal publishing side of our products Day One and WP.com Studio. Day One is a fully encrypted synchronized blogging and journaling app, that runs on every device and the web, and you can have shared journals with others. It’s the first place I go to draft an idea, or for example, to write this talk. Its editor isn’t as good as Gutenberg yet, but it’s pretty decent at allowing multimodal input and capturing it all. It’s mostly replaced Evernote, Simplenote, even private p2s and such for me. It has some fun features like when you make a new entry it records the location, what music you’re listening to on Apple Music, the steps you’ve taken, the weather, honestly some features it would be nice to get in WordPress. Right now I just copy and paste into WP-admin or the Jetpack app if I want to publish something, but that could be made smoother in the future.

    WP.com Studio builds on an open source project called Playground we created which allows you to spin up WordPress is a WASM container in about 30 seconds inside your browser. You can do so much with it! It’s the most sci-fi thing happening inside of WordPress right now, and we’ve just barely begun to take advantage of the massive technical and architectural shift it allows. For example my colleague Ella built an iOS app called Blocknotes that is a lot like Simplenote, but uses the Gutenberg editor and actually is entirely WordPress Playground, just with a custom admin theme.

    The main distraction and thing holding WordPress back are the legal attacks from WP Engine and Silver Lake. I can’t really comment on that right now, but will say to stay tuned for some major updates soon.

    I’ve been in the public a lot, and blogging every day now for 28 days, will be 29 when we all hit publish together at the end of this.

    Now that this is done we can all push the publish button together. This is called a Daylight Computer, it’s a cool new device from a startup that I’m an investor in through Audrey and Automattic. It’s like a cross between a Kindle and an iPad, works in the daylight, hence the name, doesn’t emit any blue light, is great for kids, you can order on daylightcomputer.com. It runs Android and is super hackable so you can have apps like Beeper, Day One, WordPress, and Jetpack on it.

    Later I’ll update the post with a MP3 recording, enclosed in the RSS in honor of Dave Winer who spoke here and invented podcasting and RSS, and whenever they post the video to WordPress.TV or YouTube I’ll share that too. I’ll also add some links.

    Thank you all, if you want to more please follow my blog at ma.tt, I cross-post to ma.tt and Mastodon, on Tumblr, instagram, and Twitter/X as @photomatt. Now let’s open it up for some questions!