 Hello and welcome to session two of WordPress Multi-Site 201 with Tom Woodward. Thanks for joining us today. I'm here with Tom, the one with me, and Taylor is also joining to provide some color and question commentary. Yeah, I'm here for the color commentary. Color commentary and keeping Tom on his toes. So today we are talking about customizing the onboarding experience for your WordPress Multi-Site. We're going to be talking about some pretty cool things that Tom has been working on to kind of make this work better for him and his environment. And maybe these are things that you can implement yourself at some point, or maybe they'll just get you thinking about what it is specifically in your environment that could use some tweaking and start researching what might work best for you. So with all of that said, Tom, please take it away. All right, and if you could share my screen now, I think that would be, we'll just start right off. I'm going to try and stay a little more on task since Jim isn't here to help me wander far astray. So we'll worry about time a bit more. So something that's happening more and more, I think, is trying to get that initial choice done between, say, a WordPress Multi-Site and a Domain-01 zone environment. And even if you don't have a Domain-01 zone and you're just doing WordPress Multi-Site, this first page where you're trying to explain to people what are the opportunities here, what are we really doing in terms of support, who would choose this and why. This is your front page, that landing zone. So one of the things I've been kind of working on, and this is meant to get people started in that conversation. So it's a little plug-in that builds some content around this idea of kind of finding your path in this choice. Now, I think Shannon at University of Mary Washington really did a great job, and so you should definitely check out the way they're kind of guiding people as well. I think she has a really good metaphor between an apartment building and a house that I think resonates in certain ways really, really strongly. This one isn't quite as visual in terms of that, but that idea of finding your path, showing these two different choices and trying to say who it's best for and what you provide in the different environments. Trying to guide people to, if you just want WordPress fast and easy, you want the Multi-Site. If you want to explore, if you want choice more than technical support, maybe Domain-01 zone is more of that path. But trying to get people to think about what they really want and choose accordingly. One of the things I thought would be beneficial in this choice is being able to see the plugins and themes that you have on the Multi-Site. So that's one of the things this plug-in does is it makes that stuff visible on the front end. And I tried to get some pros in here that's like, hey, we're almost custom curating. These are bespoke chosen themes and plugins that are meant to serve most users. They're already vetted in terms of security, accessibility, and functionality. And they're going to answer most people's needs. And then it just kind of lists what's available. So this stuff happens automatically via a plugin, fun stuff that's kind of been added in in case it was needed is they all have IDs. So if you wanted to blank out individual ones for any reason or highlight them in a particular way, you can do all that via CSS as you choose. So this is... So is this dynamic when you add more plugins and themes that will just automatically populate? That's awesome. Yeah, absolutely. So is the WordPress plugins available via the API or something that you're able to query that? Yeah, that's what this... So this is what the plugin does in case this is the plugins one. So it's just going through and doing a little query where it gets all the plugins and then spits out this particular chunk of HTML. And it's tied to a plugin because I'm kind of old fashioned that way. I did not make it a Gutenberg block. Sorry, Ed and other people. I might do it if the demand was really there, but this was just a simple way. And since Gutenberg still supports short codes, that's what it does. And it's a very similar pattern with how it gets themes. We have a function called getThemes. We have a function in WordPress called getPlugins. And those things are what gets us the data and then allows us to loop through it. And so this could be fancier in different ways. In our case right now, I'm using it to build just a big chunk of HTML that we spit out into the editor. But that's live. You could, instead of doing that, have it generate a post and write the content there if you wanted to customize the descriptors and didn't have a ton of content. You can start to think about the flexibility and fluidity of how this behaves once you realize, hey, I can get all this stuff and then I can do something with it. What that something is, since we're in round two, the more sophisticated level, starts to become the stuff you decide what you want to do with. And you can see this plugin is basically just this. This is all the functional stuff is what like 60 lines of code about. And it's already done for you to modify and tweak as you desire. So it's not a bad one to start with to mess around with as you start to understand what plugins do. And even with 60 lines of code, look at a good 20 of them are just telling you what the plugin's name is pretty much and keeping bad people from accessing it directly. So it's a start. And I think like one of the conversations I'm hoping we have as part of this workshop series is like, what else would be helpful in terms of showing people what this does? Because you can see in my development environment, this is embarrassingly large. So like you wouldn't want to do this to users if you had this environment. One, you wouldn't want this environment. But, you know, one of the things I thought about was, do we need a way to categorize and sort and search these things? That's possible. What's included by default versus, you know, what you have options to add. Right. Yeah. Network activated versus individual choices. Right now it's pulling the descriptor from the actual plugin and from the actual theme and then linking to whatever the plugin wants you to link to. And all of that is optional. These don't have to be links at all, you know, and maybe that's useless. You don't really want to send people out to the plugin page. That's all. All things you can change. All things you can think through as part of who are my people? What do I want them to experience? How do I keep this manageable and useful both to myself and to them? Because that's one of the reasons I just did this. I didn't think that I personally would keep up with like custom descriptions of the plugins and themes. Right. So I just use the default ones. You know, maybe if you have a constrained enough list, you do keep up with kind of your custom descriptions and you provide an avenue for writing them. I don't know. You know, you're just looking at that balance of how much work is it for me? How much value do the people I'm trying to get interested get out of it? And how do I manage that stuff? Like, you know, the worst scenario is you do a ton of work and nobody looks at it. That's pretty much the story of most of my documentation. You know, I over-document. No one looks at it. They ask the same questions anyway. But you have something to point them to. That's true. That's in the long run, right? Right. Setting that cultural expectation as part of this game is going like, okay, I'm not going to do this for them. I'm going to point them at the documentation. I'm going to do that regularly. I'm going to do it in a kind way, but in a consistent and firm way. And that may be a huge cultural shift, depending on who you're dealing with. A lot of times students are used to it, but sometimes faculty, not so much. They're used to more of a white glove experience. So how you navigate that depends on your institution and goals. But, you know, hopefully it's a good starter thing. So we'll have, I mean, this plugin is available already, but, you know, we'll link to it. And it generates this content. It has these little visuals for whatever they're worth. And it's just trying to paint that picture. WordPress, that's what this is. Choices around the technology. You know, we got JavaScript. We got HTML5. MySQL kind of taking a front seat. And we're also referencing Omeka and Scalar for the masochists among us. But, you know, it's trying to say, like, this is a little more complex. It's offering those things as maybe curiosity, you know, for whatever that's going to get you. And then these things become paths into whatever you're using for your registration, whatever you're thinking about that. So I think starting to paint that big picture, starting to create, you know, what's this community feel like? What are we trying to build in terms of kind of brand necessarily, but like, what's our vibe? What's our identity? How are we trying to shape what people come to expect? How they feel about the language and everything as we go through this. So, all right, we're about 15 minutes in. That's the chooser. I thought we'd get kind of right into the registration process and things that we can take advantage of that are often left kind of alone. And these are right here in our general network settings. Let's take a look at a couple of things. You know, I'll just note some of the easy stuff, but I promise we'll get more complex. One, I like registration notification. I like to leave that on and I have an email address for it. You may want a generic email address that's support for the site. I tend to encourage that because, like, when somebody leaves and that email address is somebody's, mostly people will forget to change it and it also makes it much harder to distribute that workload or the people who can view. So, if you can get a generic or shared email address for these types of things, definitely use it. Highly encouraged, particularly in places with lots of turnover. And eventually everybody leaves, you know? So, like, you know, don't build that one point of content, right? Especially if you have access to, like, a ticketing system, like if you're in an IT department or working alongside an IT department, a lot of those systems will let you do, like, a custom email that goes to a specific place, and that's a really great way to do it. Make sure that emails don't get missed. Easy to see who's doing what, things like that. Otherwise, a shared inbox works okay too. Yes, absolutely. Or you might, if you use Slack, for instance, you can set an email address up for a channel and those things would just come into a channel and Slack. So, just keep thinking to yourself, whenever any of these examples are given, what's my workflow? Where do I do the stuff? How does it fit into my organization? So, there's little things here, like we talked about setting your limited email registration to a particular domain. She can set multiple domains. Yeah, yeah, yeah. But this is the stuff that is often left alone but has some abilities that you might take advantage of. They are limited. Let's be clear there and we'll see how we might escape some of those limits. So, these are the emails that go out when people register. They say things like howdy by default. Maybe that fits your vibe. Maybe it doesn't. You know, WordPress back in the day was a little more fun feeling. You know, they had the hello Dolly plug-in by default. They had a bunch of kind of weird things that weird people do. And over time, it's gotten a little bit more business-y. But you can see there are vestiges of that stuff with things like howdy and howdy up here too. But you can customize this stuff. Notice I put in HTML there. It will not work. It will come out just saying H2. So, even if you were to write the HTML in here, do inline CSS, it's not going to work. You have a set of variables. You know, these are the main ones likely you would use. But you can put in certain variables into this and then customize it and save it. Also, we're pointing out that it's kind of a weird way to write the variable. So, be careful that you don't uppercase all kinds of things. Are those all of the variables? Is there a place where you can find more? There are more variables. I need to look into where that list of variables is. I'm sure it's probably documented somewhere. Yeah. I'm making a note with a pin. See that? I use multiple modalities. But customize this. Even if you're not going to do anything else, just tweak this a little bit. Make it sound more like you think about what information really are people going to want and need to see here. This is also a place sometimes where you can tweak things like if stuff's getting stuck in your institutional spam filter and you maybe struggle with getting things whitelisted. Sometimes changing variables here can help clean that up. A lot of times things like password come all feeling spammy. You can change different aspects here and sometimes get through like if you don't have an optimal organizational relationship with your IT group or perhaps in some places I've been, they don't even understand how the spam filter is working. Those are things you can play around with. These are two different emails. The user and the welcome one. Just change those. It's also a great place to include links to information too. Head off some of the support requests by linking to a page where you've got resources or a video or something for folks to get started with. Really great place to put that. Don't put too much in there otherwise people won't engage with it. They still might not but it's a good shot. I guess I am curious because of these limitations you're talking about if you wanted to link to things that didn't fall into those specific short codes that are in there, would they hyperlink or would you be able to do something like an embed or is that really just not available? You won't be able to do any embeds. I think if you put plain URLs in there they should be functional but it depends a bit on the user's email and how they have some things set up but probably functional links. The bad side of that is for accessibility reasons you don't really want naked links because screen readers read it out a letter by letter which is never pleasant for anyone. That's probably a good opportunity knowing that limitation in mind. Make a clean place or even a redirect like if you can get docs.stateu.org so at least it's a naked link that isn't too long even if your stuff doesn't live there but maybe it redirects to someplace else. There are a lot of ways to handle that. That's how I would do it. Make it a short URL that's understandable when read out loud, things like that. Not ideal but way better than super long things. Great example too. I thought about that and now I have and now I'm different from this experience. Hopefully the same thing is going for people listening now. The other piece which is often left alone which I think can be a really good place to put useful stuff. Right off the bat you have a first post, first page and even first comment that is created with all these new sites activation. Even if you're not doing cloning or whatever usually people just throw all this stuff away because it is just useless stuff. You can make it useful. Do some of the similar things that Taylor is mentioning. If you have valuable information that you send out regarding support, regarding where tutorials live build that into this process then things can be more robust and come across in the posts in ways that you can use in beds and that sort of stuff. Take advantage of that. It's a little bit of a pain to write them in this but you might consider also cutting and pasting the HTML if you're not comfortable with it from the visual editor and then just pasting it in here like that. There are some opportunities here to make this content that isn't just thrown away by default and even if 80% do throw it away without looking at it that's a 20% gain from just giving them just plain garbage. Just keep thinking about that. That's the default stuff. One more thing I might do is based on recent experience I'm taking out anything that is video files from my allowed upload file types list maybe even audio too. It may be worth the hassle in the communication just to avoid the storage issues. It would be worth exploring if you're unfamiliar with if you're looking at this list right now watching this video and be like I don't know what some of those are. Google them. Personally I would leave MP3 because podcasting or audio sharing was a big use case for me when supporting faculty and students but I wouldn't keep WAVE because WAVE files are huge and that's also audio but these decisions can that stuff can actually matter in a meaningful way and I would prefer to keep catch those things technically when I can. Look if someone's trying to upload WAVE and they put in a ticket and saying it doesn't work this is my opportunity to show them how they can take that WAVE file and make it an MP3 which is going to make things better for them in the long run. Or maybe you just want to allow it whatever direction works for you. I think that's a perfect example and the other thing you can start to look at as you explore programmatically what can I do is maybe I think you can do different errors on the attempt to upload different file types so if you customize that and say you know you try and do an upload of a WAVE and instead of just saying not allowed it says WAVE files aren't allowed because and then it says what you want to do is compress them like this and here's a link to our documentation on compressing WAVE files and so you have almost that automated intercession at the point of issue and that's what we're looking for in lots of these things it's like how do we take advantage of the fact that we documented it how do we take advantage of the fact that we know what someone is trying to do and kind of get those two things intersecting sometimes that's easy sometimes it's a super pain but even if you have to do it manually based on the request it's better than trying to undo like I have to deal with a site right now that has I don't know maybe 20 different videos that they upload it in LinkedIn so we got to migrate them to like Panopto and then we have to replace them every place they're used in the site and like that is going to take a lot of time and energy and I would much rather have prevented that problem and dealt with the initial request around like what's going on I can't upload this or in a perfect world on video upload attempt tell them where to put the videos and then guide them it you know much better so we have a we have a continuum of awful which is where a lot of my stuff is sometimes to optimal and if we can get anywhere in between that hey when so that's default registration stuff I did want to take a little bit of a tour of what we might do in gravity forms and as we're 27 minutes in I'm going to try and pick up the pace a little bit but this is again level 2 so we're a little bit faster we're a little bit more experienced so we will go faster so gravity forms let me show you which plugins are activated so I have gravity forms regular activated and I also have the gravity forms user registration add on activated so those are the two things turned on that will enable me to do this stuff and we'll just take a look an example of like doing user registration so I have a form here called register user I do encourage you to name these things really explicitly and well because again you will not always be there people move on also if you're anything like me you might not get back to this for months or years and then you look back and like I don't remember which one was which and you can see I've got create side duplicate side introductions test probably not a great name you know what am I testing but just you know just always be more explicit with your names than you feel like you should make it seem like you're talking to somebody who's never been to earth and has no idea what's going on alright so register user I like this because I can control all aspects of the registration process and I can use this to register users even if on the network settings I've turned user registration off and site creation off this will do that even if that stuff is shut down so that's something to know one pattern you might do is have user registration through gravity forms and allow any registered user to create sites so you can mix and match the patterns and where people do things kind of as it fits your method and model so one of the cool things about gravity forms is you can like I said customize kind of all aspects of this process you can cut it up into pages you can do stuff with HTML interspersed you can do that with user registration and WordPress but it's a lot more involved in the way that you're altering the template pages and it's just a bit harder and can feel kind of because it's not really made for you to do that and this you're kind of investing some time and energy in learning gravity forms but it's a lower technically and I think that there's a lot more built in sophistication like here too we can control the email communication and we can make multiple emails happen at different levels we can make them HTML rich we can do a confirmation message afterwards we can redirect after the submission we can do all that stuff and those skills apply outside of this particular process so it's kind of helping you and it's certainly a nice step into starting to customize things without having to become full on PHP programmer right so if we look at what I've got going on here we've just got a couple of fields notice I have an HTML block you know this again it's not optimal in terms of how you write this HTML but you can write the HTML and intersperse it in the form and we'll take a quick look at what this looks like at the moment by doing the preview but I can say things maybe at the right time like before choosing your username realize you have these choices this is going to impact this if you were trying to talk through like internet privacy and pseudononymity which is a fun word to say you know this is where you can do some of that clearly you'd want to do a better job in this you can intersperse pictures you could have links to additional content you know you could really think through like how are we trying to educate people so that when they get their account they've been fully informed this is also a great place to denote kind of the like the community standards to indicate with a check box or something that they're agreeing to this process all that stuff can be integrated in here pretty easily and you just want to make sure in this case you're getting the basics so we probably want the first and last names we're choosing a username a password and an email and you can see that these are fields that are available in a couple different ways so we've got our name got our username we have an email got our password so we're just dragging those things over and you can also take advantage of the other options that are available in gravity forms like if you wanted to have them choose whether they're a student or a faculty member this is a great place to add that sort of information and it becomes part of the gravity forms log which you can access via an API you could also get a little fans here and have it be an aspect of the profile and write that stuff in some sort of customized way we'll get into that today because we have a lot of stuff to go over still but this is the general process that you can create for registration certainly doesn't apply if you're doing single sign on but if you're doing that you're customizing maybe how you register for a site maybe you're just thinking through what's our process how are we handing off to different things that we control so that we can kind of shape things in the way that we want and this is a pretty decent way to shape things and let's take a look at kind of what that does so because we turned on user registration under settings here it's available as an option here's our user registration feed and what we do is we map things right so I am creating a user I've got that one checked you could also create a process that updates users you know if you want it to that could be awesome especially if you aren't doing single sign on for letting folks change names or nicknames or whatever too yeah that's a big one that comes up yeah and it lets you guide that process and maybe put some stoppers put some additional information again in ways that doing it via the traditional WordPress methods just don't so just keep in mind this is a builder for interactions that I can shape a lot more to my case and based on where I'm seeing problems so all this is doing is you're just kind of mapping stuff together it's a little bit like mail merge so my username thing is doing this my first name and last names and notice some of these are required but others aren't you can make people have particular roles when they're registering all that sort of thing and also you have the ability to do meta keys which are you know there's some default ones and then there's a whole bunch of other stuff here because I have a giant multi-site that gets beyond that is still a default user meta I think it is so you might just force them to have an aim account just because it would be funny and then you have these options so it's like I could check this box and create a site as part of this and do it all on this end so for instance if I wanted all sites to be the student username at the URL or a particular other thing this is one way to force that so think about it this way too this is not necessarily love all serve all you can have a generic process like this but you could have a specific one say for a particular course or portfolio pattern where you do want to force things that you don't want to for general users and so you could give that URL for that particular process to a subset of your users so you have some real flexibility there or if you are one of the people who do a fair amount is like we go to a class and everybody would sign up at once I don't love that because that offers certain opportunities for drama but if I was doing that I could have a URL that say automatically did the user registration and didn't require an approval and I could publish or unpublish that page as desired I can do lots of different tricks for lots of different audiences so just think through when you have that kind of flexibility you can do different things based on different needs what about the email stuff so I'm seeing checkboxes for sending email on registration and stuff like that does that conflict or anything with WordPress's own default like do you need to go turn them off at the multi-site level or they'll get to or anything like that here and you don't have to do it at the multi-site level and a lot of times what I will do is set notifications and use these instead of the network ones because I have so much more control over these so these notifications one I can have something happen and send to me two I could like in this process let's say we're not going to allow the user creation until it's approved by somebody a lot of different reasons you might do that in this case I can let them know hey when the form submit it send the email to the person who submitted it I can have a from name I can also have a from email and then this is pretty slick is that I can have a reply to email you know that's a thing that often gets missed you know you can make it feel one way here and this reply email might be something gross like say your support email is like a long thing that isn't affiliated with your domain then the reply to is a great place to put that so it feels like it's coming from something official even if this reply to email is a little bit often weird seeming so you can kind of switch things to create a certain feel for this it's also I always like pointing out anytime you have see a from email box that you can you know put anything in there but your success on spam delivery will depend on what you put in there so if you there are a lot of ways around it there are DNS ways and IT involved ways with SMTP and things but one really easy way if you're having trouble getting email delivered is to just use something that isn't your school's domain as a from email like you know using like RAM pages as an example that's not at vcu's domain name that's rampages.us and that does make the email situation a little bit easier honestly in some ways yeah and gravity forms tries to warn you to it's like hey this might be a problem you might want the email to match the domain so it's something to think about something to think about in terms of you know what that email even does at the domain level but here we get into hey what can you do here so I can get I can do all the stuff I want to do so I have the merge variables that gravity forms gives me you know that's in this drop down box so anything submitted by that and other fancy things I don't think I have any use for most of them in this particular message but it's good to know that thing exists and then I can get in here and use the whizzy wig editor to do quite a bit of stuff do keep in mind though that emails HTML email is kind of limited in certain ways like you can't use external style sheets the more complex you make this thing the more likely it's not going to look the way you want there are whole people who specialize in worrying about like writing HTML emails it's like a weird subcraft like I don't know creating miniature dill pickles the weird yeah strange people strange stuff I don't want to spend a whole lot of time doing that but generic things you can do here really nicely you get a very different look with the email that gets sent and I think because I am using my WP local for my dev environment it has kind of a cool thing that can help you here as you're trying to figure this stuff out so this is my environment that I run here to test things and under tools it has this thing called mail hog so I can open mail hog and I can see emails that are being sent out and go through and kind of go like oh what do these things look like and here's my thanks for signing up email and you can see that stuff is coming through in a nice HTML way not perfect but much better than just plain text I think so you have some of those options you can do some cool stuff and mail hog this used to be like super hard you had to set up a whole like crazy thing internally to make this work but now with WP local which I think WP engine owns now you can see the different emails and really start to understand what's going on in these communication patterns so that can be really nice and useful so just keep that in mind alright so we're 43 minutes in alright so I'm gonna we're gonna put that on the burner we can do redirects we can do a lot of different stuff off of this so just consider that tip of the iceberg pointing at potential options we could pass people off now to another thing that lists say hey if we knew they were faculty we could shift them into a page that lays out I don't know projects faculty portfolio sites gives them a hint of what they might want to think through and provide some examples and then allows them to create a site subsequently same thing with students or we could have a part of the student drop down that's like are you involved in which site which course and then route them through to a course site where they do something different including now that we got you as a user you're registered and we don't want you to create your own site we just want you to join this site we could make that an automated process through gravity forms maybe with some customization or we could have it be kind of a secondary thing where they since they're a user they go to the site and there's some plugins that allow you to join the site based on how you activate that particular plugin we'll put it in the show notes so to speak which plugin that is I believe Boone made it way back in the day but it definitely exists I think it's called join my multi-site or something like that the other thing I like here too you mentioned suggesting different use cases or plugins or themes or whatever for say students or faculty again I would do that on some kind of landing page somewhere say docks.stateu slash faculty and you can mention that in the form and then email them about it later too like remember that thing here's a page where you can look at it more if you want to having that stuff be at a publicly visible URL that folks can revisit and you can email to them so that they remember it is you're going to find more success I think with folks finding that useful you mentioned something that I was kind of thinking about the other day both in terms of domain on one's own and a scenario like this it's like wouldn't it be cool if I see they registered on date X and then I realized seven days have passed and they haven't logged back in or changed anything can I email them like a thing that's like hey just noticed you know it's that kind of just reaching out it feels kind of human and saying like do you need some help do you need some guidance do you want me to delete the domain of one's own account all of those things would be like a nice touch point and kind of keep me from having to one maybe it keeps the person engaged and two it keeps me from keep wasting resources that are just going to be abandoned for a whole year because and maybe I solicit feedback like why did you close you know why don't you want it maybe ask for that so there's some really nice communication patterns you can set up and that data is going to live in different places and you can query it in different ways but definitely doable and I think really advantageous and then you double down by those great URL kind of patterns you're talking about and where the documentation lives and you start to feel like hey this isn't a you know this isn't a gerry-rigged operation we're like professionals you know and it becomes just a very it's a nice feeling I think that you can give people and you can get and stuff like that alright let's let's hop over here here so you can see the dashboard can look a little cramped right so we've got in our case a little domain of one's own data in there which I like because I wanted it there but for different sites let me go some place and I didn't network activate this because I didn't want it to happen everywhere but I'm going to go to this dashboard and I'm going to turn on a plugin that I like because it starts to make again we have this dashboard can we make it can we make it something that's a little more functional so I might activate this on the WordPress multi-site network level and look what I've done the dashboard which people come to all the time is usually just this chaotic mess that everyone ignores no one is customizing it you know like that's just not what happens so you can do something with a plugin that cleans everything up and puts in what you want in this case I'm just doing a little bit of Swedish love with the Carl Stat University logo and then what this one does is it looks at the root site of our WordPress multi-site and pulls in any post that's tagged with support or categorized as support and it just displays it there and I think I have a limit of five and it's just a regular word pressy thing so you know it's just a way to turn this page into something more you could provide updates of different kinds here you can really think through what do I want this space to look like and how do I customize it and we'll take a quick look at what that looks like on the programming side again this is a nice kind of basic thing it's not too aggressive in terms of what it's doing and let's take a look at what's going on here so this is how we get rid of and all we're doing is I'll turn one on right now so I'll comment that one out and this is dashboard activity I'll refresh it and all of a sudden we have dashboard activity it's amazing how that automatically makes this thing feel so much busier isn't it it's like a very messy feeling thing and I don't know anyone really that uses this so what you can do figure out how to make stuff go away different plugins may have other stuff here so what I've done is I went through and removed a bunch of the default word press ones and I'll show you also I removed some from other things but if you inspect this thing here you can kind of see what the thing is called by this ID dashboard activity so you're right there so if we look back at what I made go away it's this right here and it's part of dashboard normal core and also notice that there's dashboard side core so it may take a little bit of messing around to figure out what the pattern is for the particular thing but you know it's there's not a whole lot of options in this and you can see activity right now comments site health I think it's just scary for people because it's none of your business and word press multi site I'm gonna worry about that you don't need to worry about site health and I can do that and you notice also I undid some things like I think this is a buddy press thing gravity forms so you can do all that and just remove the pieces you don't want and also notice look I did good comments to actually say what this was I should have done this up here too but you know like I said over comment make sure you're detailing the stuff that you want so this alone gets rid of all the stuff and then this little chunk up here is how you add a chunk so you got an action called WP dashboard setup we're gonna run this particular function this is the function where we're gonna add a dashboard widget and this is gonna be the name and that's a little bit of ugly HTML that I would probably do in a different way I probably reference template file these days but you know it shows you that even if you have no idea what you're doing you can still get stuff done it's just maybe not as pretty or elegant as you might in the future I've done a custom dashboard widget that was the ugly way and it works I love the idea of pulling in posts though because that's so much easier to update for anyone you don't have to message out to our users like alright go someone go update the custom plugins like no just make a new post that's brilliant also I'll just say for the color commentary that I'm here for dashboard normal core is my favorite punk subgenre well the next reclaim conference we'll see if we can get a band together and this is kind of interesting in terms of just looking at like what you can do when you're WordPress multi-site because what this query does is you see it switches to blog with ID one and then it runs the query as if you are in that blog that's really interesting because you could make a hidden blog right theoretically you could use any blog and not even it be a public page because it's querying from WordPress itself so right you wanted it to work that way yeah lots of neat tricks and this is the PHP way I don't know these days if I might not do it with JavaScript and you know the API and then just plop it in that way there's a million different ways to do this sort of stuff and deciding what it is you want to do is kind of both the beauty and the challenge so because again I'm saying this is round two this is less about A and more about here's your opportunity to customize here's your way to think about this and there are lots of different things maybe you don't want to learn much PHP you want to focus on JavaScript great there's a different way to approach this that would lead you to a different language but you have a lot of flexibility you have a lot of choice do different things based on what you want well will we be able to link to this yeah sure yeah yeah it's a fun one it's an easy one again not a complex thing like you can just get in here and bang around on stuff and try things and again have that local development environment so that you can tweak stuff see what happens maybe you break the site for a little bit that'd be awesome try and break it it's just a dev environment you won't you know worse things worse you destroy a dev environment done that before I've lost one that you know it's a little bit of hassle but it's no big deal alright so before before we go I have a whole five minutes to talk about cloning stuff alright so in this case I'm going to use an example right it's not a fully formed thing I've gotten it working before it involves NS cloner and sometimes that can be really wonky in different environments for different reasons but I want to show you kind of a conceptual idea that I think is interesting and that that that does does I think something kind of cool because a lot of what we're trying to do is walk people through like hey here's a cool idea or in this class you're going to use this we want to get you started really fast that may be choosing a particular theme having particular plugins activated or provisioning really default content or maybe all three of those things how do you do that how do you do that in a way that's both perhaps educational and that helps you understand what's going on in this case I have a custom post type I may call clone alright so I'm going to look at it in classic editor because I'm an old old man and it really is just doing a couple things here I could write some text here that describes what this is I put the site URL in so we know what to copy and then you see this stuff getting written down here these are all the copies that get made at that page and by default it sets the display to false but you can come through and make them public by saying true but it gives me a URL of the thing the name of the thing stuff like that so that I'll be able to track it now again this was made to go with a particular theme so this is going to be kind of ugly right clearly so I don't have the thumbnail in here I think I do for let's look at another one uh yeah I think I have for this one so there we've got our featured we have a little description we have some example sites not showing up at the moment but let's say we wanted this so we can say clone it and this is pulling up the gravity form it's selecting that I would hide this source if this was a functional thing but it just shows you that it's picking a particular item out of this I can give it a name uh let's call it all right I'll hit submit and this is where we'll probably have a little bit of an error but what it's doing is it's gravity forms is contacting nscloner look at our url hey it made it it applied a particular theme it copied the content over it activated whatever plugin for activate it all using nscloner and gravity forms so um you know it's the start of I think a really powerful thing because you can direct people to particular pages you can allow them to create these clones on their own you can keep track of what clones have been created and show additional examples and how things were tweaked and what it takes advantage of is where is our nscloner stuff there is nscloner documents kind of this this process you know this function that needs to run and what information it needs and that's what gravity forms is provisioning it's you know saying alright what's the clone mode what source id is it and gravity forms is saying the id of the blog on the network what's the name, what's the title um and then it does it now there are lots of different issues with this particular plugin there are certain errors that are kind of hard to suss out like if you try and duplicate to a URL that already exists what happens where does that error show up so like that that stuff has not been you know kind of well well figured out in part because nscloner keeps changing over time but maybe you don't use nscloner maybe you do some other stuff you know uh just brainstorming earlier we were talking about for a particular site it's really just an entry in the database table copy that to a new place you can figure out what theme it is same deal you can turn that on the content gets a little bit messier um and you know in particular certain plugins create whole table structures and knowing that that happened is also trickier like h5p might be a good example so there's some complexity there and it would work better in certain scenarios than others but like this isn't an impossible or even super complex problem to solve if you set some limits on what you expect from it and if you have a pretty constrained pattern here you know so it's just thinking about what am I going to get advantages of for this particular process what do I really want to get done and then maybe I'm not trying to be able to clone anything in the world I'm just trying to be able to clone these things because I do that regularly so what are my limitations maybe I don't worry about content at all maybe I do the import xml thing which I could trigger functionally you know using the traditional wordpress importer I don't know but trying to figure out like what's the easiest path for me in my process the reason it's so hard for plugin developers like nscloners they're trying to solve scenarios so here just kind of limit things to your scenario and it becomes more approachable more solvable there you know what not bad not terrible I think we started a little late but yeah this was great and a lot of stuff a lot of stuff yeah so we are you know going to be back with week 3 next week next week is week 3 and yeah any closing thoughts Taylor before we head out um no just make sure to look up dashboard normal core on bandcamp and and I would encourage folks in a serious way to you know these patterns these workflows right um that were encouraging to think about I'm sure you have thoughts or questions as you're saying how does this apply to my situation please put that in the discord because I think even thinking through that out loud um is helpful it's helpful for me to see for helping people but I think other schools other people will find it useful to say like ah yeah it applies in this way to this school um seeing those permutations I think is really useful and helpful so ask questions or say I'm going to implement it like this um we want to see that stuff so thanks yeah please please any any interactions I would appreciate any questions you know we would like help me make this stuff useful for you yeah and we will have the off like set office hours time later this week but um that doesn't mean that's the only time that you can post in discord you can post it anytime so we look forward to hearing from you all and thank you again Tom thanks Taylor for joining and see you next week