This week on Dev Branch we continue our discuss the Full Site Editor and what it means to web developers using version control.
- WPMerge.io-WP DB Merging, made easy.
- Page Builder Cloud | The de facto Page Saver for Page Builders
- PublishPress provides publishing plugins for WordPress
- Revisionize – WordPress plugin | WordPress.org
- ACF Extended
- Store WooCommerce order data in a custom table for improved performance.
LOFT provides support for WordPress sites — including disaster preparedness, patches, maintenance and plugin management, content updates, and more — all for a flat monthly fee. Right now they’re offering a free trial. Check them out at https://poweredbyloft.com
Are You Looking For Brand Awareness?
You could be a show sponsor. Let people know you’re still in business and supporting your products. Supporting podcasts is a great way to repurpose your in-person conference budget.
We have been sponsored by big brands such as Kinsta and Cloudways. Why not get your audience in front of the thousands of people who download this show every month?
Yes, Dev Branch has thousands of downloads every month. We’re not just a YouTube Show.
Jason Tucker: [00:00:00] This is episode number 11 of dev branch. What full site editing means to version control? Brought to you by ServerPress makers, desktop server. They make local WordPress development, easy. Check them out at serverpress.com and Loft provides support for WordPress sites, including disaster preparedness, patches, maintenance, plug-in management, content updates, and more all that for a flat monthly fee. They’re offering a free trial. Check them out over poweredbyloft.com, Patreon and go over to patreon.com/wpwatercooler. I’m Jason Tucker, you can find me over at Jason Tucker on Twitter,
Jason Tucker: [00:00:53] Nope.
Jason Cosper: [00:00:55] And it’s your boy, Jason Cosper aka Lil A P. I. Here to talk some WordPress today.
Jason Tucker: [00:01:03] Subscribe to us over on Apple podcasts, Google podcasts, and Spotify. If you’re hanging out with us over on our discord, go to WPwatercooler.com / discord, you can come hang out with us and enjoy the rest of the show. Hey
Steve Zehngut: [00:01:25] for music. I like it You put it back on I like
Jason Cosper: [00:01:28] Keep a bed going
Jason Cosper: [00:01:29] the whole show
Jason Tucker: [00:01:30] Yeah Oh man So full site editing you talked about full site editing last week And the I dunno it got me thinking a little bit about full site editing as it relates to to version control Steve’s whole thing was like a lot of this stuff’s content and is version control used for content not necessarily But can it be should it be should that’s where I want to dive in on this a little bit and see are we missing something Is there something that we should be doing different I know for me like there’s plenty of sites where especially the web hosts themselves will tell you you don’t really need revisions turned on and turn off revisions it’s just a bunch of bloat for your site is revisions like the right way to manage essentially version control for WordPress sites
Steve Zehngut: [00:02:20] No th they’re telling you to turn revisions revisions off So you’re not eating up a bunch of database space that’s why right but you I don’t know that turning I again I know you’re just using this metaphorically but you don’t I would never turn revisions off You can limit revisions to say 10 or 20 So you’d have a ton of database space but I wouldn’t I think revisions is I would never turn it off and I have heard peoples I’ve haven’t heard of so I would say that turn your revisions off and delete all your revisions but
Jason Cosper: [00:02:49] there There are managed Yeah There are managed hosts that turn off revisions by default I believe WP engine link started that whole trend back day They’re like revisions who need who needs revisions Now that we’re going to the Full Site Editor y’all need revision
Steve Zehngut: [00:03:05] Yeah
Jason Tucker: [00:03:06] And having diffs for these like the reason why I’m even bringing any of this part of it This is that if I told you Steve you could only have 20 20 updates that you could put out there for for one file on GitHub in your repository you get 20 versions of that and that’s it What the hell are you going to do If you could roll you can’t roll back you can’t do anything So there has to be there has to be a good compromise here and there has to be either a solution that already exists that we’re just not aware of or maybe the WordPress way of doing revisions is the way to go I don’t know Here
Steve Zehngut: [00:03:42] I’m going to refer back to something we talked about last week which is ACF sync that to me is the one that got it Say what you want about ACF I realize about all the the bloat that ACF adds to your database I get all that stuff But we love ACF And I love it specifically for this ACF sync feature because what it’s doing is it’s all your configuration settings in ACF Every if you go in and you make all your changes to your meta fields and things like that If you have ACF sync on those configuration settings get saved out to your basically your WP content folder or wherever you tell it and so your it saves out as JSON and so what we do is we save that to a place where we can commit it to the get repo because if you put that if you have the ACF sync on your destination server and you push all that stuff out it just updates all that stuff for you automatically And I’d like to see something like that for the configuration files inside of full site editing or the just the what do you what do they call that What is it What is the thing called that I never used that where you go and configure the setting What does that section You Configure configurator Yes those customizer Thank you I was like yeah it’s not configuratorcustomize it
Jason Tucker: [00:04:53] When you buy a car
Steve Zehngut: [00:04:54] Customizer is all it’s doing is saving options right it’s saving stuff in your options in your WP options in your database So there’s no reason that can’t be saved out to some sort of JSON file and sync back up on your destination server just like ACF sync is doing
Jason Tucker: [00:05:11] Yeah Yeah even in the customizer you can say if I remember correctly you can schedule changes to happen as well There’s like a section up on the upper left-hand side like right next to where it says customizer where you can I think it’s scheduled to change or save a change or something again I only use it when I have to use it I’m not like in there living in there making changes to it Yeah
Steve Zehngut: [00:05:34] Yeah
Jason Cosper: [00:05:34] So I think the trick is if you do save these changes out to a JS on file especially if you’re on any hosts like hosts run backups once a night If you’re lucky there are some hosts that run it like every two or three nights just because Steve says storage spaces at a premium database space things like that are at a premium what you have to depend on a service what’s the name of the backup thing and jet pack I can’t
Steve Zehngut: [00:06:08] I
Jason Cosper: [00:06:09] right I
Steve Zehngut: [00:06:09] wouldn’t even know
Jason Cosper: [00:06:10] I’m
Steve Zehngut: [00:06:11] Something like backup buddy
Jason Cosper: [00:06:12] But so you’d have to go another step and have a JSON file that effectively vault press Thank Thank you Daniel yeah Having something like where you have the name of the post plus a timestamp and because say you have someone working on the site like I know we were talking in the discord earlier this week Tucker was talking about somebody on that at the church he works at was adding a slideshow for mother’s day to a page on the site And they you don’t when you’re doing work like this you’re not doing like a one and done thing You’re not doing like a so you’re they’re going through like iterations How many times have they saved that file And if they want revisions how many revisions of those saves Do you want to retain So if you’re writing out to a JSON the file that’s only getting backed up once a night at best
Jason Cosper: [00:07:17] Like
Jason Cosper: [00:07:17] how do you solve that
Jason Tucker: [00:07:19] Yeah like Daniel was saying in the chat here is that he was thinking about even coming up with a cloud solution to manage WordPress revisions Like something like that has to ha
Steve Zehngut: [00:07:30] There is something like that And I want to give a shout out to one of our sponsors WP site sync is close to what you’re talking about And WP site sync is awesome So WP site sync not only will it sink what it’s meant for is for sinking content Cause if you’re let’s say you’re you have a a production server and a staging server or production server dev server and there’s critical information on your production server but you’ve made some content to changes on your staging server right In something like WP engine they have a button you can push to copy staging over to production I recommend that you never do that Or production staging is fine but staging over to production means that if something’s changed that’s critical and production and you’ve made your change on stage And you’re now overriding anything that’s happened in between those times when you may when you copy the iteration over to staging WP site sync solves that because you can copy content between two sites on a page by page or a post by post basis But they’ve also extended that to other common technologies like ACF and Woo commerce And I can imagine that what they’ll do is make this work with full site editor because again really all they’re syncing is configuration files That’s ultimately what they’re what they’re copying over between the two sites and Cosper touched on you mentioned a timestamp right That’s how ACF is handling their they’re syncing so those JSON files that get saved out have a Unix timestamp in the bottom of them So if you make a change it updates that Unix timestamp and that’s how ACF knows that this is newer than the one that it currently has So that’s the system that they’re using And I imagine WPSiteSync does something very similar there they’re timestamping all the content
Jason Cosper: [00:09:08] Is there another tool for this They’re not a sponsor but they should be is is WP merge they should definitely be giving Jason some money absolutely but I’ve used WP merge on a few projects where customers have been using it already and I’ve walked into the situation and it does What needs to be done Why basically it it’s clever when you’re running it on two sites So say staging and production the post IDs for say you make a change to a post it adds Like basically your post ID goes from like 600 to like the site where the changes are being made to 1 million or 3 million or whatever 635 So it will like and then a little combine those two like it’ll basically do the merge for you or it’ll help you work the merge out if there’s conflicts it works well it’s pretty clever so I just I got to give a shout out to them Definitely Cause I’ve used them and liked them when I used it as well And also please give Jason money
Steve Zehngut: [00:10:19] but again I think what we’re really talking about here is all these systems all their all they’re syncing is content right And so you when I think of the full site editor changes or design like design choices that you’re making and pieces that you’re building within a full site editor it’s still just content right Because me figuration files are content
Jason Tucker: [00:10:42] Yeah And that’s where like that That separation between front-end back-end stuff stored in the database files that exist on the server that are loading up WordPress and the themes and all those sorts of things There’s that piece in the middle there And we’re not really we’re not checking things in and checking things out We’re not doing any of those merges or any of that sort of stuff It’s not built in It’s like how do you pull this off So it sounds like there’s plenty of different pieces of software to do this Just none of them have won the race no one’s Oh we have to use this one this is the absolute best It sounds like more and more of that Like the stuff that you’re talking about with ACF Seems the way to go it’s the way to build some blocks It’s the way to put all these pieces together what other things can the ACF set up do for
Steve Zehngut: [00:11:31] I was going to mention a whole different one That’s you know that I mentioned last week as well And I briefly mentioned a completely separate tool called Paw right support is a a tool that we use for testing APIs it’s a a way to visualize a URL calls and headers and things that you would not necessarily need to you can’t see in a web browser Sort of background stuff but what pod does we’ve got a subscription to Paw for teams is Paul basically creates a project And so once we shared our project if I’m if I set up some API calls I can save them too The team And then all of my team members can see can share that But what pause is actually doing is it saving it out to a get repo And so that’s how they’re using That’s why I mentioned it What they’re using is a code repository cause it is all just code And so I bring that up because some sort of a combination of a a repository or a tracking system I think is necessary because you need version control to really do this you can’t just all some of these tools we mentioned are great but I don’t know that there’s a way to undo And that’s what that version control gives you is if you did something wrong then you’ve got that rollback process
Jason Cosper: [00:12:45] Yeah I will give WP Engine some respect back in the day there a backup system And this was something that was publicly known I’m not doing any insider baseball and breaking any NDAs here but their backup system was for quite some time get based So you would make a change to the site and they would export the database And also throw that in to get And so your nightly backups were in get and they moved away from that because of the size of user databases things like that It’s just not great to throw that crap into get but I think that something like that is not the worst idea using a GIT backup system having that in place I don’t think that would hurt
Jason Tucker: [00:13:39] just seems like the database is the place to put this in Like the that should be the spot where this is happening
Jason Tucker: [00:14:20] Cause the pull off to pull off something like for instance you have a store and you’re going to be you’re going to be doing a sale and the sales loading I’ll ask for a month or week or whatever And you want to revert back to normal what’s the process for that for someone Is it like literally making a copy of the page then saving that over and then Switching from one page to the next when you’re when you’re done with it what’s the best way to do this We’re getting back into FTP of let me FTP my entire site put in some folder And the later on I’ll upload that back again Like what’s the best way to take a snapshot and then come back to that snapshot later
Steve Zehngut: [00:14:57] Don’t know there’s another plug I think that’s worth mentioning here in all of this that is a same site type of plugin And I think it might be outdated or it was recently adopted by another team which is called Revisionize And it’s a re revision is is a plugin that allows you to take a Post page Actually create a revision of it which makes a new poster page and then you can make those changes and then basically you’re forking the page and then you can merge it back into the original page and you mostly use that for content reviews right So basically making a version of the page that somebody is going to review before you make it live that to me is the one Wow That’s not the one but that’s that to me is a miss on WordPress part is that there’s no That’s not built in the system And I mentioned that because a lot of my clients need the ability to make a change and let somebody else let another department review it before they publish it live So it’s not just a matter of scheduling Or just making the change and a lot of it a lot of times it’s the legal department that needs to do the review So they need to make the change Legal has to go review it to make sure it’s kosher before it goes live and then it gets published live But there’s no sys There’s no built-in way in WordPress to do what I’m describing
Jason Tucker: [00:16:09] Or revert when you screw up
Jason Cosper: [00:16:12] Yeah I also not not only just running it past legal but sometimes like a developer may have a technical blog post that they need to put up and marketing just wants to sprinkle their magic over the top of it make sure that make sure that you’re linking to the new product that they want you to cover I one thing that I think is interesting is Now disclaimer I work for liquid web we I know I about it I don’t talk about it here we have a plugin for WooCommerce that basically shoves orders into their own order table it’s not hard to turn around and one would think and make a revisions table plug in and for the manage hosts that are if this is where we’re moving to shove full site editor stuff into the end of the post table let’s stop shoving stuff into the post table Let’s actually make this is just an I an idea But if we’re going to have it in the database let’s have a revisions table for these changes
Steve Zehngut: [00:17:27] Let’s dig into the why liquid web did that for a moment right Because I’m familiar with it But they did that because the post meta table is not Indexed And that’s ultimately where a lot of this stems from So there’s two problems right Ultimately anything that is content gets shoved in the post table so if you have a lot of like WooCommerce by default if you your store takes off and you have a ton of orders your post table is massive but worse Your post meta table is more massive because each of those orders has 20 to 40 pieces of metadata associated with it And that metadata is not index So by default WP post meta is not indexed So I’m assuming that liquid web did what they did to make orders fast That’s simply fast separate them out from posts index them And so it becomes fast Okay And so I think what the reason I’m explaining all that is we had a similar conversation about comments a few episodes back Or excuse me we’re order notes and comments Everything There’s a lot of stuff that gets shoved into the comments table I wholeheartedly agree three And what a mirror – everything you’re saying If WordPress was going to get any sort of speed overhaul or just – optimization it would be to optimize the database So that Stuff gets put in their own buckets inside of the database Woo Commerce should have its own buckets any sort of post types should have its own buckets stop putting stuff in just in post meta and comments
Jason Tucker: [00:18:57] when I this is when I found out that every order is a post This is what this is when I found out every order was a post and WooCommerce I don’t use WooCommerce I have no idea but I was just like Oh wow that’s
Jason Cosper: [00:19:08] And here’s where it gets fun with this Let’s loop it back to what Steve was talking about Initially with ACF ACF adds a ton of data to post meta I like ACF I think it’s a very useful tool but it adds a ton of data If we could be shoving that data somewhere else to keep things fast Why don’t you why don’t we do it
Steve Zehngut: [00:19:33] And just and there’s the explain that what ACF does is for every piece of metadata it’s saves it saves to two meta – to T two rows So the two rows and then post meta table for every single save that you do in ACF So every field has not just the field That you the data that you say but it’s got a reference field which is how – ACF does its own indexing And so when you’re using ACF you’ve doubled your amount of metadata for anything that you’re saving
Jason Cosper: [00:20:01] So you use
Steve Zehngut: [00:20:02] with
Jason Cosper: [00:20:03] is
Jason Cosper: [00:20:04] you use ACF to build those blocks because it’s an easy thing to do but you’re setting yourself up because if you have a successful site somewhere down the line you’re going to run in to these indexing problems with posts meta with that sort of stuff
Steve Zehngut: [00:20:21] W what I found where I found a lot of people got added we’re on a fondest tangent here And I found it A lot of got themselves into trouble is there’s a lot of people recently they’ve converted their Shopify store over to WooCommerce And so there are ways where you can just import all of your orders and all of your products from Shopify into WooCommerce Right there are cart to cart is the is the system that does it So you pay cart to cart and they’ll take one system and convert it to another system and it’s not always one-to-one but what they’re doing is basically so if you’ve got a Shopify store that’s popular and let’s say you’ve got a hundred thousand orders in it there you’re going to start your WooCommerce store with a hundred thousand orders plus all that metadata you’re slow on day one Once you do that you are slow on day one And so you’re going to be you’re going to be trying to figure out how to speed up your site all the time when you bring in that much stuff And if you have posts on top of that So let’s say in addition to that you’re also running a blog or just like some news on your site All of that stuff is competing for database resources
Jason Tucker: [00:21:21] Yeah you your customers want to be able to go back in and pull up their past orders Your customers want to be able to find out when that order is going to be shipped I think there’s all that I get it
Jason Cosper: [00:21:34] thatto bring it back to the full site editor like people are going to want to look at how the pages changed over time Not everybody is going to want to do that but there are going to be people who want to like Oh can we go back to this old like after we’ve run this promotion can back to this old design
Steve Zehngut: [00:21:53] Here’s My real concern is let’s say one of these people that has converted over to Shopify or they already have a WooCommerce store That’s got hundreds of thousands of orders sitting in their database and now they add full site editor on top of it And full site editor is competing for the same – resources because it’s using the same tables It’s going to be slow It’s going to be slow to the point If you haven’t done the proper optimization it’s gonna be slow to the point where it’s unusable I’ve seen it I’ve seen it with other page builders
Jason Tucker: [00:22:24] So what’s the solution What should we be talking about
Steve Zehngut: [00:22:26] The these are not easy problems these are big fixes that just get to the the core of what’s wrong with the WordPress database You’re not going to solve it You’re not gonna solve these overnight I’ve got suggestions I don’t
Jason Cosper: [00:22:36] For the longest time the WordPress way was to shove everything Into the standard tables posts and post meta comment and comment meta all of that it’s interesting because that is how people were doing things to the point where I believe EDD started off and they were doing stuff in their own table Then they went ahead and tried to do things the WordPress way went and pulled everything into posts and post meta Then they were like Hey you know what This sucks So now let’s go ahead and pull everything back into our own tables And they’re working on unscrewing this thing that they did all those years ago trying to make things more the WordPress way when the WordPress way it it seems good on paper but once you actually start to get into to implementations and server level stuff it you’ve just made yourself a huge problem
Steve Zehngut: [00:23:49] I got to tell you Jason I know we’re I know we’re running short on time here but the same thing exists in the user meta table So if you’ve turned on buddy press and your site is taken off The same exact problem exists So user meta is not index just like post meta is not index and the reason it’s not index is because that one field that stores all the data is as much as you want to throw in there So it’s not a it’s not a Varchar It’s just a it’s just a what do they call it A blob or a long text or a just a it’s just an it’s just an an empty void throw whatever you want in there And they don’t and they don’t index it So th those two tables post meta and user meta the meta value field is what I’m talking about Not that’s the real problem
Jason Tucker: [00:24:32] Apparently we have some things we need to solve and we’re obviously not going solve the world’s problems here but
Steve Zehngut: [00:24:38] I love Dev Dev branch It should just be sub titled vent about what we don’t like about WordPress
Jason Tucker: [00:24:47] But then what are we going to do on water cooler
Steve Zehngut: [00:24:49] Oh wait Oh yeah
Jason Tucker: [00:24:55] It was a fork So there you go Oh boy
Steve Zehngut: [00:24:59] Casper I deal with this a lot but Cosper deals with these things all day long like this is these are always open wounds for Cosper
Jason Cosper: [00:25:09] Yeah absolutely it’s a scab that keeps picked and there is a slow trickle of salt over scab and it just going into the wound.
Jason Tucker: [00:25:21] Oh man Oh boy Hey guys thanks a lot for talking about this with me I appreciate it I know what we didn’t come up with a good way of doing this but Hey we’ll get there at some point or Steve always says there’ll be something else that we’ll end using 10 years from now
Steve Zehngut: [00:25:36] I was going to say that’s how we stay on the air It’s just it’s a cliffhanger At the end of every episode we don’t solve anything Just come back maybe we’ll suggest something next week
Jason Tucker: [00:25:44] Thing I want to think about real quick before we close out is Steve says in 10 years we’re going to switch to something else but we’ve been doing this for 8
Steve Zehngut: [00:25:50] yearsDidn’t I say that I said that about 10 years ago So if it doesn’t have it in two years then you know I’ve been before. I’ve been wrong before. I’ll be wrong again. Yeah.
Jason Tucker: [00:25:58] Hey, thank you guys. Talk to you all later. Here’s our outro. Go over to wpwatercooler.com/subscribe, where you can subscribe to either a WPwater cooler or dev branch, the show you just watched right now. You can subscribe to us as an audio podcast, as well as video on YouTube. And we stream this all over the place. So feel free to go find us wherever it is that you consume. Cool content like ours. Talk to you later. Bye-bye.