MSTW Schedule Builder

The MSTW Schedule Builder plugin creates round robin schedules for use in the MSTW League Manager plugin . It uses the data base structures defined in League Manager, and it has no front end displays other than the shortcodes provided by the League Manager plugin. Therefore, the MSTW League Manager plugin must be installed and activated before installing the MSTW Schedule Builder plugin.

How it works …

Begin by creating a league in MSTW League Manager with one or more seasons. The “league” could be an actual league, or it could be a “pseudo-league” consisting of the teams in a tournament. Next add teams to the league. (Remember that a team can be placed in more than one league.) Finally go to the MSTW Schedule Builder screen (shown below) and create a schedule for the league. Several options are available to control the schedule as described in detail on the Schedule Builder screen’s man page.

Schedule Builder Screen

The MSTW Schedule Builder plugin provides great flexibility in scheduling games, but at the top level two types of round robin schedules are supported – tournament schedules and league schedules. For tournaments, games are often played at the same facility – a group of courts or fields at the same location, a park or a gym for example.

The following paragraphs describe the settings and options available on the MSTW Schedule Builder’s main screen shown below.

  1. Select League & Season. Leagues with between 3 and 6 teams are shown in the dropdown. Future releases will support up to 32 teams.
  2. Schedule Type. Select single or double round robin. Currently only single round robin schedules are supported. Future releases will support double round robin schedules.
  1. Game Venues. Games can be played a one location (referred to as the “league venue”, or at the home team’s venue. If games will all be at a league venue, select it from the MSTW League Manager plugin’s venue database.
  2. Schedule Start Date. Enter a start date for the schedule. (See the note in item 6 below.)
  3. Game Start Time. Enter a default start time for ALL games, or leave it as TBA (to be announced). This can be convenient if a high school football league’s games start at 7pm on Friday nights.
  4. Game Days. Select the days on which games can be scheduled. For example, college football games are generally played on Saturdays and NFL games are played on Sundays, Mondays, and Thursdays. These dates can be edited on the Update Games screen
  5. Play Multiple Games on a day & Minimum Rest Time. These fields allow teams to play multiple games on day and define the time between games. Teams generally play more than one game a day in tournaments, but typically not in normal “league play”. If the Multiple Games box is checked, then the Minimum Rest Time determines how often they can play. For example, the tournament might choose to give teams 60 minutes rest between games. These fields are connected to fields 8 and 9 below.
  6. Game Length. The maximum length of a game. Some tournaments play games with fixed time limits. In other cases, games can run over the scheduled time. In such cases, choose a “nominal” game time and if the schedule slips, so be it. Just like in real life! A team that plays a game at time T will not be scheduled for another game until time T + the specified game length + specified the rest time.
  7. Total Games Per Day. This is the total number of ALL games on the schedule. This prevents games being schedules all day and all night. A little math is required by the user here. For example, if a tournament site has 4 Fields, the Game Length is 1 hour, and the tournament has the facility from 12:00 noon to 5:00 pm, then 4 games per hour times 5 hours equals 20 games per day. Games can be adjusted if necessary on Update Games screen after the schedule has been created.

Update Games

The MSTW Schedule Builder Update Games screen is a mini-version of the MSTW League Manager plugin Update Games (or Manage Games) screen. It offers one feature NOT provided by the MSTW League Manager Update Games screen – the ability to change the teams involved in a game. The reason is that the user creates the games in League Manager, so it provides the ability to update game status – scores, etc. – but the plugin’s algorithm creates the games in Schedule Builder. So there are reasons the user may wish to change a game’s participants.

  1. Update Tournament Table. Select the league (or tournament) you wish to update.
  2. Game Date & Time. Adjust game date and time as necessary.
  1. Home & Away Teams. For each game, the participating teams can be adjusted as necessary.
  2. Game Location. For tournaments it may be necessary to adjust game locations from the default (“League Gym”, for example) to a more specific field or court. (“League Gym, Court 4”, for example).
  3. Game Data. Update the game data that will appear on the front end displays (shortcodes).


The plugin can be installed via the standard WordPress plugin install methods.


1. Go to the Plugins->Installed plugins page in WordPress Admin.
2. Click on Add New.
3. Search for MSTW Schedule Builder.
4. Click “Install Now”.
5. Activate the plugin.
6. Use the new Schedule Builder admin menu to create round-robin schedules for leagues and tournaments.

The MANUAL way:

1. Download the plugin .zip file,, from the WordPress site.
2. Extract the contents of the file.
3. Via FTP, copy the entire /mstw-schedule-builder/ directory into the /wp-content/plugins/ directory on your WordPress host.
4. Go to the WordPress Admin Plugins page and activate the plugin.
5. Use the new Schedule Builder admin menu to create round-robin schedules for leagues and tournaments.


1. Download the plugin .zip file,, from the WordPress site.
2. Go to WordPress admin Plugins -> Add New -> Upload.
3. Locate the .zip file.
4. Click “Install Now”.
5. Activate the plugin.
6. Use the new Schedule Builder admin menu to create round-robin schedules for leagues and tournaments.

Frequently Asked Questions

Why can’t I activate the plugin? OR why doesn’t the plugin’s menu appear in my admin dashboard menu?

The MSTW League Manager plugin (version 2.5 or later) must be installed to activate and use the MSTW Schedule Builder plugin.

Can I create a double round robin (home & home) schedule?

This option will be available in a future release.

Can I create a schedule with more than 6 teams?

Tournaments up to 32 teams will be available in future releases.

Can I schedule games on multiple courts or fields at the same location?

This option will be available in a future release.

Schedule Builder Overview & Quickstart Guide


The MSTW Schedule Builder builds ‘balanced’ single round robin schedules for leagues and tournaments for up to six teams. Future releases will handle double round robin (home-and-home) schedules for up to thirty-two teams. NOTE: This plugin REQUIRES the MSTW LEAGUE MANAGER PLUGIN (version 2.5 for higher) to handle the creation of leagues, seasons, and teams.

Depending on the size of the league or tournament, the number of permutations and combinations of teams, time slots, dates, and locations can be huge. The simple (old) method of always having a single team always playing in the same time slot or position is not always the way to go. It can, and does, create problems with players, coaches, and fans because it can be inherently unfair. The issue is the quality of the first position time slot. If the time, location, and/or quality of the facility is desirable, then the team that’s always scheduled there will be advantaged, and the other teams will not share equal playing time at the desirable facility. If another time and location is less desirable (i.e., inconvenient time, long distance, poor quality of facility, etc.), then a team that is always scheduled to play there will be disadvantaged.

These issues and the inherent inequity are minimized by balanced schedules. Round robin scheduling includes a date, time, location, home and visitor teams, and game ID for each game. A quality schedule should distribute and balance the dates/days, times, locations, home and visiting teams of its games as equitably as possible.


The following steps will get Schedule Builder up and running quickly. View a quick tutorial on these steps here – COMING SOON!

  1. Teams & Leagues. MSTW League Manager (release 2.5 or later) MUST be installed and active before installing, activating and using MSTW Schedule builder. Begin by creating a league and adding teams to it in League Manager. For a tournament, create a league for it and add the teams. Remember that teams can be added to multiple leagues, so you won’t always have to create new teams.
  2. Schedule Builder Main Screen. Set the parameters for your tournament or league schedule, then create the games.
  3. Update Games Screen. If necessary, use the Update Games screen to adjust game times, dates, and locations.
  4. Use the MSTW League Manager shortcodes to create the desired front end displays for your site.

Display Settings

These settings control the data displayed and the colors of the staff tables [shortcode], the single coach profiles, and the coaches galleries. NOTE: It is strongly suggested that you use a custom stylesheet ( read more here) rather than using these color settings.

Data Field Settings

These settings provide control of the data fields and their labels to be shown on the front end displays.

Staff Table ([shortcode]) Settings

These settings are for the staff table shortcode. Leaving the default photo size as 125×125 pixels generally works out well, and avoids extra styling work.

Coach Profile Settings

These settings control the display of the single coach profiles.

Coaches Gallery Settings

These settings control the display of the coaches galleries.

Why a Child Theme?

This is WordPress 101, so more than you ever want to know about it is posted on the web and I’ll be very brief. MSTW plugin page templates and stylesheets can be customized for each site. The plugins will look for the appropriate files in the current theme directory, then in the plugin’s home directory.

If the files in the plugin’s directory are customized, then any new version of the plugin will overwrite those files. If you move the file to your theme’s directory, you have the same problem. Any new version of the theme will overwrite those files. Either way, your changes will be lost.

SO, always create a child theme and put any modified files in that theme’s directory. They will be safe there from both plugin and theme updates.

Coaching Staffs v1.4

While staying at home I got a bit crazy and decided to revisit one of the early MSTW plugins, Coaching Staffs. Although I was a bit chagrined by what I didn’t know about WordPress then, it’s actually a pretty cool plugin. It’s aimed at high school coaching staffs, where the same coach had different roles on different teams, e.g, Varsity defensive coordinator and JV head coach.

Anyway, the new release makes it much simpler and cleaner to customize the front end displays with custom CSS stylesheets. It also makes the use and deployment of the single coach profile/bio page and the coaching staff gallery page easier and more flexible.

So if you want to recognize your coaching staffs on your site, version 1.4 will be available soon on But you can check it out right now on

MSTW Team Rosters 4.2

I hope this note finds you all well during these trying times. I’ve been writing a little code while sheltering in place without spring sports, and MSTW Team Rosters release 4.2 will soon be available on and on your Installed Plugins admin screen. The primary upgrade is a long-requested feature – the capabilty to sort roster tables by number and name in the same way tables can be sorted by column on WordPress admin screens, e.g, All Posts or Team Rosters -> Manage Players. You can try it out on

Given that I’ll be holed up a bit longer, upcoming improvements include additional enhancements to the front end displays [shortcodes], improved integration with the MSTW League Manager plugin’s features, and the ability to manage team rosters by year. If any of you have requests for Team Rosters features please send them to me as soon as possible.