WordPress / Learn

WordPress.org Learn - The canonical source for the code and content behind https://learn.WordPress.org
256 stars 88 forks source link

What is WordPress Multisite? #2314

Open digitalchild opened 5 months ago

digitalchild commented 5 months ago

Details

Related Resources and Other Notes

Automation Code

digitalchild commented 5 months ago

//lessons

github-actions[bot] commented 5 months ago

Lesson Development Checklist

jonathanbossenger commented 2 months ago

I created a similar lesson for the beginner developer module on multisite. It might save time by reusing that lesson here.

westnz commented 1 week ago

We will reuse the 'Managing a multisite network' lesson but will re-record this one to be more user-focused.

jonathanbossenger commented 1 week ago

I'm not trying to be funny or anything; I honestly don't mind you re-recording it, but I'm curious to know how the lesson could be more user-focused.

westnz commented 1 week ago

Hey Jonathan. Absolutely, sorry for not providing more context. Ronny and I chatted. To summarize: 'This one relies on people having some familiarity with server environments (Apache vs. Nginx, specifically, the part at 2:34), and an understanding of DNS, etc. (at 5:14).'

But now, after I started working on it, I realize you can't really get around it...

jonathanbossenger commented 1 week ago

But now, after I started working on it, I realize you can't really get around it...

Yeah, that's kinda what I was getting at. You can get away with not talking about DNS if you go the sub folder install route (which I actually think I use in this video because it's really hard to replicate a wild card subdomain on a local environment), but your web server (apache/nginx/etc) is going to determine the server config steps.

ironnysh commented 1 week ago

Hi @jonathanbossenger, I was chatting with @westnz about it on Slack, and thought I'd also share my feedback here so we could all weigh in :-)

Here are my thoughts:

  1. One option is to narrow down the scope of this lesson to only cover “how to set up a subdirectory-based multisite network on an existing WordPress site”. This eliminates the need to go into the sub-domains option (DNS).
  2. The Nginx/Apache situation is relevant, but more so if you're working on a LEMP stack—locally or on a remote VPS. In either case, you're most likely not the audience for this Learning Pathway. BTW, Local, Studio, and Playground (the local development solutions discussed in a prior lesson in this Learning Pathway) all support “standard” multisite. In Local's case, it's true even for an existing Nginx-based site.
  3. When it comes to shared hosting, it's important to note that multisite isn't always supported on “simple” shared hosting plans. When it is, I believe that the Nginx/Apache situation isn't that much of an issue since most hosting companies use a hybrid of Apache and Nginx, which eliminates this problem.

So, if we do go with a narrow-scoped lesson, it should include a section at the beginning that covers the following:

  1. Direct people to ensure multisite is supported on their hosting plan before they begin. They can contact the hosting company, consult its knowledge base, or review their hosting plan technical specs.
  2. If it is possible, the next step is to check which server they're on (go to /wp-admin/site-health.php?tab=debug and click the Server dropdown).

Finally, and that's maybe the most important thing, I think it's safe to assume that people who want or need a multisite are Advanced++ and, as such, have prior knowledge of servers. Otherwise, they would have someone else (developer, sysadmin, etc.) managing this aspect.

What do you guys think?

jonathanbossenger commented 1 week ago

Hey @ironnysh. I agree with everything you've said here.

What I was wondering was whether this would require creating an entirely new lesson instead of adding any missing pieces to the existing one, which I'm happy to do, and then using it in two learning pathways.

The lessons on Setting up a WordPress multisite network, Managing a WordPress multisite network, and Advanced multisite management all exist in the blurred area of advanced WordPress user/beginner WordPress developer. Even the introductory paragraphs in the Advanced Administration Handbook allude to this.

One of the main reasons I created those lessons in the first place was to give context for the later "developing for multisite" focused lessons, but they could just as easily be included in the advanced user learning pathway.

ironnysh commented 1 week ago

This all leads me to think that we should consider a Sysadmin Learning Pathway ;-)

creating an entirely new lesson instead of adding any missing pieces

Managing a WordPress multisite network, and Advanced multisite management work great as is.

The Setting up a WordPress multisite network lesson naturally assumes that people have watched the previous lessons in the Beginner WordPress Developer LP, so there are no “official prerequisites”.

What I'm worried about is that people arriving here without going through the Developer LP might feel overwhelmed when they encounter some key topics for the first time:

  1. Apache and Nginx (at 2:34)
  2. WP running in its own directory (at 4:06)
  3. DNS wildcards (at 5:14). The closest we got to this is in this mostly theoretical lesson.
westnz commented 1 week ago

Thank you both for helping to move this forward!!

