 All right, welcome folks. I would like to start the session by just mentioning that I discovered about two minutes ago. And I kind of discovered this last week by accident, but I'm discovering it on purpose this week that something has changed with either Zoom screen sharing settings or the way things get shared, I'm not sure. But it seems that I can only share a window at a time and not my entire desktop. So that means you may have to bear with me as I switch between windows possibly later on. So if anybody knows about any changes around how Zoom does screen sharing, please let me know. We recently, so when I say we myself and the other members of my team at Automatic, we recently switched to a new Zoom account, not the original Learn WordPress account, we switched to a new one. And the reason we switched to that was so that members of the community could use the Learn at WordPress.org associated account and there wouldn't be any conflicts. And this is the reason that those of you who were with me last week might remember that I had to enable the saving of captions which wasn't enabled. So this might be related to that or it might be a Zoom update. I haven't figured out which yet and I don't have time to figure it out now. So I apologize if things get a bit wonky later on. But yes, at least I'm aware of it now. So if I do try and share something differently to my browser window, we will be able to figure it out. But welcome to everybody who's joining. While you're joining, please do let us know in the chat where you're joining us from and maybe something interesting about where you're from or your town or your city or something that's happening in your life from my side. I am in the sort of start end of winter in Cape Town which means you will see me wearing sweaters more and warm tops more because my office tends to get quite cold. It's right at the back of the house, the house office that I rent. So it can get quite chilly. So that's my little bit of news. I'll just introduce myself quickly. For those who don't know me, my name is Jonathan. As I mentioned, I live in Cape Town in South Africa. I am a developer educator at Automatic and I'm sponsored to work with the training team and we create these workshops and tutorials and lesson plans and all kinds of other content with contributors like Mark Andrew, who is my co-host today for learn.wordpress.org. Mark Andrew is in Tijuana, Mexico. Adrian is still in Anaheim, California. It's spring here. Oh, wow, that's amazing. I love how weird. I was having a conversation with my son the other day, my seven-year-old about how does that work? How does the weather thing work when you're on different parts of the country and how does the day-night thing work? And when you're, what happens when you're in the spot where the sun is crossing over? Is there like a line on the one side of the line? It's dark and the other side it's light and similar questions. So that was a fun conversation. Chuck is from San Antonio. The only thing Chuck that I know about San Antonio is that's where Shawn Michaels comes from with the Heartbreak Kit. Yes, I was a wrestling fan growing up as a kid. Sabah is from almost, good evening, almost from Belgium. Jerry's from Chandler, Arizona. Mark from Nahomish is joining us again. Spearminting with WordPress and WSL too. Well done. You have my extreme, not sympathy, admiration. WSL is a fun thing, but it's a lot better now than when I first tried it out. So you probably find it's not gonna give you too many, too many issues. I use something similar to WSL, but on my Mac, I use something called MultiPress, which also gives you like an Ubuntu virtualized environment. Jerry says, Kevin Nash is from Scottsdale, Arizona. Okay, that I didn't know. Lili is from Nashville. Adrian says, I love how seven-year-olds think. I do sometimes, and then sometimes I don't. Okay. So today we are going to be doing some experiments with MultiSight. Emily is from Chicago. Hey, Emily. Emily's probably just popped in here to remind me that I have a theme to develop it. Emily and I were supposed to be working on it. I haven't started yet. So today we're gonna be working with MultiPress a little bit. This is an extension of last week's session on setting up a MultiSight WordPress, MultiPress site. I'm getting my names mixed up. Good afternoon, Elena from Italy. So if you've never set up a MultiSight before, today might be a little bit confusing to you. I do recommend if you've never set up MultiSight before and you're either watching this workshop now or you're watching it live later on to go through the workshop that we covered last week on setting it up. Today, I'm gonna be starting with a clean MultiSight install. So I'm not gonna be setting up from scratch. I'm gonna be working with one that's already set up. And we're going to be doing some experiments with it. Your announcements to get out of the way. First of all, again, thank you to Mark Anger for codes. Yeah, let me try that again. Thank you to Mark Andrew for co-hosting with me today. And welcome to everybody who's joining us. Please let me know if you can't see this slide or anything else that I'm presenting on screen. As I mentioned before we started, I picked up that there's either a zoom change or a change in the account that's only allowing me to share specific windows and not my whole desktop. It may or may not be a Mac thing. I'm gonna have to dive into that but I'm not gonna do that now. So if ever I'm talking about something on screen and you can't see it, please do let me know either in the chat or just switch your mic on and give me a shot. We are presenting in focus mode. So that means Mark and I can see all of your video but you can't see each other. And this is to prevent any kind of zoom bombing that sometimes does still happen. But if you would like to enable your video so that we can see you, you are more than welcome to. Hey, Adrienne, can see you now. As always welcome to ask questions at any point in time. You're welcome to post them in the chat. You're welcome to unmute and use your mic and ask questions that way. Right, then second set of announcements. I'm gonna say this one first. If I'm going too fast, which for some reason I seem to be doing today already. So if I'm rambling off and I'm rushing off like I tend to do, I think it's a combination of the nervousness around the Zoom sharing that I mentioned earlier and the fact that I just got back from watching a hockey match. So I'm a little bit excited. So please do, if I'm rushing off and I'm going off on a tangent and I'm not going slow enough, please do slow me down, let me know. If you want to work along with me today, make sure you've got your local multi-site install ready. Some of the things, so a note on domain names. One of the experiments that we're going to be doing today requires whatever your local development environment is that you're using to support custom domain names. And I'll show you how I've mindset up in a second, but you'll need to have, maybe it's a local dot test domain or a dot example or dot, that used to be dot local back in the day. And so you'll need to be able to have another domain name set up and pointing to your multi-site. Depending on your local environment, that may or may not be possible. And it's not something I can necessarily help you with if you're using a local environment that is not my own. One of the reasons I created my own local development environment is to be able to have custom domains that I control in a way that I'm comfortable and used to. So I'm very well-versed on my sort of cobble together local development environment, but not on all the others. So when we do the setting up of a custom top level domain to a multi-site, you might need to either watch what I'm doing and then try to solve later with however your local development environment works or uses it or work on a live environment, but that is going to mean setting up a domain and all those kinds of things. So I just wanted to mention that upfront. And then as always, we will be posting the session to WordPress TV afterwards. So if you want to catch this up later, you're more than welcome to. And as always, there's always new and interesting content on Learn WordPress. One of the things that I'm doing going forward and Mark's probably noticed this, he does a lot of reviewing of my content is I turn my workshops into tutorials. So you can watch the recording of the workshop on WordPress TV, the sort of the live version of how it all works and goes down, but then you can also watch a much shorter, more condensed version of the same content as a tutorial on Learn WordPress. So if you're somebody who prefers to watch and or read a much shorter condensed version, keep an eye on Learn WordPress for a month or so and it'll usually come out there. All right, I'm going to take a sip of water to force myself to slow down and then let's dive into the experiments for today. So the first experiment is one that I think Linda asked last week about pointing a top level domain to a multi-site sub-site. It is one that I completely went blank on last week when this question was asked. And then as soon as the workshop was over, I remembered how it all worked and the fact that I have done it before. So in the workshop last week, I said, I think it should be possible. My answer should be yes, it is possible and yes, how? Anyway, we'll do that today. Then M had some questions about taking a sub-site out of the network and converting a multi-site back to a single site. So we're going to have a look at how that could work. Then there was a question around creating a multi-site but turning the first site that's available into a sub-site. And that's going to be our shortest experiment and you'll see why we get there. And then experiment number six, I would like to show you how you can enable user and site registrations and how that works. So if you're thinking about setting up a multi-site for a community or some kind of organization where you want the users to be able to register their own sites, I'll show you how easy that is to enable and then what that flow looks like. So that's what we're going to try and cover today. There are a couple of other things that I would like to try and cover today in the time that we have, but we'll see how that goes. Okay, great. The last thing I want to mention before we get going is I've been calling these sessions let's code sessions and the majority of the time we do code or at least I code and you either code along or watch one of the two. But we sometimes don't code. We sometimes do things like multi-site where we do a little bit of code and the rest is in WordPress or we do an AMA session or we do something else. So I would like to put this out there that if anybody has any interesting names that they would like to call these sessions, I am terrible at coming up with names of things. I would like to try and incorporate the fact that I always have them on a Thursday into the name. And I really like alliterations. So something that starts with either a T or a TH. I don't think we can use Thursday, Thursdays because that means something completely different but something along those lines. So if you can think about something that has to do with you don't have to think about it now maybe in the next week, maybe let me know by next week. If we can think of a word that goes with Thursday either before or after Thursday or in a sentence for Thursday that kind of means we're busy hacking on WordPress. I don't know, let's think of something it doesn't have to be Thursday because it also starts making things really long if we make it like a long word. And then Thursday, I don't know but see what we can thought provoking Thursday. Like that's a great idea but then imagine if I have thought provoking Thursdays and then WordPress multi-site experiments the title gets longer and longer. So maybe we could, maybe we call it TT or something and then we all know what it means and we use it from there. Anyway, think about it. Emily says Thursday thrash, I like that one. As a thrash middle hit myself, I like that one. So think about it, put some ideas out there. I'll copy some of these thoughts from the chat in the GitHub issue. Maybe we can have a vote on it in a week or something but yeah, send me ideas as you get them today or in the course of the week, something Thursday, I like that. Okay, so let's start by going to so I've got my issues over here. I'm gonna share this link with you all. This is the GitHub issue for today's workshop. It has all the experiments in there. It also has all my notes. So you're welcome to run ahead and look at the notes if you would like to to see what I'm preparing to present. I don't mind sharing that information. And then this is my multi-site. So I have just set up the multi-site. I haven't created any sites on the multi-site yet. So it just is the bare bones multi-site install ready to start adding sites and start doing things with it. And we did cover this last week, but it's a good idea to mention that you will notice that when you are a multi-site admin or what's known as a super admin. So in other words, you are the administrator user that created the multi-site. You have now two dashboards that you can sort of access. The first one is the network admin of the multi-site, which is this dashboard we're looking at now. And the menu items are slightly different. You can manage sites, you can manage users, you can do some things with themes and plugins and you've got some settings. And then you also have your main site dashboard. So if you click on my sites and you go down to there with multi-press is what I've named it in the dropdown there. I can then go to the dashboard for the multi-press site and then I can manage the content in the multi-press site. So it maintains that site as what we mentioned the main site earlier and then you add your subsites to it. Now I'm going to jump ahead a little bit and go to experiment four, which was an experiment that Em asked about whether you could create the multi-site but turn the first site into a subsite. And the short answer to that question is by default, no. And I'll show you what I'm talking about, what I actually tried doing last week. So this is the multi-site code that I have set up. I actually tried changing, I'm going to scroll down here to the multi-site settings. I tried changing the site ID, blog ID and current site values just to a different site and it doesn't work like that. So your main site is always your main site on a multi-press, multi-site install. I'm going to say multi-press wrong many times today. I apologize in advance. So making those changes doesn't make a change to where things work. Your main site is always your main site. That's the way it's set up and then your additional sites are always subsites and their ID is usually incremented in that blog's table. So the answer to that question number four, the experiment number four is an automatic no so we can scratch that one off and move on. So I'm going to, sorry, that was pressing the wrong buttons. How does my computer work? There we go. Oh dear. Okay, so I'm going to strike this one through if I can find my strike three option which I think is some way, I don't know why Google's slides or whatever have moved it right into this format. There we go. Okay, so that one is a no, we can't do that. Okay, then let's go back to experiment one, pointing a top level domain to a multi-site subset. So what I have set up is I have multi-press.test as my main domain. It's the main site as well. It's the site that I converted into a multi-site. Then I've also registered a domain called Bobpress.test. Now I wanted to show you how this is configured in the virtual environment but it means I have to change screen sharing and thing. So I'm not going to do that right now but essentially what I've done is in my hosts file, I have a line in my host file on my Mac saying point Bobpress.test to the same IP address as my virtual environment. And then I have that set up in my local environments as a virtual host, it's an Apache virtual host and it points to the same install as the multi-press site. So if I hit that Bobpress in the browser and I hit enter on that now you'll see it redirects to multi-press. And that is essentially how a domain name system would when you register a domain and point it to your existing IP address, you create an A-record and you point it to your existing multi-site install IP address that's what will then happen. So I'm effectively setting that whole structure up. So now what I can do is I can create a new site in my multi-site install. So I go to the my sites option in the top toolbar. I go to network admin and I click on sites. And over here I can click add new to create a new site. And because I'm running my multi-site install as a sub-directory setup, the site's address will always be a sub-directory of my top level domain, multi-press.test. So I'm just gonna create Bob and I'm gonna say Bob's press, maybe we'll make a Bob press. So it matches the domain, I'll leave English as it is and then I'll create the Bob user. Actually we'll go Bobpress.test. And what this will do is this will add the site tables to the database. It'll add the relevant records to the relevant tables that are already in the database about the site with the site ID and those kinds of things. Register the Bob user because it doesn't currently exist in my user list and therefore set up the site. So when I do that, the site has now been created. I can visit the site dashboard from this link. So let's do that. That takes me directly to, and you'll see my URL is now multi-press.test.bob, WP admin. So it takes me right to my Bob site. And now we can test to make sure that this site is different from multi-press. So if I visit this site, you will see there, Bob is using the defaults 2022 theme, I think it is with the default mind blown, a blog about philosophy header and default Hello World content, but multi-press is still using my first post that I created with some water effect image that I put on there. So that's how I know it's two different sites and I'm happy that it's two different sites. Now, if I want to point my custom domain to the site, all I have to do is edit the site as the network admin. So as the main super admin of the network. So if I go to my site's menu item and I hover over network admin and I go to my sites, you'll see that I have a few options. If I hover over my site here, I can edit the site, I can go to the site dashboard, which is the WordPress specific dashboard for that site, deactivate archive, delete the site or visit the site. So those are the options that I have. When I click on edit, it takes me to the screen. Now, those of you who were in my workshop last week will remember that I think it was Jeff, I think it was his name, he sent some screenshots of the screen. So here you'll see that the site address, when we registered the site, I could only add the Bob part of the site address, but now I can update it and make it any URL I want. So here I can put in the BobPress URL, BobPress.test and that's all I have to do. So it's two steps. One, make sure I've got the domain registered and pointing to the multi-site install. And once that's working, change the site address in the backend. Once I save these changes, my multi-press site still works. So I can still go to my network Ashmann, network Ashmann. The closed captioning struggles with my talking. I can go to the network admin dashboard or I can go to the multi-press dashboard, for example, I can go there or I can go to my sites and I can go to BobPress and there's picked it up as BobPress.test already. And if I try and visit this site, I'm gonna open this in a new tab, you'll see that it's now BobPress.test. It's not redirecting to multi-press forward slash Bob, it picks up that this is now the site URL and it renders it accordingly. One thing you will notice is that if I go to multi-press.test slash Bob, it's that still works, but there's nothing here because Bob is no longer a registered site of the multi-site environment. Now it's looking for Bob as content. So that old site URL stops working the minute I update the URL in the site address. So it's worked well noting that. So now to look for a page or a post or whatever called Bob, it doesn't find it. The other interesting thing to notice and I kind of, it's been a while since I've worked with multi-site install. So this is something that I also forgotten and kind of stumbled across. If I am going to quickly go into the network admin into the users, and I'm just going to edit the Bob user so that the password is easy for me to remember because it will have generated a new password, a secure one. So let's just set this to the word password. So it's easy for me to remember. And I, yes, I do want it to be a weak password. That's fine. I'm going to update that user. And if I now log out, I'm going to show you guys this. If I log out of as the admin user, so now I am logged out as the admin user and I log in and notice in the URL, it's multi-press.test. If I log in as the Bob user and the password was password and I log in there, you'll see it redirects me to Bobpress.test. So it picks up that I'm trying to log into a site that I don't have access to, but it knows that I should have access to Bobpress. So now it redirects me to that and says, right, log in here, please. And then I can go Bob and log in as Bob there. So I just thought that was an interesting little thing to notice. Now I'm in my Bobpress site only. My Bobpress site only has access to Bobpress. It doesn't have access to any other sites because I haven't given it access. It cannot access the main multi-site, it can only access the Bob site. Okay. Going to take a break there and look for questions. While we're doing that, and I noticed that you joined us recently, you missed the experiment that I covered when I first started, which was creating a multi-site but keeping the first site as a sub-site. And the short answer to that was no, not by default, but we'll chat about other options when we get there later. Shelly had a question, what happens if I have 10 sites on a multi-press site and the owner of Bobpress wants to move these sites to a new host? Shelly, that's a great question and we will be covering that in our second experiment. So bear with me on that one. We'll get to how that works in a sec. Okay. Cool. So just to refresh that, as long as the domain is registered with your domain registrar, is pointing to your IP address of your multi-site install, you just need to go into, let me log out as, sorry, let me stay as Bob. Let's just show you guys one thing very quickly. If I go to, yeah, that's not gonna work because I don't have access to that. Let me just go back one step here. Bobpress.test. You'll notice that as the Bobpress user, I don't have a way to now change that URL. I don't have anything in the settings that allows me to affect the fact that I've just changed that URL. Only the admin can make that change. So only the admin user can log in, sorry, my keyboard's not working now, log in, access that site level settings. Why is it giving me that error? Come on, I'm logged in as admin, I should have access to that page because I'm still logged in as Bobpress, that's why. See how interesting that was? I was still logging into the Bobpress URL. So the cookie was created for the admin user, but for in the Bobpress site, which means he doesn't have access to the top level stuff. So I have to actually log out, specifically log out of Bobpress, and then I can log into multi-press. So it's just because I'm doing things as one user and as another user, and I shouldn't really be doing that. You wouldn't necessarily, as the admin user be logging into different sites. I'm gonna close all these windows down and create a new one. It can get kind of confusing if you're not careful. Okay, so let's log out of here again as Bob, so that it clears that cookie. Great, I wanna go to multi-press, yes. And we want to log in as the multi-press user. There we go, and now we're logging into multi-press and the zoom thing keeps getting in my way, so let's move that out the way. And there we go, now I'm logged in where I need to go, and then we get back to my sites, and there we go. So as I say, only the admin user has access to change the site's address to either a top level domain or back to the sub domain or whatever the case may be. So the reason I mentioned that, and I'm not trying to sort of promote WordPress.com at all, it's just one of the few multi-site installs that I'm aware of that does this. But if you've ever registered a WordPress.com site, it's registering WordPress.com is essentially when you create a free one, a big multi-site install. It asks you during the process whether you want to register a domain, and if you do then it assigns your domain to the site. So that's all stuff that happens sort of probably via API calls or whatever, but you as the user can't go into your settings and necessarily make those changes, and that's because of how that only the network admin can do that. Okay, while we're here very quickly, I want to show you a few other things on the network admin settings page. You can manage users specific to the Bob Press site, so you can add existing users. So maybe you've got a user registered on another site in the network and you want them to also be available on Bob site. You can add them here or you can add brand new users specifically to the Bob Press site. You can also do something where you can specifically activate themes only for the Bob Press site. So you can in the themes menu option of the network admin, you can what's known as network enable and network disable themes and that'll enable them or disable them for the whole network. But let's say you wanted a specific theme only available on a specific site. You don't want a network activated. Well, then you can go into the site area and edit it. And then in here you can say specifically this theme should only be activated on the site. And this is very handy if you're building some kind of organizational structure or community-based structure where you want to use say a parent theme and then a different child theme of the parent theme on individual sites. You can then upload the theme to the multi-site install and then only activate the child theme that you want on a per-site basis. And then lastly, there is this final settings tab which is essentially just a bunch of fields to update settings that are stored in the database. I don't recommend messing with these too much unless you know what you're doing and that's a whole nother session which we don't necessarily have time for today, but that is a page that's there that you can make changes on. Okay, any questions around the whole setting of the top level, the main side of things before we move on to Shidi's question and Im's question about taking a sub-site out of a multi-site install. So while folks are sort of either thinking of questions or whatever the case may be, I'm going to create a brand new site now. I'm going to create a site for Joe. And we'll just say Joe at JoePress.test and we'll just add that site. So this is now a sub-site of the multi-site network. It's going to have some posts and pages by default. So to make sure that this site looks a little bit different to the other sites, I'm going to activate the 2021 theme on this site as well. Actually, let's go back one step. Let me go back to my network admin and let me go to my themes and I'm going to network enable 2021, 2022 and 2023. And then I think I've got, if let's have a look at my multi-press, my main site, I've got 2021 active. That's perfect. On my Bob's site, no, I don't want to edit it. I want to go to the dashboard. It's going to ask me to log in again because I logged out already. On this site, I have 2023 installed. So on Joe's site, let's activate 2022. So let us log out and then let's log in to multi-press.test.jo because I've missed out a slash. Here we go. So there's Joe's site. Let's go to the dashboard of Joe's site and let's activate 2022. I think you want to activate. Yeah, that's the one there. So this is just so that we can see things are different. It helps to visually understand that things are different. So if I visit Joe's site, Joe's site is there perfect, ready to rock and roll. Okay. What I'm now also going to do and unfortunately you might not see this but in my terminal that I'm going to open here, I'm just going to run one command which will set up a a local site for me called JoePress. And if I now browse to JoePress, I should see an error which means that the site is ready but it doesn't have any content. So what I'm going to do now is I'm going to very quickly just switch back to my command line and I'm going to install the WordPress core files. I'm using WPCLI to do this. You probably can't see this right now. So I apologize. It's going to take too long to switch between sharing screen sharing but if I now go to JoePress.test, it's going to give me the WordPress install set up. Okay. So what I'm going to do now is I'm just going to run through this installation so that we get JoePress set up for ourselves. The database happens to be JoePress. We'll make it an admin and actually let's make it Joe so that we keep those things the same. We'll make it password. This can all stay as it is. Erick and I can do a database connection. JoePress username. Oh, because I'm using the wrong database password. Okay, no. Oh, I do this multiple times a day. You would think I would know how to do this now in front of folks. So let's run that installation. Now we need to give it a site so we'll make it JoePress. We'll create the Joe user on this site. And JoePress.test. Okay. So that site is now, I can't provide you those command lines because they're not ones that are available sort of publicly. It's for my specific environment. So you need to know what was happening on my environment to do so. If you want to see how that works, I don't mind sharing the actual code. It's in a GitHub repository. It's called WP local ENV. And only if you have that installed as your local development environment with the commands that I run be relevant to you. So you're welcome to try it out. I'd love folks to try it out, but it's my sort of cobble together local different environment that I use. Okay. So, and if you're interested, the commands that I ran were, I'll find it down here quickly. Where is it? There we go. It's just the site setup. So I run pseudo site setup and then the name of the site and it generates it all for me. But it's not something that we've been beneficial to anybody outside of using this environment. Okay. Sorry, I need to move screens because again, the zoom things are always in my way. All right. So now I've got the separate site setup. So this is as an example of, I want to move it from a multiple site into this install. There are a couple of ways that you can do this. The one way that I think would be the easiest is to use the built-in WordPress export and import tool. So the first thing that I would recommend doing is inside of the site that you want to export out. And I've made some notes in the GitHub issue. So we'll run down to those quickly. So I've said you use the WordPress tool to export your post pages and comments, create the new site and then use the importer to import the data. So let's do that now. So inside of Joe's site, if I go to my dashboard, in the tools menu option, there is an export option. And this will export your WordPress content into what's known as a WML file, I think it is. It's a WordPress XML file. So it's specific to the WordPress importer. It's one of the earliest things that I think was developed for WordPress to allow folks to migrate from other platforms to WordPress. And you can select up to export either all your content, which will be your post pages, comments, custom fields, terms, navigation menus and custom posts. Or you can just go post pages or media. I'm gonna just download the whole thing because my site is very small. It's not gonna have lots of content. So if I save that data there, it's gonna export that file. Then in the new site, I can just use the importer. So if I go to tools and import, it will then give me different various options that I can import from and you'll see we can import from things like blogger, live journal, movable type, CMSs that have been around for a while, Tumblr. And then there's the WordPress option at the bottom. Yes, I can say install now. And this takes a while to install that plugin. And then I can say run the importer. Then I can say choose the file to install. I can go and found that XML file. And then I can say open that file and it will then upload and import all that data. It'll then ask me, which user do I want to assign the data to? And this is one of the reasons why I recommend using an exporter or importer process because the user ID in the multi-site might be five or six or 15 or whatever. And on the new site, it might be ID one in this case. So the mapping of the data needs to be corrected. And if you just copied the data from the tables into the new tables, you'd have to do the mapping yourself. So that's why I recommend this process. So here we can select the joe user. We can also select to download and import the file attachments. I don't recommend doing this because there's an easier way which I'll show you in a second. And then we can hit submit. Then it imports all the data. And if we now go to our posts, we will see there's now two hello worlds. We will see that 2023 is active. We can just switch to 2022. But at least the data that has been imported has been imported from that site, comments, all those kinds of things. So that's one way you can do it. And then you can clean up your themes, clean up your plugins and then your new site is ready to rock and roll. The other options that you have are to use specific WordPress plugins that have multi-site extensions. There are a couple out there. I think I did link to some of them. Yes, here we go. So there's these two that I'm aware of. There is all in one WP migrations multi-site extension and the multi-site tools for WP migrate used to be called WP MigrateDB Pro. There are a number of backup solutions out there. I don't specifically want to link to any of them in the chat because then it seems like I am recommending those options. I don't have any recommendations. Those are just two options. The benefit of going in those routes is this caveat. If you have any custom data and or tables, specifically tables with custom data. So what am I talking about there? Let's say you've installed, I think WooCommerce is an example. Maybe not WooCommerce. I can't remember. It's been a while since I've installed WooCommerce, but I think WooCommerce installs some orders tables and some shipping perhaps tables. Or if you're installing, I think Yoast installs some custom tables. Some of the security plugins, they install some custom tables. That data is not going to be migrated over when you use the WordPress export import option. So then I would suggest looking at one of these multi-site add-ons. It does come with a cost unfortunately because of the complexity of mapping all the data. But if you're working with a very simple site, that's just regular WordPress post pages and content, then the XML export and import should work perfectly. And then it's a case of migrating your media. Now this I might have to change the sharing so that you can see this, but I want to show you this quickly in my finder. So please be with me while I make sure that you can see, can you see my, can anybody see the file browser on my screen right now? If you can't, let me know. And then I will change the screen sharing options. Can't see it, great. Let me share that then. Let me figure out how this works. I'm gonna have to work on why this isn't working later. So let's go new share. Let me see if I can add finder. I think it might just switch to finder. So can you see my finder browser now? Browsing the multi-press. Okay, can see that great. Thank you for the thumbs up Adrian. So to migrate your content, let me show you. So this is the Joe press site that I've created whereas there's Joe press inside of the WP content folder inside of the uploads directory. There is 2023, 2024, the standard way that WordPress creates its media. So it's always by year and then by month and then the content is in that month. There's nothing there now because we haven't created anything yet. But when you're migrating from a multi-site environment and I did mention this last week but it's good to cover it again, if you go into the WP content and into the uploads directory, you'll see there is the top level content belongs to the main site. In this case, multi-press. Then there is a folder called sites or a directory called sites. And then there are directories with the ID of the subsites. So in this case, I think Bob presses ID two, for example. Joe press, we didn't create any content for us. It doesn't have any media. So then you need to go into the ID of that site, open it up and copy the content out. Now the question might be capable, how do I know which site is which? So let me switch my share back to my browser. And that is where you're going to need to use a little bit of database access. So you're gonna need to have some way of accessing the database of your site, either PHP My Admin, if it's a hosted site or whatever tool you'll host users or things like table plus, SQL ACE, I think is one. There's a few out there. I use PHP My Admin in the browser because it's just easier enough to install anything. And you go into your multi-press site and you go and have a look at the blogs table. So let me find the blogs table. Now I can find it. Now there it is, blogs, WP blogs. And you'll see there Bob press, the blog ID is five, for example. So two is a site that I was installing the other day and I've since deleted it, but the media is still there. So Joe, here's Joe's site, Joe would be six. So if we had uploaded images in media for Joe, it would be under site six and then you would copy all the data out and do it that way. The reason I recommend that is because the WordPress importer sometimes struggles to connect to the site because it actually has to connect to the site and pull that data down. And if there's any kind of security in place or caching in place, sometimes it struggles to pull that data over and it can take a while. So my recommendation is use the importer for the data and then manually using FTP or whatever those cases is log into the multi-press site, find the site ID that you need, download that media and then upload it to the new site. And then the last step you need to do is, and I haven't listed it here, I've got it under test. You need to replace any instances of, let me go back to here, multi-press test slash Joe with your new URL. So let me show you what I'm talking about. If I go to the database for the Joe press site and I open up the options table, you'll see the site URL there is htbs slash Joe press dot test. When WordPress adds images, media, any kind of content to posts and pages, it adds it with the full URL of the original file so that it can always find it. When you migrate that over, some of those things might not have changed. So there's a very cool plugin in the plugin repository, which I can show you now. This is actually, I had the privilege of working with this plugin developer when I worked at Delicious Brains. It's called Better Search Replace. And, oh, hang on, I need to add new first. And effectively what this does is, this allows you to search for a string in your current database and then replace it with an updated string. So I'm going to install this now. Better Search Replace was acquired by Delicious Brains and then Delicious Brains were acquired by WP Engine, which is why it says by WP Engine there. But it is a fully free plugin that you can install from the repositories. And there is going to be now an option in my tools menu where it says Better Search Replace. And in this case, I'm going to search for HTTPS colon forward slash multipress.test slash joe, or if you were using a subdomain, you would search for the subdomain and then I would replace it with joe press like that. It's probably not going to find anything now because I didn't have any media, but I would then use that to make sure that all my URLs across the site are updated. Those of you who have done any kind of migrations from one domain to another, you'll know how this works. So it's very similar to that process. Yes, really says Better Search Replace saved me hours of greatest equal parts, 100%. I just want to mention, if you ask somebody who uses WPCLI, there is a WPCLI command that you can install, which does the same thing. So it's WPCLI Search Replace. It's a command that you have to install additionally on top of WPCLI, but it then allows you to go WPCLI, or at least WPCLI Search Hyphen Replace, Search for Old String, Search for New String. So if you're somebody who likes working with WPCLI on the command line, that's another way you can do the Search Replace. Yes, Adrian says the same thing with Updraft Plus, and you can do it manually in VS Code. There's many ways to do the same thing, but you will have to do that just to make sure that all your URLs are pointing in the right direction. Okay, so that is possible. We know how to set up a top-level domain. We know how to set up, we know how to extract a site out of a multi-site. Any questions on all of that, anything that I just covered, otherwise we can get on to our converting a multi-site back experiment, which is quite a bit of fun. I will say this. As somebody who used to be a freelance WordPress developer, I used to use, I think it was Duplicator, I can't remember, but I paid for a backup solution, a backup and migration solution. I can't remember why I ended up on Duplicator versus the others, but the money that you spend on the multi-site support, or at least the backup and migration support, saves you so much time and control. So I'm not here saying you must use one specific solution, but it's one of those things where I firmly believe that if you can pay for a tool that streamlines and simplifies your process in the long run, it's worth more to pay for it. And my recommendation is to factor that cost into whenever you're quoting for a client. So factor the cost of that yearly license into every single migration that you have to do. It's one of those things where you might not be physically doing the hours, but you're migrating your site for your client successfully. So that's what I used to do. If there was a migration in the project, I would factor the yearly cost of the plugin into that project. And if another project came up, I'd factor that cost in again, and then I know that it's paid for the following year and the following year, because some years you might not do migrations, but I used to include that cost in my quote as part of my cost to sale, if you will, because the benefit of having a good migration tool that you can trust that works every time. And there's loads. There's updraft plus, as I say, there's updraft, I don't want to name as many as I can because I don't want to show preference, updraft plus, plus duplicate a pro, all in one WP migration, WP migrate DB. I used to work for them. They're also a great product. They're definitely worth the money spent than trying to fiddle with it yourself. Downside to that is I can't present on how to use all of them because it would take up a whole nother workshop and I'd have to then buy licenses of all these products. Okay. There don't seem to be any questions on that. So let's move on to converting a multi-site back to a single site. So the truth of it is this is actually a lot easier and it's really just reversing the same process that you did of setting it up. Really is that simple. So the first thing to do is to go back into your network dashboard and migrate all your sites out, just like we did. So if you have subsites that you want to keep, migrate them out to single sites or just export the data or whatever the case might be and then delete them from the network dashboard. And the reason I recommend deleting them from the dashboard is they will then delete the, let's go back to my multi-site here. You'll see I've got tables for WP5, which is my Joe site, my Bob site. WP6, which is Joe's site. And then there's data in other tables for the blogs. Deleting them from the network admin will clear that data out for you. So it's less work for you. So let's imagine we've extracted Joe's site out or we don't need it anymore and we can then just delete it from here. So we'll go delete. And that will delete. It's not going to trash it. It's going to delete it. So make sure you know the difference between, in this case, archiving it, which means turning it off and deleting it, which means it's gone for good. So if we delete that one and we refresh the database now, we will see that site WP6 has probably gone. Yeah, no more WP6 tables and the various records inside the other tables will be gone. Let me close this. If we now delete Bob praise, because we've already extracted that out. Let's delete that one. We're happy with that. Yes, that's gone. We're good to go. So now we're just back to the main multiprace site. And we've cleared out all the data. So if we go in here, we have a look at the tables here. We'll see that there are no additional WP underscore number tables. So we're happy that those tables are all gone. All that content is out. Then it's effectively just a case of reverting the changes we made in the files. So removing the multi-site related constants in the WP config file is step one. So now I'm going to have to figure out whether I can share this with you. I'm going to have to probably switch sharing, which is... I think if I share multiple... I want to see what happens if I share multiple windows. Somebody let me know whether this looks doable. If I share two screens, does this look great or does this look terrible? Or I can just keep toggling between the two. Okay. Adrian says she only sees VS Code. So let's... Yeah. I guess it's... Just VS Code, Jonathan. All right. Well, let's just leave it like that then. So you can still see VS Code? Okay. So I'll just keep switching. All good. And then this evening I'll figure out why this is doing good things. So the first step is literally I just take out every single constant. So the defined multi-site constant I can take out. And I'm going to use PHP's block comments notation. So it's a forward slash and an asterisk. And then at the bottom of this, I'm going to use asterisk and a forward slash again. So that comments it out. So now that code is not going to be run. So that's step one. Then if I go back to my dashboard, and I'm going to have to switch back to that for you. So let's do that. So you should be seeing my dashboard now. And I refresh this. You will see it asks me to log in again, because now I've removed all the multi-site stuff. So now I have to log in as just the single user. So it'll still be the same username and password as that first user. And it's going to give me an error for some reason. Why is that? Because I'm trying to go, I'm trying to re-browse the network sites page, which doesn't exist anymore. So it's just the admin pages where we want to go. There we go. So now I'm back to my standard dashboard. You'll see I don't have any site options anymore. I don't have any network admin options anymore. I don't have my network setup options in the tools or in the settings. So now this is just back to being a single site install. Then I need to do some further cleanup. I need to reset the HT access rules. Now this is dependent on your local development environment and your hosting environment. I use, I think I mentioned this before, I use pressable for my hosting, not because I think they're the best, but it's a perk of the company that I work for. I get 10 free sites on pressable. And on pressable, they use Nginx. And they have the Nginx rules set up so that whether you're using single site or multi-site, it'll just work. So you don't have to make any changes there. But if you're working in a patchy environment, you may have had to change your HT access rules. Now, if you didn't have a backup of your original single site HT access rules, you would now have to go and find the default HT access rules. Or you can just resave your permalinks and that will rewrite the HT access rules for you. So that's the easier way to do it. So if you go into your dashboard, sorry, I realized I was showing you VS code now and you probably couldn't share it because of the whole screen-sharing thing. So this was the HT access rules I was talking about. Apologies, I'll try to remember to switch. So these are the rules that I want to change back, but I don't have them backed up anywhere. So I'm going to switch back over to my browser. And it seems that if I switch and zoom, it automatically switches for me, which is great. It saves me an extra step. And I then go into my settings and I go to permalinks and then I pick whatever my preferred structure is whether it was the custom structure or whether I preferred post name or whatever that was. I can just choose that and hit save changes. And then because of the way the permalinks work in an Apache environment, it'll rewrite those changes for me, or at least it shouldn't. If it doesn't rewrite these changes for you, it means that for some reason your WordPress site can't write to your HT access file, which is generally a problem on local environments. I've never seen this happen on a hosting environment, but I've seen this happen on local development environments. So then what you could just do is you could create a new test site to just copy the HT access rules over, or whatever the case may be. But that's all you have to do for that step. And then the last step, he says using the correct thing to share, is you need to clean up any existing tables. So in this case, the blog meta blogs, registration logs, signups, site and site meta tables are specific to the multi-sites in store, and they store data about the additional sites, not the site's content, but specific data, because registration is that kind of thing. Because you are no longer running a multi-site, you can now safely delete those tables, or you can leave them there if you want to. If you leave them there and switch back to a multi-site, however those records will still be in existence. So if you start adding sites, the blog ID will start from two of eight or seven or whatever the last site was. So my recommendation would be to delete those sites. So it's blog meta blogs, registration logs, signups, site and site meta. So let's go through quickly. So it's blog meta blogs, registration logs, signups, site and site meta. I wish that PHP Madden didn't have these all in alphabetical order, because if they were all nicely grouped together by data, that would make my life a lot easier. But anyway, here they are. So let's delete those tables. So we'll drop them. Yes, we want to drop those. And now if I go back to my site, nothing has changed. I'm still using the original core data, the original core tables. And my site is now back to being a standard single-site WordPress install. You'll see the data is still the same, the content is still the same. I just don't have all the extra sites anymore. Okay, I see there was a question. Elena says a question about backup. Should I back up the multi-sites one by one or just back up the main site? Or better, using the backup function provided by the hosting company to back up everything by one click? That's a great question. So my answer to that question is really, it depends. Because the multi-site install is essentially one WordPress install, one database, all the media is stored in one uploads directory just sorted by the site ID. There is nothing wrong with backing up the whole site. That having been said, depending on how many multi-sites you're running, sorry, how many subsites you have on your multi-site network, you may want to consider backing up the whole multi-site and all the subsites individually. Because you may want to only roll back one site at some point in time. This is also another, there's a whole conversation around how should I do my backup? Should I do the whole thing? Should I do them incrementally? That's just talking about single sites. So it really does depend on how important it is to you to have to restore the whole multi-site or individual sites. I would say that if you're running a multi-site environment like a WordPress.com, where you have different users in different spaces using sites on your multi-site network, and you might need to have to back up one individual site, I mean, sorry, restore one individual site, then it's a good idea to back up the individual sites. If it's like a nonprofit organization where the company that owns the multi-sites also controls the subsites. So nonprofits, one example, higher education colleges, universities, or another example, the company or the organization controls all the sites. They just want the multi-site functionality of the subsites. And then you're never going to worry too much about restoring specific sites individually. Then you could probably get away with just backing up the multi-site install. And so the question you need to ask yourself is, am I only going to ever have to restore because of a catastrophic hardware failure? In other words, the server goes down or the database gets hacked or whatever the case may be. And I just need to restore the whole thing quickly. Or do I need to be able to install individual sites because one site might need to be installed and then you might need to go that route. There is also the whole saying of better safe than sorry. So if you can do both, do the multi-site and individuals and then you've got both covered. But that comes with costs and extra work and those kinds of things. So really you've got to look at it on a case-by-case basis and make a decision for what suits the needs of that multi-site better. Okay, I hope that answers your question. It's not the best answer, but it's the only one that I have. Okay. There were two other things that I wanted to show you and I think we will have time for them. Shelly had a question. I wanted to respond to backing up. Can you hear me? Yes, sure. Go ahead. Okay. I attended a word camp in Baltimore several years ago and there was a discussion about security and backing up. And the person who presented there said that you should have a disaster recovery plan because she said, what happens if your site goes down? What happens if the hosting is offline or whatever? What happens? What are you going to do? And you should practice how to do that if you can. So bearing that in mind, what I personally do is I backup the sites that I support to an external hard drive once every six months. And I have frequent backups. She said you should backup to have backups for 10 weeks back. That was her recommendation. And so I'm not telling people what to do. I'm just telling you what I heard. And that's the way that I do it. So that is my take on it. No, 100%. That is a whole discussion in and of itself, Shelly. And thank you for bringing that to the party because backups and recovery and all of that, as you say, if things go wrong, how are you going to recover? How quickly can you recover? You know, can you recover the whole site quickly? Does it take five hours? I remember one of my previous employers, we had an app that was running on the web. And we had hired a freelance contractor to help with the network infrastructure. And he had implemented all kinds of backups and various things, but he'd never tested them. And one day the thing went down and we had to recover. And it took us two hours to get back online. And those two hours for an app that is taking subscriptions and trying to get customers on board and all that kind of thing for a small startup is a lot of money that you lose in those two hours. So yeah, you can have all the backups in the world, but can you restore from them? And that's a very good point. So yes, definitely make sure you're able to, so you know how to restore, where to restore from, where things are. Yeah, that's a whole rabbit hole that we probably should go down one day. So I'll make a note of that in my, my note list of ideas if we could talk about some, some best practices there and some tips and tricks. Thank you for that, Jenny. Okay. So the two things that I wanted to show you very quickly. So we've covered experiment one, we've covered experiment two, we've covered three, we've covered four. No, you can't, you can't keep the first site as a sub site. You can move things around later if you want, but then you're still going to have to have one main site. Experiment five subdomains versus sub directories. I wanted to show you folks this very quickly. But then you are setting up a multi site. So I'm glad this worked out the way it did because now I can revert back. So I'm going to switch over to VS code now I'm telling you what I'm doing because I don't want to have to switch things. I'm just going to re uncomment those multi site settings. So that we can convert this back to a multi site install. So I'm going to go back to my multi site setup. I'm going to go back to my network setup page as we did last week and just convert this back to a multi site. And I want to show you what happens. If you remember last week, I mentioned that if you want to run subdomain, multi site subsites, you need to have a wildcard enabled. So wildcard is a special type of DNS setting where on your top level domain, you register the, the asterix dots, whatever your subdomain is. And then any request to any text before the subdomain. Sorry. Top level domain will resolve to your local install. So if you don't have that setup, when you try and install the multi site network, WordPress will actually try and ping a randomized subdomain on your top level network. And it will then give you an error and say, Hey, there's a problem you're trying to configure subdomain, but you haven't got it set up. And the talks here about adding the asterisk host name pointing to your web server, et cetera, et cetera. So I like that about WordPress. It doesn't, it doesn't just try like a specific word, because maybe you've set up that specific word as a subdomain. It'll actually randomly select some text, try and make a request to that subdomain. And then it says, Hey, you haven't got the setup. So please make sure you do it. So that was the one thing that I wanted to show you. The other thing that I want to show you is how to allow site registrations. And this is a very cool little thing that WordPress does. So what I'm going to do is I'm going to switch this to switch this site back to a multi site install. And I'm going to do that by commenting out these things. I think this will work. I've tried to install it as a subdomain site, but I'm now telling it it's a sub directory. And I think this will work. So let's do that. I'm trying to copy the access rules from the browser. You can't see those right now, but let's go back to the access file and we'll pop those in. This is what we covered last week. And then that should work. So let's switch back to the browser. Let's refresh this and it's either going to work or it's going to fall over. No, it seems to be working. So that's good. Okay. So I showed you the site settings tab at the end of the site sort of admin and admin network dashboard. There is also a network settings page underneath in your, in your, in your network admin dashboard, there is a settings menu item and then there is a network settings page. And this allows you to configure a whole bunch of things. I do recommend reading through this. I'm going over what this does. I'll share some links with you off at the end of this call, towards the end of this call that you can read up about. But in the registration settings, you can say under allow new registrations, you can say both sites and user accounts can be registered. With that setting saved. When a user, let's log out here. When a user goes to the wp-signup.php file, or I'm going to copy this link and show it to you in the, in the address bar. There's two options. The one is wp-login.php question mark action equals register. Or the other option is wp-signup. Those are two options. Singup signup.php. When somebody hits this, it'll give them a nice little signup screen. And then that'll also ask them if they give a username and an email address. It'll say registration blah blah. Give me a site or just a username. So if they keep the give me a site option selected and they go next, it'll then allow them to create a sub-site on your network based on how you've got it set up. We've got our setup as sub-domain. So it gives a sub-domain option. Sorry, sub-directory option. If it was sub-domain, you'd be creating the sub-domain. And then you can give it a site title. So we can say John's new site. And then it asks you, do you want to allow search engines to index this or not? The no directory robots thing, whatever that is. And then they can sign up. And immediately it'll start creating the new sites. It'll send out the email for registration. And from that email, they can then log into their new site. So this is what the email looks like. I'm going to quickly open up my, I've got a thing installed locally called mail hog. It catches any local email. And so this is the email they receive. And this email can be configured in the network settings. It has the multi-press.test URL with an activation key. They click on that. And they can then activate their site, generates a password for them. And they are then able to log in. Okay. This is not working. Why is this not working? Probably some bugs somewhere. Why is that not working? That's interesting. Should be working. I don't know why that you're probably a bug somewhere or something. Oh, you know what it probably is. Maybe because I'm still logged in as the admin user, I bet you. So let's, let's just go and look. Yeah. No, I'm not. Okay. So let's see if I can log in. I've done something to break this because it was working yesterday. Um, okay. I've done, I've done something to break this. It's probably because of the way I've configured the multi-site installer or whatever it was working yesterday, but they'll then be able to log into their dashboard, be able to manage their site content, enable the plugins that you enable on the network, enable the themes that you enable on the network, and all those kinds of things. Um, let me see if I can fix this quickly because this is annoying me now because this was working yesterday. Um, no, let's try this site itself. Okay. Can I go to the dashboard? No. Okay. Let's log out here. And let's go and log in as admin. Nothing like breaking your live demo. All right. So I'm going to revert this back now. So let's go to network admin sites. Let's delete this site. Confirm deletion. Yes. This is probably because I had set it up as sub directory, but then changed the functionality, which I really shouldn't have done. Um, so I'm going to switch back to my code editor. And to comment out and remove all of that. So I don't do that again. I'm going to comment out this chapter over here. It's the access. I'll fix in a second. Let's share the right screen. Um, show you how I saw your question. I'll get to that in a sec. Uh, so let's go dashboard. No, not that one. Not the network dashboard. Just the regular dashboard. There we go. Um, and then I need to delete those tables. So let's delete those tables. So it was blog meter blogs, registration, signups, site and site meter. So we'll drop those quickly. Yep. Okay. So those are all gone. So now we're back to a standard install. Okay. Good. Dashboard. All right. Now let's do it properly. So let's I'm switching. I'm not going to switch the share. I'm just switching back and enabling the allow multi-site constant. And then I'm going to refresh my dashboard. I'm going to go to my network setup. And I'm going to select sub directories this time. So the things I said correctly. Uh, so let's go and store. And the reason this probably broke is because the HD access. And the constants are specific to either sub directory or sub domain. And I was using a combination of both. And that's how I, that's how I probably broke it. So I need to go through the process. I could have maybe copied the HD access for sub directories and fix that, but this way it was easier. So let me copy the constants. Make that change. And then I will copy the correct HD access rules. That change. Okay. Right. So now we've got that set up correctly. And then let's refresh this. Okay. That's good. So now we want to go to network settings. Enable both user accounts and sites to be registered. Great. Then we can log out. Um, thank you Mark for that kind of it. Um, okay. So that's logged out. So what I'm going to do now, just to be sure. Is I'm going to use my developer tools. There is an option in the network tab where you can tick disable cash. And that will always clear the cash when you refresh things. And then I'm going to use my good old friend into cash and hardly load just to make sure there's no cookies and things lying around. That shouldn't be there. Um, so you confuse things with logins and such. Okay. So now I should be able to go to WP sign up. Uh, and sign up as my new user. So let's do that. So let's go Jonathan Bussinger. Jonathan Bussinger at gmail.com. Please give me a site. Yes. Okay. The emails are registered. That was expected. So let's just go to passenger one. Um, that's fine. That's the address. John's fixed. New site. And let's create that. Okay. That's there. Let's check for the email. Um, This should be it. Yeah. Yeah. That's good. Yeah. Site is active. So now we should be able to log in. Log in as Jonathan Bussinger. Um, And this should work. Yay. Okay. So the lesson there was folks, don't try and set up subdomain and then use sub directory. HG access rules. That was where I went wrong way. Um, Uh, Shirley. Okay. Let's go back to questions. Let me go back here. Um, M says mad science experiments are the best for discovery and solving real world hiccups. Anything that can go wrong will. They're great for that, but they're not great for the present to supposed to be showing how things work correctly. But thank you for that. Um, Uh, Adrian says watching someone troubleshoot. It's not an experience troubleshooting under pressure. Nothing like it. Um, Shirley says, can you possibly protect the signup page? Uh, Shirley, do you mean the signup page is created when you enable. Uh, the settings. Is that what you mean? I think that's what you mean. Um, I'm pretty sure you can possibly protect it. Yes, it is that page. Okay. I'm pretty sure you can possibly protect it. You could also just disable that setting. So let me go back and show you what other options you have. Um, let me log out. Yeah. Um, and log back in as admin. Uh, if I go into my network admin. And I go and say registration is disabled. For example. Um, then if I save those changes. And I log out. And I go to that signup page. Pretty sure I actually haven't tested this. I'm pretty sure it'll say you can't, you can't register. So whatever your settings are on that page will determine what displays on the signup page. Um, so by default it's all switched off registration is disabled by default on a multi site. If you want folks to register accounts, you can just enable that. Um, let's actually log in again and show you the different options there. Um, settings. This is, sorry, this is actually something I'm just remembering that this is something that it took me a while to get used to when I first started playing with, with multi sites is you have your network admin. Multi-press sites. This is for your, your main sites. And then you have the my sites dropdown, which has the network option action network admin area. And then the single site area. So there's this additional sort of menu structure that you have to start learning navigate. Uh, and many a time I've wanted to go to the site dashboard, but I've gone to the network dashboard. Um, so it takes a while to get used to how that works. Um, but anyway, what I was saying there was if you go into the settings, you can get access to the network settings. Um, you can either disable registration or kinds of registration. You can enable user accounts to only be registered. So people can register accounts, but they can't register sites. You can say logged in users may register sites. So that only allows them to first register the site. Then they have to log in and then they can register new sites. Um, or you can say they can register a site and a user account from the record. And depending on that setting will determine what gets shown or not shown. There's also some really cool things here. You can, you can ban names for subsites. So you can prevent folks from registering WW dot, whatever your domain is or admin dot whatever. Uh, you can limit registrations by email domain. So if you don't want anybody using a Gmail address to register a site on your subs, on your multi-site, you can do that. Uh, sorry. Um, yeah, certain domains, you can ban certain domains. So you can limit. So you can say Gmail users can only register two sites for example, or no Gmail users can register sites. Um, you can change the content of the registration emails. You can set up what the first post is on a new site. So you can change whatever that default first post is, whatever the default first pages, uh, the default first comment. There's a whole bunch of fun things you can do. So, and you can even restrict site upload space. Um, so you can limit uploads to a certain size. You can limit certain file types. So if you're creating a multi-site network where one site. Folks can only upload PDFs. For example, if you're using a document storage site, you could just limit it to PDFs. For example. Um, so there's all kinds of finding games. You can also enable the plugin menu. For users. So you'll remember when we created the multi-site, if you're running a sub-site, you can't manage your plugins. This can be enabled if you want specific sites to be able to manage what plugins they can and can't, uh, activate or deactivate, not at no install, just activate or deactivate. Um, so those are some of the options there that you, that you have. Okay. Cool. Any, are there any other questions? M says, can you limit those restrictions only to certain subsites? To the best of my knowledge through the settings menu. No. Um, however, and this is actually something that I want to look into for a future workshop, maybe the next workshop. You might be able to do it on a custom plugin level. Um, so you might be able to using some custom code, say based on a certain blog ID, only limit certain things. Um, or you could write some custom code to add those settings to your admin. As we all know, WordPress is customizable if you know what to hook into. Um, so one of the things that I want to look at next week is how we can do things on a per site level only. So by default, no, by default, all or nothing, but if you, if you either are a developer yourself or you want to hire a plugin developer, you probably could, uh, add that functionality as well. Uh, there are specific. Things that you get more than that size experience. Um, there's, there's a specific blog ID that you can get. Uh, and it'll tell you what, what, what blog you're on. And then based on that, you could limit things that way. So that's one way you could do it. Um, okay. Any, any other questions related to multi-site? Um, it's a very, it's a very fun thing to experiment with. Um, just to understand how it works and what it does. Um, there are only certain areas where I would recommend using a multi-site. Non-profits is one good one where you have lots of smaller sites running on a network owned by one company, but they need to be kept separate from each other. Um, it's just easier than registering multiple hosting packages and hosting domains and all of that. You just use a sub domain and off you go. Um, as I mentioned, the make sites, the WordPress make sites are a good example. Uh, so every single, every single team has its own individual sites in the make WordPress network in the contributor open source network. Um, and you have to be added. So you'll see, I don't mind sharing this information because it's not anything secretive, but you will see if I am mouse over my username on the top right there, I only have access to the core site, which is the core development, learn WordPress WordPress news documentation, training, community resources, forums, contributor training and developer blog. There are way more teams than that, but those are the only ones that I'm active on and have access to. Some folks have access to all some folks, you know, access to a short, a small amount. Um, so that's a good example of it. Or then as I mentioned higher education, if you're building, if you ever have clients that are universities or colleges, uh, they will often find the multi site solution useful because they will often want to have for each campus or for each school within the university or however that works, they might want to have individual sites, but they want to have it all under one big umbrella managed by one network admin. Um, many of the people that I know who I experienced in multi site I experienced so because they started with WordPress while they were at university or while they were at college, and they became part of the web team and the web team was managing some massive multi sites. Um, and that's, and that's how they ran things. Okay. Uh, I think that's all the questions and comments and things today. I want to thank everybody for joining me and, and bearing along with me as we explored multi sites. Thank you all for the questions and for the answers that folks provided. I really do appreciate that. I know that it's difficult to kind of, um, communicate with each other with the focus mode enabled, but just as she did today, if you have something you want to add, I have no problem with you raising your hand and speaking through the mic. Uh, please, my voice gets tired after a while. So if you have comments you want to add, please feel free to do so. Um, thank you Mark again for coasting with me today, Mark Andrew. Um, and thank you all and enjoy the rest of your Thursday and the rest of your weekend and I will see you for more experiments next week. Thanks John. Thank you. Thank you.