Understanding Email Users Options

Periodically I get support questions (on the WordPress Support forum) or comments here on my web site asking why Email Users doesn’t send email to some or all users as the plugin user expects it to.

Sometimes a user is dealing with an odd server restriction (e.g. email limits per hour, too many email addresses in the BCC field and others) but more frequently the target recipients don’t have their Email Users permissions set correctly.  This most frequently happens on a site where Email Users is added to a site that  already has a large set of users.

Email Users employs two options settings at the user level.  No matter what the settings are, any user within WordPress can always sent an email IF they are the only recipient.  This is by design.

The two settings are:

  • Allow Mass Emails:  Mass emails means that the user will accept email (Dashboard > Emails Users > Send to Users or Dasboard > Email Users > Send to Groups) where the resulting recipient list has more than one (1) recipient.  For a user in the WordPress database to receive email this permission must be enabled.
  • Allow Notifications:  Email Users has the ability to generate a notification email from a Post or Page (custom post types as well).  When using post or page notifications, only those users who have Notifications enabled will receive it.

Email Users has a default setting for these values which the WordPress admin can control.  It is on the plugin settings page (Dashboard > Settings > Email Users).


These settings apply to all new users and when the plugin is activated the first time, are applied to all existing users.  The third option allows users to change their own settings by visiting their profile page.  When this option is enabled and a user visits their profile page, the following options are available for the user to change.



The easiest way for the site administrator to review and change users’ settings, particularly on a site which has a lot of users, is to visit the User Settings Page (Dashboard > Email Users > User Settings).  This page will present all of the users (the number of users per page is set on the plugin settings page – see the image above for User Settings Table Rows) and their current settings.  The ability to perform bulk actions on a group of users is offered on this page.



So if your users aren’t receiving emails, check their settings before heading down the debug path, often the solution is as simply as turning on the Mass Email option for the various users.

Roster Export Improvements – Coming Soon!

Here is a tease of some improvements I am making to the Roster Export functionality.



Currently when the roster is exported there is no control over which swimmers are included.  All active swimmers are always included.  Similarly, each format must be exported separately.

This new functionality will allow the ability to export gender specific rosters and/or multiple formats at the same time.

The next release of wp-SwimTeam will also require an update to phpHtmlLib which I had to make in order to properly implement this functionality.

Stay tuned!

Two Minute Setup Guide

I don’t have much documentation for wp-SwimTeam.  It is on my to-do list but I haven’t made it a priority.  When I first started the plugin, there were not a lot of options and capabilities but that has changed over the past three years.  I get a few questions each week on where to start in order to use the plugin.  Today I wrote up a quick summary of the steps necessary to get wp-SwimTeam setup and usable.

I also frequently get asked about the various short codes available to put swim team information in posts and on pages.  I’ve started adding more information to the Demo site so the syntax of the short codes is clearer.  See this post as an example of the various ways a Swim Meet schedule can be displayed.

  1. Two Minute Setup Guide
  2. Demo wp-SwimTeam Site


Hiding a Google Form’s Title

Since a WordPress page or post will have a title, there is a good chance the Google Form’s title is redundant.  If hiding the title from the Google Form is desired, the easiest way to do it is with CSS.  The title on a Google Form is an H1 element  which is assigned the class ss-form-title.  To hide the title, we add the following CSS to either the theme’s CSS or to the CSS overrides available with the WordPress Google Form plugin’s setting menu.