What I was wondering was whether this would require creating an entirely new lesson instead of adding any missing pieces to the existing one, which I'm happy to do

Let's connect to see how we can add the missing pieces 😉

jonathanbossenger commented 1 week ago

What I'm worried about is that people arriving here without going through the Developer LP might feel overwhelmed when they encounter some key topics for the first time:

I think the important thing to focus on is what are we (the training team/Learn WordPress) responsible for teaching folks. Usually when I think about this, I think about what is possible with WordPress in the out of the box experience. Anything outside of that should only be mentioned, and perhaps linked to for further reading.

This is why, for example, the How WordPress works module contains lessons on Apache/Nginx, but nowhere in the beginner developer LP do we include anything on WordPress in a subdirectory, or DNS related topics. That's usually either linked to for further reading in the main body of the lesson, or in the lesson summary.

ironnysh commented 1 week ago

Would you say that this approach is reasonable for the user audience, too? I feel like developers are more inclined to this "DIY-prerequisites" method :-)

Maybe this lesson should be only theory—the what and why—and conclude with a recommendation to learn more (the how) in the developer LP. That's what we did with the HTML and CSS lessons.

westnz commented 1 week ago

I like the idea of a more narrow-scoped lesson + adding a section at the beginning to ensure multisite is supported on a user's hosting plan before they begin and, if possible, to check which server they are on.

jonathanbossenger commented 1 week ago

Would you say that this approach is reasonable for the user audience, too? I feel like developers are more inclined to this "DIY-prerequisites" method :-)

Given a lot of the content in this learning pathway, I'd argue that at the "Advanced User" level, the lines start to blur. For example, you all have a lesson on phpMyAdmin, which doesn't have any prerequisite for knowing what PHP or MySQL is.

Maybe this lesson should be only theory—the what and why—and conclude with a recommendation to learn more (the how) in the developer LP. That's what we did with the HTML and CSS lessons.

That's not a call for me to make, but it could very well be the case. If we use the phpMyAdmin lesson as another example, I see that in the description it says, "If you want to learn more, go to the Developer LP." So that could also be the solution here.

However, I can also see a use case for simply improving the current lessons, and reusing them in both places.

ironnysh commented 1 week ago

the lines start to blur

I couldn’t agree more. The Advanced User “persona” is hard to pin down because it can be a seasoned content creator/manager, designer, non-WP developer, or anyone who’s seen enough CMSes :-)

prerequisite for knowing what PHP or MySQL

The reasoning behind Modules 6 and 7 was to take a step back from hands-on, practical tutorials and spend some time on theoretical (aka, conceptual) learning opportunities. The four lessons in these two modules are introductory (sort of “take my hand and let's see what's going on behind the scenes”) and include a callout to learn more in the developer LP. I hope they will help people feel more confident when interacting with their site, and even encourage them to continue their journey into the Developer LP.

jonathanbossenger commented 1 week ago

The reasoning behind Modules 6 and 7 was to take a step back from hands-on, practical tutorials and spend some time on theoretical (aka, conceptual) learning opportunities. The four lessons in these two modules are introductory (sort of “take my hand and let's see what's going on behind the scenes”) and include a callout to learn more in the developer LP. I hope they will help people feel more confident when interacting with their site, and even encourage them to continue their journey into the Developer LP.

That makes sense. In that case, perhaps it also makes sense to take the same approach to module 10, as you suggested earlier.

westnz commented 1 week ago

Maybe this lesson should be only theory—the what and why—and conclude with a recommendation to learn more (the how) in the developer LP. That's what we did with the HTML and CSS lessons.

Let's move forward with this plan. I will start working on this next week and edit the script I already drafted.

Do we still include the 'Managing a multisite network' in the Advanced user LP?

ironnysh commented 6 days ago

Do we still include the 'Managing a multisite network' in the Advanced user LP?

I vote yes :-) Here's a possible scenario: a content manager might not be able to access the server to set up multisite, but once it's enabled (by a sysadmin, or a similar function), they would be the ones managing the network.

westnz commented 4 days ago

That is a good example. Agreed, let's include it.

westnz commented 3 days ago

Thumbnail:

Image

Link to script

westnz commented 2 days ago

https://github.com/user-attachments/assets/64b8fc43-e1f5-428e-9898-2dd9684e0c05

ironnysh commented 1 day ago

Tutorial/Lessons Review Checklist

Great intro to the topic, @westnz 🧑‍🏫

Re Technical concepts: in the sub-domain section (starting at 2:41), the preceding www should be removed from the example URLs.

westnz commented 1 day ago

Thanks for catching that, @ironnysh, and reviewing.