h1.ss-form-title {
    display: none;

Using my Sample Form, here are the results of adding this CSS to the plugin settings.

Form before adding CSS

Adding CSS to wpGForm settings



Form After Adding CSS

WordPress Google Forms include quite a few CSS classes so using this technique, the appearance of the form can be customized quite a bit.

New Opt-In/Opt-Out Event model running

I have completed all of changes to support the opt-in/opt-out event model I described late last week.  I have not released the update yet as I am still doing some testing.  I have it running on the wp-SwimTeam demo site.  You can see an example of what one of the reports would look like when swimmers are registered on an event basis instead of a stroke basis.

While working on this I found some problems with the Events module which I have also fixed.  One was a very odd case which only was exposed in Chrome as it worked fine under IE9 and FireFox 4.  It turned out to be some sort of a Javascript difference between browsers so I have changed the GUI for the Load Events form.

If you switch from the stroke based model to the event based model for opt-in/opt-out, you may see some empty or unknown events for existing records.  These are due to a non-existent event id in the record.  It doesn’t really hurt anything but does look odd on the report so I plan to look into it.

I am looking for someone to do some testing before I release an update, if you want to help, get in touch with me.

Changes coming for Opt-In/Opt-Out

I’ve had an ongoing dialog with a team in Texas using wp-SwimTeam that has a much different usage model for participating in Swim Meets than the MacDolphins do.  Instead of registering or scratching for a meet, their team has their swimmers register for particular events.  In speaking with a parent of one of our year round swimmers, they do the same type of thing for their year round meets.

Wp-SwimTeam doesn’t currently support this usage model but I can see the need to do so.  The system already allows the definition and assignment of events to a swim meet, it needs to be extended to allow swimmers to register to particular events instead of the global Opt-In/Opt-Out option which is currently available.

I don’t plan to eliminate the current usage model because it works well for our swim team but I plan to extend it by allowing what I am referring to as the Opt-In/Opt-Out usage model which will either be by Stroke (the existing model) or by Event (the new model).

Fortunately the data model I set up when I first implemented Opt-In/Opt-Out will handle this change fairly easily with one exception.  For some odd reason I called the field in the database which stores the stroke code ‘eventcode’.  This was a bad idea and I am going to change it to ‘strokecode’ in the next release of the plugin which will cause a bump in the database version.  This isn’t the first time I’ve changed a database column name so I am not too worried about it but I wanted to be up front about what I am doing and why.

In the current Opt-In/Opt-Out Stroke based usage model a user can start from a swim meet and update all of their swimmers on a per meet basis or they can start from a swimmer and update all of the meets on a per swimmer basis.  This will remain the case.

However, for the Event based usage model all action will have to be initiated from the swimmer, it will not be possible to update multiple swimmers for a single meet.  This change is due to the swimmers being in different age groups so the events have to be relevant to a swimmer which isn’t possible (or easy anyway, I guess anything is possible) for multiple swimmers.

What about swim ups?  I am not sure how I want to handle swim ups right now.  In the first implementation I will allow an Admin user to register a swimmer into any event but a parent/guardian (standard user) will only be allowed to register their swimmer for the events that correspond to the swimmer’s age group.

Feel free to comment on whether or not I have missed anything and I am looking for someone to validate the usage model once I have it up and running on the wp-SwimTeam Demo site.

wp-SwimTeam v0.2.482 released!

This afternoon I uploaded v0.2.482 of wp-SwimTeam.  This release introduces the new Jobs module (aka Volunteers).  Please back up your database before upgrading as this version changes the structure of one of the tables and introduces two others.

Please let me know if you have any problems with this version.  I’ve done a fair amount of testing and I have it up and running on the MacDolphins web site.

The jobs module introduces two new short codes:

  • wpst_job_descriptions
  • wpst_meet_job_assignments

Example usage of these two new short codes can be found on the wp-SwimTeam demo site here and here.

There is also a new release of the phpHtmlLib plugin which wp-SwimTeam requires available.  This build addresses a minor issue exposed in WordPress 3.0 beta testing.

Hopefully the new Jobs module will be helpful for your team, I know it will be helpful for mine!

Export Roster to Meet Manager

If you have followed my posts on this blog you know that I have been frustrated by Hy-Tek Team Manager and Meet Manager along with Hy-Tek customer support.

While I may not care for Hy-Tek or their products, the fact is they have a dominant market share and a lot of teams use Team Manager, Meet Manager, or both.   I was  contacted this week by a high school coach who was looking for some SDIF assistance in getting his roster into Meet Manager.  Now I don’t have access to Meet Manager but I do have pretty good understanding of the SDIF specification so I was able to help him out with some example SDIF files.

In the process of helping him out I came across an old e-mail regarding importing a roster into Meet Manager.  At the time I was interested in Team Manager so didn’t give it a lot of thought.  Looking at the old e-mail I realized that if it worked, I could export the file format very easily from wp-SwimTeam.  I went ahead an implemented it, now I am looking for someone to try it out.

Sample Reports

Download Sample Exports Version v1

The zip file above contains three versions of the same roster – CSV, SDIF (.sd3), and Meet Manager Registration (.re1).  Extract the Meet Manager Registration file from the zip file.  It is an ASCII file that contains swimmers records, one per line with the following fields delimited by semicolons:

  1. Registration number
  2. Last name
  3. First name
  4. Middle initial
  5. Sex
  6. Birthdate
  7. Club abbreviation
  8. Club name
  9. Preferred first name
  10. ?? – unknown what this last field is; it’s always “N” in the examples provided

To import the file into Meet Manager, follow these steps:

  1. Set up a new meet database.  You only need to go through the first setup screen, the one where you put in the meet name, date, and length of course.  To make my particular file work, select “USA Swimming” for the ID format.  If you have something other than USA Swimming numbers for swimmer labels, select “Other”.  Normally, for a kids’ meet, you’d select “USA Swimming” for the ID format or “Other” if you are not using USA Swimmer numbers for simmer labels.
  2. From the main Meet Manager menu, select “FILE”
  3. Select “IMPORT”
  5. Locate and choose the .RE1 file that contains the roster.

After completing these steps, go to the “Athletes” screen in Meet Manager.  The swimmers contained int he RE1 file should bYou should see all of the athletes’ names that you saw in the RE1 file.

If this works for you, please leave a comment!

Demo Site up and running

I have an initial demo site up and running at http://demo.wp-swimteam.org/.  The demo site still has a few issues but I expect to flush those out of the next week or so.  If you are interested in this plugin and want to play around with it, feel free to register with the demo site and add some sample swimmers.  It will give you a feel for how the end users uses the site.

If you’d like to explore the administration aspect of the plugin, go ahead and register and I will give your User Id the appropriate permissions.  The demo site has been populated with a bunch of dummy users and swimmers and a few swim clubs.  A sample schedule has been set.

One thing about going through the process, it exposed a few things I failed to include in the GUI redesign!  I’ll fix those issues in the next couple days.

wp-SwimTeam-Demo plugin

When I am working on the plugin I find that I frequently need to populate the database with a bunch of user and swimmer information.  It is easy to add a few opponent swim clubs and some other information but adding a bunch of dummy users and swimmers takes a while.

This past weekend I started working on a separate plugin that will populate the database with a random number between 25 and 100 dummy users each with between 1 and 4 swimmers, each registered for the current season.  This generation of users and swimmers happens when the plugin is activated.  The plugin can be deactivated and then activated again to add additional users and swimmers.

This plugin was used to populate the database on the new wp-SwimTeam Demo site.