Volunteer Sign Up Sheets documentation
The Volunteer Sign Up Sheets plugin is a free plugin that you can download from the WordPress.org repository. Search for it from your Add New plugins page, or download it from WordPress.org and install it manually.
GENERAL INFO
Newest Features
Version 5.0
- New Validation system added, which allows volunteers to manage their signups without needing a WordPress user account. Check out the new Validation System tab for all the details and settings.
- CRON event logging feature added, which will also be used by extensions (as they are updated). If you don’t wish to receive email notifications of CRON actions, you can now view the log file on the CRON functions page, and can clear it manually at any time. Log files will be automatically cleared/reset every 30 days.
Version 4.6
- New option added to email settings page to enable sending emails in HTML format. If this is checked, the simple textarea input will change to the WordPress TinyMCE visual/text editor for email message templates. Line breaks in email templates will be converted to HTML with the WordPress wpautop function before sending the email. Disabled by default.
- New option added to enable automatic clear/deletion of expired sheets. This will delete the sheet from the database, along with all associated tasks and signups, a specified number of days after the sheet end date. You can also manually trigger this function from the CRON functions page to manually delete all expired sheets at any time. Previously there was only the option to clear expired signups, which did not remove old sheets and their tasks. This new option is disabled by default.
- New option to specify the number of days after the signup date, or the last sheet date, before clearing the sheets or signups. Default is 1 to be consistent with previous functionality. But, now you can increase this if you wish to automatically clean up your database, but want to give your managers some more time to be able to view/export the data before it’s cleared from the database.
- New option to hide the date header above the task tables when the sheet type is “Single”, as this might be considered redundant by showing the same date above each task table.
- User Signup Lists now have the sheet title linked to the individual sheet, as long as you have the “Volunteer Sign Up Page” set in the main options. It will link to that page with the sheet_id URL argument added so that the specific sheet is displayed. If you are using the Calendar extension and have that sheet linked to a calendar for view, the title will open the associated calendar for that sheet.
- Added a timestamp column to the signups table that will be set to the current timestamp based on your WordPress time zone when a signup is added. This field will be shown on the admin View Signups and View/Export All Data pages in a “Signup Time” column with date and time formatted as set in your WordPress general settings.
- New select options added to the add/edit sheet page to specify the recipients of signup confirmation and clear emails, which will override global email settings if you select anything other than default for each. You can choose from Default, Chairs, User, Both, or None. There are separate selections for signup confirmation emails and clear emails. These will be set to “default” to begin with, so global settings will still apply to all sheets unless you set these differently when adding a new sheet, or editing an existing sheet.
- Added code to prevent viewing or signup for a sheet that has been trashed. This is for those rare situations where a shortcode includes a specific sheet ID, or there was an old manual link that included the sheet ID, but that sheet has been trashed. Previously the sheet would still be shown (but not in the main list of sheets).
- Made the chair name(s) and chair email(s) fields no longer required when adding or editing a sheet. Note that this will result in a message on the sheet saying “No Event Chair contact info provided” (message can be changed or disable with the Customizer extension), and the reply to address will be set to the Reply-To email in the email settings, or the admin email if the Reply-To email is not set.
- data-label attribute added to each cell of tables, which is used in the mobile CSS added in this version (see below), but could also be used in any custom CSS or js to get the label/header for any cell.
- Added option to include some simple mobile CSS that will style the tables to a one column display on screen sizes less than 600px wide. Table headers are hidden and table cells will be displayed in block format so each cell takes the full width, and a label will be added to the left from the data-label attribute added to each cell.
- Modified and removed some of the default CSS table styling, and modified/added to some of the class names for elements, to work better with the new mobile CSS and Customizer extension.
Version 4.0
- New Admin Function – Move Signup. On the admin View Signups page for a sheet, in the actions column there is now a third icon (which WordPress dashicons says in the “schedule” icon) that will open up a page to move that signup to a different Sheet/Task/Date. Click on that icon, then select a sheet from the dropdown list (only sheets that aren’t expired will show, and only those that aren’t “No Signups” sheets). When you select a sheet, the Select Task dropdown select will show and be populated with all available tasks & dates for that sheet, with available meaning that there is at least as many open spots remaining as the quantity of the original signup. Once you select a task, a confirmation checkbox will appear that you must check to confirm you want to move the signup. NOTE! – This is a relatively simple function that ONLY changes the task ID and the date for the signup in the signups database table. If the Item Details, for example, doesn’t match between the original task and the one you move to, you’ll need to edit the signup to change the Item Details to make sense for the task you move the signup to. Similarly, if you are using Custom Fields and have created different signup templates to collect different information during signups, and the template for the task you move to doesn’t have the same set of fields, then you will again need to edit the signup after moving to fill in the correct information for those custom fields.
- New DataTables Feature – Save State. On the admin side, for the View Signups and the View/Export All Data tables, which use the DataTables plugin to view/filter/sort and export data, the Save State function has now been enabled via two new buttons. The “Create State” button will save the current state/view of the table into a new preset (there is no confirmation when you do this). The “Saved States” dropdown select button shows all the states you have saved for that particular table. Click the button then click on the State you wish to restore. You’ll also notice there is a dropdown arrow for each saved state that gives you further functions for that state: Update, Rename, and Remove.
- Two new checkboxes were added to the Email Settings section. One to disable Signup Confirmation emails and the other to disable Reminder Emails. This allows you to disable just those emails for any reason, without having to use the Disable ALL Emails checkbox.
- Translation Text Domain changed to fit what wordpress.org wants it to be so that you can now work on translations in your language at wordpress.org.
Go to: https://translate.wordpress.org/projects/wp-plugins/pta-volunteer-sign-up-sheets/
if you want to contribute to a translation in your language. Note there are old translation files in the /languages folder of my plugin that could make a good starting point. Most of them have not been updated in over a year, as they were all sent to me by people who took the time to create translations.
Version 3.6
- New Admin functions – Reschedule/Copy, and Multi-Copy of Sheets. Reschedule allows you to change dates and times of sheet and tasks and associated signups. Copy (different than the simple copy) allows you to copy the sheet, tasks, and signups (optional) to new dates and times, without deleting the original sheet. Multi-Copy allows you to specify an interval in days (such as 7 days for a weekly event), and the number of copies you wish to make, and then it will make that many copies of the sheet with new dates at the specified interval, also copying tasks and optionally copying the signups as well.
- New Reschedule Email Subject and Message template settings that will be used for the new Reschedule/Copy functions when you check the checkbox to send emails when using those functions. Since this could lead to a large number of emails for sheets with lots of tasks and signups, the signup IDs are saved in the database and the emails are sent out hourly during the same CRON job that sends out reminders. If you have a limit set for the max # of reminders to send out each hour, that limit is also used for Reschedule emails as well.
Security vs Convenience
This plugins allows for several levels of security and privacy, each being a little less convenient for both the end user and the admin.
Here are the security & privacy options from most strict to most relaxed, and how they affect convenience:
- User Account & Login Required: This is the highest level of security & privacy, and can be enhanced even more through the use of a Two-Factor Authentication plugin. In the Main Settings you can enable the first “Login Required?” option, which then require a user to be logged in to a WordPress user account before they can even view the signup sheets, let alone sign up for anything. This will ensure that no personal information you include on the sheets is ever seen by the public, unless they have an account on your site. You can enhance this even further by not showing phone numbers and emails in the lists of signup, or, even better, just showing a signup summary without showing anything at all about who else has signed up. Even if you display the names of people who have signed up, you can make sure you do NOT enable the function to show the full name, and then it only shows the first name and last initial. While this ensures the best security and privacy, it’s the least convenient in that users must sign up for a WordPress user account, with another user name and password to remember. It is also less convenient for the admin who must maintain user accounts, and monitor them for spam registrations. Since user account info is stored in the database, it will also require more resources on your server, and can potentially slow things down if you have many thousands of user accounts. However, one positive of requiring login is that users can see a list of what they have signed up for, and can clear their own signups if they need to for any reason (and if you allow that option).
- User Account & Login Required for Signup: Similar to above, but allows visitors to view the sign up sheets without having a user account, but forces them to login to a user account before they can sign up for anything. In this case, you need to be much more aware of privacy, and ensure that you do not show email or phone numbers in your signup lists. You probably should not show full names either, or, better yet, just show the signup summary to not show any personal info at all. This still allows users to view and clear their own signups when logged in, but still forces you to have user accounts.
- Validation & Require Validation to View: With the new Validation system introduced in version 5.0, you now have an option that falls between User Accounts and having things completely open to the world. Validation works by generating a long, unique code, that is attached to a link sent to the user via an email. If you enable the Require Validation to View option, then users will not be able to view any sheets, or sign up for anything, until they have filled out the validation form and clicked on the link in the email to ensure they are using a real email address that they have access to. Once they follow that link, a cookie will be set in their browser, allowing them to view and sign up for things without having to validate again until the cookie expires (you can determine how long the cookie lasts). There is also a link that allows them to immediately clear the cookie from their browser, for situations where they may be using a public computer, or if they need to validate as a different person perhaps to manage signups for other family members. Certainly real person spammers could use the validation form with a throw-away email account and verify themselves, so you still want to be careful what info you display in these cases. By default, email and phone are never shown to the public, and there isn’t even an option to show email in the main settings. You can only display the email column by using an argument in the shortcode or a setting in the new sign up sheet block. All the other security and privacy concerns from the above options still apply. Note that the validation form has a time limit that you can set before it can be submitted again by the same browser. The minimum time you can set is one minute. This would help to prevent rapid repeated form submissions by any real person spammers, as well as spambots that accept cookies, that find that page. At this time, it’s just a cookie set in the browser that expires at the time you set, and the validation form will not be shown if that cookie is present. Certainly a real spammer could clear or block the cookie, and a spambot could do the same, but every little bit helps. You just don’t want to overwhelm your email server with repeated rapid emails that get sent every time that form is filled out.
- Validation & Enable Signup Validation: This is similar to the above, but if you want to enable the general public to view sheets without being validated, or logged in, then you un-check the “Require Validation to View” option, and check the “Enable Signup Validation” checkbox. Now anyone from the public can view sheets and see the signup links. If they click on a signup link without first being validated with the validation form, then an encoded link will be sent to their email that they must click on to validate that signup. Unvalidated signups are automatically deleted after a time you specify (default is 1 hour). This is even more convenient, but does open you up even more to the possibility of spam signups. So, again, be very careful of what you display in your signup lists, and strongly consider just using the signup summary, since spam signups could contain text in the name field (or any custom fields you add with the Custom Fields extension) that you might not want displayed on your site.
- Existing User Accounts + Validation: This is just a note that you can use the two methods together. If you already have been using user accounts, those can still be used and it is recommended that you encourage those users to continue to login before signing up for anything. However, with the new Validation system, you can now allow new users to use view and signup for events without having to create a user account first, via any of the methods above. If you want to use this combination, you need to disable the options in the Main Settings that specifically require login to view, or login to signup. Then you would enable the validation system and the validation options you prefer. A logged in user is always considered validated and will not need to be validated through any email links. Users who are not logged into a user account will either need to be validated via the validation form, if you are not requiring validation to view the sheets, or they can validate via the signup validation email if you allow them to sign up before being validated.
- No User Accounts & No Validation: Obviously, this would be the least secure and would allow anyone, including spambots, to view and signup for things on your site, but it is the most convenient as it doesn’t require any additional actions. You would certainly not want to show any personal information in the list of signups for any sheet, and preferably just use the signup summary feature. There is a hidden spambot field that may catch some spambots. However, most spambots would not find the signup form anyway, as it’s not displayed by default anywhere. In order to get to the signup form, you have to click on the view link for a sheet first, and then click up on the signup link from one of the tasks. Only if those arguments are in the URL parameters will the signup form be displayed. Of course, you can use shortcode/block parameters to skip the first step, and show all the tasks/items for a sheet directly on a page, but they still need to follow one of the sign up links to sign up for something. You can also set it so the admin is sent an email whenever someone signs up, so they can monitor for spam signups and clear them at any time (admin can always clear signups from either the admin or the public side). In the future I’ll be adding a reCAPTCHA option, possibly via an extension, to cut down on spambot signups, for those rare cases where it becomes an issue.
- NOTE: To show ONLY a signup summary, that shows only the number of filled and open spots, there are two settings involved. First, check the option in the Main Settings that says “Hide volunteer names from public?”. If that is checked by itself, you will see an individual row for each signup or open spot, but it will just say “Filled” for the filled spots, and then a “Sign up” link for each open spot. To consolidate all of that into one row, you need to also check the Main Settings option that says “Consolidate remaining slots?” This will give you the most compact view, requiring only one row per task, which will say something like “1 Filled, 4 Remaining: Sign up”.
Feature Requests:
Have a new feature to request? Please add your feature requests to the feature request forum.I will use the feature request forum to try to keep track of the most popular feature requests, and will pick from those when (and if) I decide to add more features to the plugin.
Already this plugin has MANY more features than I originally intended, and MUCH more than we use for our school PTA site! It’s simply not possible or even practical for me to include all the feature requests that get sent my way. If I tried to make everyone happy and include every feature that people requested, the options would be overwhelming, and the plugin would be bloated to the point of greatly slowing sites down.
Whenever possible, if a feature request is popular enough, and won’t complicate or bloat the plugin too much, I will do my best to add it as I find time. Donations and great reviews are always encouraging!! Unfortunately, donations are extremely rare, and don’t come anywhere close to paying for the time involved to add just one small feature. Paying jobs always take priority.
If there is something you need right away, and it’s a feature that can be worked into an extension, or would be of benefit to many users, I will always consider subsidized development.
Other times I may decide to add features via a paid extension, so that they don’t over complicate and bloat the main plugin, and so they can help cover some of my development time. This way you can pick and choose only the extensions you need for the extra features you want. If you don’t see an extension that covers the features you need, I can always be hired to custom program one for you!
I also have been adding new features to the main plugin, as well as some of the extensions, as “subsidized” development jobs. If you have a feature that you absolutely need, and it’s something that I think may benefit other users as well, then I may consider moving it up to the top of my work list for a smaller subsidized fee for my development time. I usually do this more for paid extensions, and hope to make back my development time through additional sales.
SETTINGS
Main Settings
- Enable Test Mode — Pretty self-explanatory. Puts the entire system in test mode so that only admin level users can view sign-up sheets on the public side. All other users will see a message of your choosing
- Test Mode Message — The message you want displayed to the public on the page with your sign-up-sheet shortcode while in test mode.
- Volunteer Sign Up Page — Choose a page from the drop down select list where you have put the main volunteer short code. Links in the widget will go to this page, and this page needs to be set for those widget links to work correctly. However, you can now use the below option to bypass redirects to this page from sign-up links in task lists.
- Redirect Sign Ups to Main Page? — When checked (default) and a volunteer clicks on a sign-up link from the task list, they will be redirected to the main volunteer page (set above) for the sign-up form. The above setting is required for the Widget links to work properly, but you can now un-check this setting if you are using different sign-up sheet shortcodes on different pages to display specific sheets and want to keep the volunteers on that particular page when they go to the sign-up form.
- Suppress Duplicate Output? — When checked, the plugin will suppress duplicated signup forms and messages when you are using multiple shortcodes on the same page without using the redirect option (redirecting to a page with only one shortcode for signup). If you have a theme or plugin that is triggering shortcode functions more than once on a page, causing a blank page, or if you never use more than one shortcode on a page without redirecting, you can un-check this option.
- Use divs? — If you check this option, the sheets lists, individual sheet tasks lists, and volunteer sign-up lists (list of things the volunteer signed up for if they are logged in), will be output using divs styled as a table instead of using tables. This makes it easier to style the output the way you want using custom CSS, as well as the ability with custom CSS to make the lists more responsive and mobile friendly. Each div has an appropriate class name (or several classes), making it very easy to target specific parts of the list for custom styling (or to hide them completely).
- Disable plugin CSS? — Check this option to completely disable the output of the plugin’s CSS stylesheet. This way you don’t have to use things like “!important” to override the built-in styles. Use your browser inspector to get the classes for elements you want to style, or copy the plugin’s style sheet (inside the assets/css folder, it is the style.css file) to your theme and modify as desired.
- Enable Mobile CSS? — When checked, the plugin will queue a very small mobile CSS stylesheet to collapse plugin tables to a single column when screen width is less than 600px. This is independent of the above setting, so you can still disable the main css (above) and use custom CSS of your own, or from the Customizer extension, and still enqueue the mobile CSS. Disabled by default in case you are using something like my old Stacktables plugin to reformat tables for mobile. Note that this mobile CSS doesn’t work well with Stacktables, so you should use one or the other. If you wish to use the mobile CSS for the volunteer sign up sheet tables, but still need Stacktables for other tables on your site, you can disable Stacktables globally and use the shortcode to queue it only on the pages where you need it.
- Disable User Signups List? — When checked, the list that shows the loggged in user’s signups will NOT be shown below the list of signup sheets. You can then use the separate shortcode for the user signups list to display that list anywhere you wish.
- Hide Volunteer names from public? — When checked, it just shows a slot as “filled”. When not checked, it will show the first name and last initial of the person who signed up for that slot (no last names or contact info are ever shown to the public)
- Show full name? — When checked, and not hiding name (above), the full first and last names will be shown instead of first name and last initial.
- Consolidate remaining slots? — Condenses the layout of empty slots on task/item lists… very helpful if you have a lot of slots for a particular task/item and don’t want to show an empty row for each unfilled slot.
- Hide Details and Quantities — This is a global option that affects all sheets. If you check this, the Details and Quantities columns will NOT be shown on any sheet (in case you are using the item details field to collect personal info you don’t want to show to anyone else)
- Hide User Signups Details and Quantities — If checked the item details and quantity fields will be hidden from the list of User Signups, when a user is signed in.
- Hide chair contact info from public? — Although chairs and contact info are required when creating a sheet, you can check this option to not show the chairs and contact info to the public on your sheets.
- Hide Date header for Single date events? — Check this to hide the date header above the table for each task on the view sheet page when the sheet type is Single. The default single sheet view of this plugin puts each task in its own table and put the date, task title, and start/end times in a “header” above each table. If all your tasks are the same date (Single sheet type), then you may consider showing the date above each table redundant, in which case you can check this option to not show the date above each table.
- Show Ongoing events in Widget? — When checked, Ongoing event types will also be displayed in the sign-up sheets widget. Normally the widget will only show sheets with tasks that have dates that haven’t passed yet. Ongoing events don’t have dates, though, so if you include them in the widget they will always show up in the widget list of sheets.
- Show Ongoing events last? — This works with the above option, and determines if ongoing events are shown first or last in the widget sheet list.
- Phone Required? — Previously all sign-up form fields were required. Now with this option you can decide if the phone field is optional, without having to use the below option to completely remove it from the form. Default value is that phone is required.
- Remove Phone field from Signup form? — If you don’t need volunteers to provide a contact form number, you can check this box to remove the field from the signup form.
- Login Required? — If checked, only logged in users of your site will be able to view and sign up for any volunteer sheets.
- Login Required for Signup? — If you un-check the above box, but then check this box, visitors can view the sheets, but they will not be able sign-up until they login. An often asked for feature!
- Login Required Message — The message non-logged-in users will see on the volunteer sign-up sheets page if the above option is checked
- Login to Sign-Up Message — This message replaced the “sign up” text link when you have the “Login Required for Signup?” option checked.
- Read Only Signup? — When requiring users to be logged in to view or sign-up, when you check this option, the name and email fields will be filled from their user account info, and they won’t be able to modify it during the signup (input fields are set to read only).
- Show Login Link? — If you have the login required option set, checking this will show a login link under the login required message.
- Disable Login Notices? — Turns off the messages that strongly recommend they login before signing up (if they are not logged in and you are not requiring login).
- Prevent Global Overlapping Signups? — Checking this will prevent users from signing up for tasks on the same date with overlapping times. As opposed to the per sheet option, this will check ALL user signups across ALL sheets and, when enabled, will always check for overlaps, regardless of the per sheet setting.
- Show Task Description on Signup Form? — Check this to show the task description on the signup form, if you have entered any text in the task description field.
- Enable CRON Notifications? — A CRON job is a scheduled action that happens in the background. This plugin sets up two CRON jobs that are checked hourly. One checks to see if any reminder emails need to be sent, and they other checks to see if there are any expired signups that should be cleared from the database. WordPress has its own CRON function, which we use, but it will only get triggered when there is traffic to your site, so it’s possible that the CRON jobs will not run every hour. If you check this box an email will be sent to your admin email address when a CRON job is run that has any results, meaning some reminders were sent or some signups were deleted from the database. If no reminders were sent or no signups were deleted, you will not get an email.
- Detailed Reminder Notifications? — Admin reminder emails notification will include the message body of all reminders sent, useful for troubleshooting.
- Skip Signups Check? — Skips the check that compares current task signup count against the task quantity entered on the Admin edit tasks page. This will allow you to change the quantity for a task to a number lower than the number already signed up (useful if you want to save old signups for a recurring task, but change the quantity for future occurrences). NOTE: This will also skip the check for existing signups when you remove a task from a sheet! If you remove the task, you will no longer be able to view any signups for that tasks (even though they are still in the signups table).
- Show Expired Tasks? — If you want to view signup info even after the dates have expired, check this box. This ONLY affects the signup lists on the ADMIN side. The public sign up sheets will never show tasks/signups that have expired. Make sure the next option is NOT checked, or else old signups will be purged from the database and not viewable.
- Automatically clear expired signups? — Enables the hourly CRON function that checks for and deletes expired signups from the database. If you want to save your signup data after a task date has passed be sure to uncheck this and then check the above option to be able to view the expired tasks/signups on the admin side. If later on you want to manually delete all your expired signups, use the button on the CRON Functions page. For example, it is useful to clear all signups so that you can alter the dates on a sheet and reuse it for the following school year.
- Automatically clear expired sheets? — Automatically clears expired sheets, including all associated tasks and signups, from the database a specified number of days (below) after the last date for the sheet (runs with hourly CRON function). This is independent of the clear signups option above and will ALWAYS delete all associated tasks and signups from the database.
- # of days before clear? — # of days after the last sheet date (when clearing sheets automatically), or signup date (when clearing signups automatically), before clearing the sheet or signup from the database. Min/default is 1 calendar day. Note this is calendar days and NOT based on hours or task times. So, if you have a task that starts at 10pm on Tuesday, and it is the last date/time for the sheet, and you have this set to clear sheets one day after, then the next time the CRON functions gets triggered after midnight, the sheet will be cleared, along with all associated tasks and signups.
- Enable Sign-up form live search? — If you check this box, admin users can use the public side to sign-up other volunteers for tasks. Start typing in a first or last name on the sign-up form, and matching users/volunteers will show in a drop down list you can select to automatically fill the fields. When you submit the sign-up, that sign-up gets assigned to that user (if they have a user account on your site) instead of to your admin account.
- Live Search Tables — Select which tables to search for the above live search field. You can select WordPress Users, or the Sign-Ups table, or both.
- Admin Only Settings Access? — Check this to only allow Admin to access the Settings and CRON Functions pages for this plugin. This will prevent any users you gave the Sign Up Sheet Manager role to from changing any of the main plugin settings or manually triggering any of the CRON functions, while still allowing them to create sheets and view sheet data on the admin side.
- Disable Date/Time Translation? — This disables the WordPress date_i18n date/time translation function, instead uses the simple PHP date function to format dates and times. WordPress modified the way they do things in 5.3, and if any other plugin or theme is using the date_default_timezone_set function (WordPress specifically states that function should NOT be used any more), it could throw off the display times. This option will correct for that by using the simple PHP date function to format date and time displays. However, this will NOT allow translation, and so dates/times will be shown in the language locale set on your server.
- Disable Grouping? – Check this to disable the row grouping feature of DataTables on the admin side View Signups and View All Data pages. Checking this will completely disable that feature and show all columns by default.
- Show All Slots for All Data? – Check this to show each empty slot in its own row on the admin View/Export ALL Data page. Useful if you want to print a manual signup form for multiple sheets at once. NOTE that this will greatly slow down the load time and dataTables initialization time of that page.
Email Settings
- Send HTML emails? — If checked, emails will be sent in HTML format and you can use HTML tags in the email templates. When this is enabled (off by default), the textarea email template inputs will switch to the TinyMCE HTML editor, making creating HTML messages much easier. Old text only templates you created will still work properly when you switch to HTML format, and the WordPress wpautop function is used on the template to convert double line breaks to paragraph tags, so that your line spacing should remain the way you intended.
- FROM email — Enter the email address that you want set as the From address for signup confirmation and reminder emails. NOTE: if you use an SMTP plugin, this address may be overridden by your SMTP settings.
- Reply-To email — The reply-to email address for the same emails
- Reply-To Chairs? — Check this to have the reply-to emails be set from the chair emails. When checked, the above reply-to option is ignored.
- Confirmation email subject — Subject line of the confirmation email a volunteer receives when they sign up for something. This email is also copied to the contact emails for that sheet.
- Confirmation email template — Here is where you set up the confirmation email that a volunteer receives when they sign up for something. Curly brackets are used as placeholders for variables that you can embed into your email, and there is a list of the ones you can use below the text area. To avoid typos, just copy and paste the variable tags you want to use from the list below the textarea, including the curly brackets. These emails are sent as plain text, so do not use html.
- Reminder email subject — subject for reminder emails sent to volunteers if you entered values for 1st or 2nd reminders when you added a sheet.
- Reminder email template — works the same way as the Confirmation email template
- Reminder 2 email subject — subject for the second reminder emails sent to volunteers if you entered values for 1st or 2nd reminders when you added a sheet. If this if left blank (default), then the same subject will be used for both reminders.
- Reminder 2 email template — email template for the second reminder email. Leave this blank (default) to use the same template for both reminders. This is independent of the reminder 2 subject, so even if the reminder 2 subject is blank you can still create a separate message template, and vice versa.
- Max Reminders per Hour — if your hosting account places a limit on the number of outgoing emails per hour, it’s a good idea to set a number here to limit how many emails this plugin can send out per hour. Make sure to give yourself some margin to allow for other system emails as well. Leave blank or set to zero for no limit.
- Reschedule email subject — subject for the reschedule emails sent to volunteers if you check the box to send emails when using the Reschedule/Copy functions
- Reschedule email template — works the same way as the other email templates, but used if you check the box to send emails when using the Reschedule/Copy functions
- Separate CC/BCC to individual TO emails? — If checked, any CC or BCC email addresses (chairs, global CC, admin) will be sent individually as separate emails, as opposed to one email with several CC or BCC addresses in the header. This could solve some email issues on some servers when using the the built-in wp_mail function (PHP sendmail), instead of an SMTP email plugin (a better choice), where none or only some of the CC/BCC recipients actually get the email. Note, however, that this could send out a large number of emails at once, and you should be aware of any server limits on the number of emails sent per hour. Also, see this thread about WordPress emails.
- Send emails when clear from admin? — Check this option to send out the cleared signup email when a spot is cleared by the admin from the admin view signups page.
- Disable chair emails? — Check this to disable sending copies of all the signup, reminder, and cleared emails to the chair emails. If you have a lot of spots and lots of volunteers signing up, and regularly check the volunteers on your site, you may want to check this box if the chair email boxes are getting flooded with notifications.
- Disable Confirmation emails? — Check this to disable sending signup confirmation emails when someone signs up. NOTE: This will also disable emails to the sheet chairs or admin since those are just BCC fields in the confirmation email and not separate emails
- Disable Reminder emails? — Check this to disable the sending of ALL reminder emails.
- Disable ALL emails? — If checked, ALL emails will be disabled (including reminder emails). Useful if you want to clear and manually sign up users without emails being sent (when making corrections, for example). Reminders will start to get checked and sent again after you turn this off.
Validation Settings
A new “Validation Settings” tab is added to the Sign-up Sheets > Settings page. Read the new Security vs Convenience section for more detail about Validation vs User Accounts and different levels of security & privacy versus convenience.
Here are all the settings as of version 5.0.0, with more detailed explanation (if not obvious).
- Enable Validation: Check this to enable the validation features. Disabled by default. Must be enabled for any of the other settings/features below to apply.
- Require Validation to View: Similar to the main setting requiring login to view, this feature will require that a user be validated before they are even allowed to view, or sign up for, any sign up sheets. Note that users logged into a WordPress user account are also considered validated by default. So, if you are offering both methods on your site, you should un-check the main setting option that requires login to view as that will specifically require them to be logged into a user account. Using this setting instead will allow them to view the sign up sheets via either the validation system, or by logging in to an existing WordPress user account. Also note that if you enable this then you MUST enable the user validation form! You should also then select the page where you put the shortcode for the user validation form. In order to view and sign up for anything with this checkbox checked, they will need to fill out the user validation form and then click on the link sent in an email to them when they submit the form.
- Require Validation to Signup: Also similar to the main setting requiring login to signup, if you do NOT check the option above, then you can use this option to force visitors to be validated before they can sign up for anything. In order to do this, you MUST enable the validation for and select the Validation Page where you put the block or shortcode for the validation form. Validation links will get sent to that page. Note that if this is checked, then the Enable Signup Validation option below will be ignore since they must already be validated before they can sign up for anything.
- Validation Required Message: Define the message that will be shown if the above option is checked and the user is not validated or logged in.
- Validation Page link text: A link to your validation form page (set below) will be shown when validation is required. Here you can enter the text that will be used for that link.
- Validation Page: Select the page where you put the validation form shortcode [pta_validation_form], or where you added the Validation Form block. Note that you do not have to create a separate page, as you can add the shortcode or block to the main volunteer page, above or below the shortcode/block for the signup sheets. It could also be inserted on a page where you put the User Signups List shortcode or block, if you are using a separate page for that. The point is that you must select a page. Any validation links generated will use that page as the base URL for the link. If that page doesn’t exist, the code won’t be able to generate a link, and you’ll get a blank line in the email where you put the template tag for the validation code. As a fallback, if you don’t set a page here, then the link generator will automatically use the Volunteer Sign Up Page defined in the main settings. If that is also not set, then it will go to your home page. The links will be processed no matter what page it goes to, but success and error messages will only be shown on pages that contain a shortcode or block from this plugin.
- Enable Signup Validation: If this is enabled, and Enable Validation (first setting) is checked, then any user who is not logged in and not already validated, will be sent a validation email when they sign up for something. Of course, this doesn’t matter if you have the either “Require Validation to View” or the “Require Validation to Signup” option checked since they can’t get to the sign up form if they can’t view anything, or sign up, before being validated. With this option enabled, signups will be marked as unvalidated until the link in the email is visited. If you are not requiring user accounts, and not requiring validation to view, then this gives you a small extra layer of spam protection. It will not prevent automated bots from signing up, but those signups will be deleted after a set amount of time (below) if not validated. Real person spammers can still sign up if they are using a temporary/throw-away email that they can use to validate the sign up. Also, there is currently no sign up form submission rate limit, so it’s possible someone can quickly sign up multiple times and fill up sheets/tasks if left open to the public. However, since the form is only shown after first clicking on a sheet to view, and then clicking on the sign up link for an open spot, the chances of an automated bot signing up multiple times in a row is rare. Security nonces and hidden spambot fields are in the sign up form, and the page is redirected back to the sheet view after form submission, so it’s not possible to submit the same form repeatedly. This won’t stop a determined real person, though, although it’s probably not worth their trouble if you don’t reveal full names, phone, or email on the list of people who signed up.
- Signup Expiration (hours): If you enable signup validation (above), this determines how many hours the user has to validate their signup before it is deleted. The default/minimum is 1 hour. When the signup actually gets deleted depends on when the hourly CRON feature gets triggered (which also depends on website traffic, since the WordPress CRON system is not a true server CRON system). When the hourly CRON functions run, this plugin will look at any unvalidated signups in the signups database table, and delete any that are older than the time you set with this option. So, it will most likely be more than an hour until a signup actually gets deleted. A timestamp is saved with each signup to keep track of the time of the signup (which you can also view in the lists of signups on the admin side), and this is used to calculate when an unvalidated signup should be deleted.
- Signup Validation Email Subject: The subject of the signup validation email sent if Enable Signup Validation is enabled without the Require Validation to View setting enabled.
- Signup Validation Email Template: The template for the signup validation email sent. A very simple template is set by default. You MUST include the {validation_link} template tag in order for the user to be able to validate their signup. You can also use the other template tags listed at the bottom of the template editor.
- Disable CC for Signup Validation emails: Check this if you do NOT want to get copies the Signup Validation Emails, if you have a global CC email set. If the email is a signup validation email, and this option is checked, then that email will not get copied to the global CC email. If you want to get those notifications so that you know when unvalidated users are signing up for anything, then un-check this. If you are requiring validation to view or signup, then this won’t matter as they will need to validate via the signup for, which is a separate email that is not copied to any other emails.
- Enable User Validation Form: This is separate from the User Validation Form shortcode or block. Using the shortcode or block for the validation form will ignore this setting. This setting is to enable the display of the User Validation Form in place of the User Signups List when a user is not validated and logged in to a user account. If you have not disabled the showing of the User Signups List at the bottom of the main list of sheets, and you enabled this setting, it will be shown there. If you use the User Signups List shortcode or block on anywhere on your site, and enable this setting, then the form will be shown there when they are not validated. NOTE that some browser will delete all cookies when you close the browser completely, so it’s a good idea to have the Validation Form available and to maybe let your users know that they may need to change their privacy & security settings in their browser if they find out they need to validate again every time the close and then open their browser again.
- Validation Code Expiration (hours): This sets how long the user validation codes and cookies are valid for. The default is 48 hours. When the user clicks on a user or signup validation link in an email, a cookie is set in their browser to keep track of them. Cookies are set to expire after this amount of time, and any validation codes in the database are also deleted (via CRON functions) if they are older than this amount of time.
- User Validation Form Header: Use this to create the text/HTML that will appear above the validation form before they submit it.
- User Validation Email Subject: The email subject for the email sent when a user fills out the User Validation form.
- User Validation Email Template: Similar to the Signup Validation Email Template, but this is what is used when the User Validation form is submitted. Again, you MUST include the {validation_link} template tag to allow them to complete the validation. Other available template tags are listed below the template editor.
- Validation Form Resubmission Time (minutes): The amount of time that must pass before the validation form will show again to the same browser. Minimum/default is 1 minute. This should help to slow down on spam form submissions which could put a big email load on your server. This is accomplished by a simple browser cookie that expires after the set amount of time. So, it won’t work if the person clears their browser cookies, or if it’s a spambot that doesn’t accept and return the cookie.
- Enable Clear Validation link: This is something you should probably enable most of the time, and it will add a message and link in place of the validation form that allows the user to clear the validation cookie from their browser. This would be necessary if the user is using a public computer, or if they are signing up additional family members and need to validate with a different name or email.
- Clear Validation Message: If you enable the Clear Validation Link (above), you can create a text/html message to show above the clear validation link to give your users some details on what it does and when/why they should do it.
- Clear Validation link text: The text that will be used for the link to clear the user validation cookie from the browser. Default is “Clear Validation”.
Integration Settings
This page will show any options that are available for integrating with other supported plugins. Right now, this plugin only integrates with the PTA Member Directory & Contact Form plugin.
PTA Member Directory Integration settings
If you have the PTA Member Directory plugin, you can use it to specify a Position group of members to be the contacts for a volunteer sheet. For example, if you are having an Ice Cream Social and have the committee chairs for the ice cream social set up with the “position” of Ice Cream Social in your member directory, then you can specify that group as the contact for your Ice Cream Social volunteer sign-up sheet. If a volunteer clicks on the contact link on the Ice Cream Social volunteer page, they will be taken to the member directory contact form with that group pre-selected, and they can send a message to the group. Also, for the confirmation and reminder emails, the plugin will automatically extract the emails for all members of that group and list those emails in place of the {contact_emails} template tag.
- Enable PTA Member Directory — Turns on the integration with the Member Directory plugin
- Member Directory Page — Select the page where you have put the shortcode for your member directory.
- Contact Form Page — Select the page where you have put the shortcode for the PTA Member Directory contact form. This page will be linked to from the contact link on the sign-up sheet pages, and the group you specify as the contact for the sheet will be pre-selected in the contact form. Also works with the Gravity Forms extension.
User Roles – Sign-up Sheet Manager
CREATING SIGNUP SHEETS
Event Types
When adding a new sign-up sheet, there are four Event Types you can choose from:
- Single — This is for an event that happens on just one day. You will only be able to enter one date on the tasks screen that will apply to all items/tasks for this event type.
- Recurring — This is for an event that recurs on multiple days, but has the exact same items/tasks needed for each occurrence. For example, our school has Popcorn Fridays almost every Friday, and we need two poppers and one cashier each Friday. On the tasks screen for this event type, there will be a multi-date select box to allow you to set all the dates for this event, and then all of the tasks you enter will show up for each one of those dates. NOTE, it is possible to eventually fill up all the space allocated to this dates field, so if you have an event that recurs a very large number of times, you may need to limit how many upcoming dates you list at one time and deselect old dates after they have passed. We came across this problem with our Popcorn Fridays event for our school, but after I figured out the problem, I more than doubled the available size for this field.
- Multi-Day — This is an event that happens across more than one day, but that has different tasks/items needed for each day. For example, we use it for our Book Fairs, where we have a “set up” day and a “take down” day where we just need a certain number of bodies to help, and then for the week of the book fair we need a certain number of cashiers and book finders/floaters for each day. For these Multi-Day event types, each task/item has its own single date picker field to specify the date for that item/task.
- Onging — This type of sheet doesn’t have any dates associated with it. These are for more general volunteer type opportunities that don’t have specific date/time type requirements, but are needed at various times throughout the year. For example, you could use it to get volunteers for Yearbook photographers, Webmasters, Art Docents, classroom helpers, etc.
Adding a new Sign-up Sheet
From the admin dashboard, you can create a new sign-up sheet with the “Add New” submenu page under Sign-Up sheets, or by clicking on the “Add New” button at the top of the “All Sheets” list.The forms for entering a new sign-up sheet are split across 2 pages, the first being for the main event type and details, and the second is where you set up all the items/tasks needed. Once a sheet has been saved, there will be an “Edit Sheet” and an “Edit Tasks” link for each sheet when you hover over the name.
Add/Edit Sheet
This is the page where you set up the Event Title, Type of Event, Contact Info, and the Event Details. You can only select the Event Type when adding a new sheet. Once that sheet has been saved, you can’t change its event type as the task data is saved differently for each type of event and would not translate properly to a different event type.
Most of the fields here should be self explanatory.
No Signup Event? Checking this box lets you create an event that doesn’t need anyone to sign up, but still lets you create simple tasks/items. This is so you can show other types of events, which don’t require volunteers, in the main sheet list, the widget, or the calendar extension.
Reminders: You can have up to two automatic email reminders sent out to volunteers. To set up a reminder, simply enter the number of days before the task/event date that you want the email sent. For example, you may want to send out the first set of reminders 7 days before an event/task, and the second set of reminders the day before. If you don’t want any reminders sent, just leave these fields blank or set them to 0. Note that the date that the reminder function checks against is the date for each task, so it works properly for recurring events or multi-day events. If you use an Ongoing even type, these fields won’t have any effect and reminders won’t be sent.
Show Clear links for signups? This is checked by default to be compatible with older versions. Un-checking this will remove the clear links from the public side, so that volunteers (if they were logged in when they signed up) can not clear their own sign-ups.
Clear links and # of days: Added in version 1.8, you can now decide if you want to allow volunteers to be able to clear themselves from an item/task they signed up for. Uncheck the box to completely disable the clear links for all signups on the sheet. If you leave it checked, you can also specify a # of days before the event after which they can no longer clear their signups. For example, if you set this to 2 for a task/item scheduled for a Friday, then they can only clear their signups before Wednesday. From Wednesday on the clear link will not be shown. Please note that this only works if your volunteers all have user accounts on your site and if they were logged into their account when they signed up, or, if they weren’t logged in, they used their registered email. They only see the list of items they have signed up for on the main sign-up sheet page if they are logged into their user account.
Allow Duplicate Signup Times? Allows volunteers to sign-up for different tasks (on the same sheet) that have overlapping times.
Sheet Email Options: Added in version 4.6.0, you can now override the global email settings on a per sheet basis to determine who should receive confirmation and clear emails (separate select option for each). If you leave these to the default setting of “Default”, then the global settings will apply. However, if you change them to anything else, then they will override any global settings (including the global setting to disable all emails).
Contact Info: Contact info is required. If you don’t have the PTA Member Directory plugin and the integration enabled, then you must enter at least one name and email for the contact info. Multiple names and emails can be entered by separating each by a comma. If you do have the Member Directory plugin and integration is enabled, then you will see a select box with Positions from the Member Directory as choices. You may then select one of those Positions to act as the contact for the sheet/event. If the public clicks on the contact link on the sign-up sheet page for that event, they will be taken to the contact form with that position pre-selected as the recipient group. That contact message will be sent to all members who hold that position. Alternately, instead of selecting a position (in case you chose not to show positions in your contact form, for example, or you don’t want to use them as contacts), you can still enter names and emails in the boxes provide. NOTE, you are not allowed to do both — i.e., you can’t select a Position and also enter names/emails.
Program/Event Details: Although this field is optional, it is probably the best place to put all your detailed info about an event that you want to present on a sign-up page. This will then be generated by the shortcode when a volunteer clicks through to this specific sign-up page. This way you can just have one page for ALL of your volunteer events that you put the main shortcode on. That will show a list of all available volunteer opportunities, and when they click through to one of the sheets/events they can see full details as well as a listing of all the tasks that they can sign up for.
Add/Edit Tasks/Items
The page to add or edit tasks/items should also be mostly self-explanatory, but a few things will change depending on the type of event selected.For Single and Recurring event types, the first field on the page will be for date/dates. For Single events, you may select only one date with the pop-up date picker. For Recurring events, you can select many dates, but you MUST select at least 2 dates (otherwise, it’s really a single event). You can then add/remove and sort taks/items as needed.
The only required fields for Tasks/Items is a name and # of People/Items needed. If you don’t enter a number for # of People/Items needed, the plugin will assume you meant to enter a 1 and fill that in for you when you save the tasks. Other fields are optional.
For Multi-Day events, the main difference is that the date field at the top will be removed, and instead each Task/Item will have its own date field, for which you can pick only one date.
For Ongoing events, you will not see any date fields at all on the add/edit tasks page. Everything else functions the same as above.
Add/Edit Task Description – Added in version 3, you can click on this text link to add an optional description for each task. A small textarea input will open where you can add the description. You can use HTML within the description. This description will show above the table for the task on the public side, if it is not blank for that task.
Details Needed – Originally, this field was set up for our own organization for staff lunches where people would sign up to bring something like a “main dish”, and we wanted them to specify the exact dish they were bringing to avoid duplicates by other volunteers. However, users of this plugin have found many other uses for this field, and options have been added to make it more flexible. When you check the “Details Needed” check box, a text field will open allowing you to specify the label that will be used for the text input field on the sign up form. There is an option on the main settings page to hide the details field from the public side, which makes it possible to use this field to collect additional info from your volunteer without it being publicly displayed. Version 2 also adds an additional check box for each task, that is shown when you check “Details Needed”, and that allows you to determine if the details field is required on the sign up form (default). You can un-check that option to make that input field not required to complete the sign-up, allowing you to collect optional extra info for the task/item.
Move tasks – This is a relatively new feature that allows you to move all tasks from the current sheet to another sheet (this is a function added by another contributor). Useful if you want to merge events from two sheets into one, or to “copy” tasks from an old sheet to a new sheet without simply using the copy function from the main sheets list. Please note that the tasks are MOVED (NOT copied) by simply reassigning the sheet id in the database table that stores the tasks, so once you do the move operation, you will lose all tasks in the current sheet.
ADMIN
Administration – All Sheets
Once you have some sheets added, there are several things you can do from the Admin section of this plugin. On the All Sheets page you will see a list-table of all sheets currently in the system, along with some basic info for each.If you hover over the title of any sheet, you will see the following option links:
- View Sign-ups — Takes you to a detailed list table with a list of all volunteers who have signed up, along with their full contact info, and links to clear or edit each signup, or add signups manually.
- Edit Sheet — Takes you to the edit sheet page for that event (see above)
- Edit Tasks — Takes you to the edit tasks page for that event (see above)
- Copy — Makes a copy of the sheet, appending “copy” to the name. Useful if you have a couple of events that have very similar requirements, as it will copy all sheet and tasks you have entered, and then you can change the name and any other details on the copy you created for the second event. Does NOT copy signups and does NOT change any dates or times (you need to manually edit and change those)
- Reschedule/Copy — Opens a new form allowing you to choose from three methods: Reschedule, Copy, and Multi-Copy. These functions will change dates/times and will optionally copy signups as well. You can also optionally send the Reschedule emails. More details on each function below. Currently only works with Single and Multi-Day sheets
- Trash — Moves the sheet to the trash, but does not permanently delete it (click on trash at the top of the table to view trashed sheets and permanently delete them)
Reschedule — If you select this option from the Reschedule/Copy form, you can select a new sheet date for Single type sheets, or a new date for each task for Multi-Day type sheets. For either sheet type you can optionally also select new start and end times for each task (leave blank to keep the original start/end times). Reschedule does NOT create any new database entries. Instead it modifies the dates and times of the existing sheet, tasks, and signups. Other form options are below:
- Clear Signups – If you check this box, all of the current signups for the sheet and all tasks will be deleted.
- Send Emails – If you check this box, the Reschedule email will be sent to all current signups for the sheet/tasks (they will be queued up to be sent during the hourly CRON function)
Copy — (from the Reschedule/Copy form page) — With this, you can create an all new copy of the sheet, tasks, and optionally signups, to new dates and times. Works the same way as reschedule, with the same form options, except that the old sheet, tasks, and signups are not change. Instead it creates a new sheet (with the same name), new tasks, and optionally new signups. If you check the “Clear Signups” checkbox for the copy function, the signups will NOT be copied to the new sheet, but they will still remain for the old sheet.
Multi-Copy — This function can be used as a sort of work around to create repeating style events, that repeat at a certain interval of days. You can optionally multi-copy the signups, or use the “clear signups” checkbox to create copies without any signups. If you select this option, then instead of specifying new dates for the sheet/tasks, you will be presented with two new inputs:
- Offset Interval in Days — Specify the number of days to add to the dates for the sheet or tasks. For Single type sheets, this will be the main sheet date and is the same for all tasks. For Multi-Day sheets, this interval will be added to the date for each task. A good example would be if you had a Multi-Day sheet set up for some weekday events (Monday through Friday). If you want to repeat those every week, you could use Multi-Copy and set the interval to 7.
- Number of Copies — Sets the number of copies to make at the specified intervals. You may be limited by your server as to how many copies you can make at once without the server timing out, but you can always use the function multiple times to create as many copies as you need.
Visibility — There is a “Visible” column for each sheet on the All Sheets list table. If a sheet is hidden from the public, you will see a red “NO” listed in the column. If you go to the public side, those sheets will not show up in the main volunteer page list or in the widgets unless you are logged in as admin or volunteer sheet manager (in which case you will see the sheet listed, but there will be some red text below it to remind you that the sheet is hidden from the public). Click on “Yes” or “NO” to toggle the visibility of a sheet. It may be useful to have a sheet hidden while you are getting it set up and testing things out, or if you don’t want to make sign-ups available until a certain date.
Bulk Actions — From the main All Sheets list you can use bulk actions to trash or toggle the visibility of several sheets at once. While you are in the trash bin, you can use bulk actions to permanently delete or restore multiple sheets at once.
View/Export ALL Data — The old button that exported all data to CSV has now been changed to this new View/Export ALL Data button. Clicking on this button will now load ALL existing signup data into one large table, using the jQuery DataTables plugin for display. From there you can sort, filter, search, and show/hide columns, to organize your data anyway that you want, and then direct print or export that data to Excel, CSV, or PDF formats. See the next section below for more details on how to use DataTables, as it works the same way as on the individual “View Sign-ups” page.
View Sign-ups Page and DataTables
This is where you can view all your detailed sign-up information for an event. Full name and contact information is shown for each volunteer, and there is a “Clear Spot” link if you need to remove a volunteer from a spot.
The “Actions” column at the end of each row now includes a trash/delete icon, an edit (pencil) icon, and a move (schedule) icon for each signup. Clicking the trash icon will clear that signup (no undo!). Clicking the pencil icon allows you to edit the info for that signup. On empty slots, there will be a Plus (Add Signup) icon to allow you to manually add a signup for that task.
Move Signup. Added in version 4.0.0. On the admin View Signups page for a sheet, in the actions column there is now a third icon (which WordPress dashicons says in the “schedule” icon) that will open up a page to move that signup to a different Sheet/Task/Date. Click on that icon, then select a sheet from the dropdown list (only sheets that aren’t expired will show, and only those that aren’t “No Signups” sheets). When you select a sheet, the Select Task dropdown select will show and be populated with all available tasks & dates for that sheet, with available meaning that there is at least as many open spots remaining as the quantity of the original signup. Once you select a task, a confirmation checkbox will appear that you must check to confirm you want to move the signup. NOTE! – This is a relatively simple function that ONLY changes the task ID and the date for the signup in the signups database table. If the Item Details, for example, doesn’t match between the original task and the one you move to, you’ll need to edit the signup to change the Item Details to make sense for the task you move the signup to. Similarly, if you are using Custom Fields and have created different signup templates to collect different information during signups, and the template for the task you move to doesn’t have the same set of fields, then you will again need to edit the signup after moving to fill in the correct information for those custom fields.
DataTables display and functions
Version 3 changed the View Signups page display to use the jQuery DataTables plugin. By default, some columns will be hidden, such as Task/Item and Date, and the tasks will appear in the ordered entered for the sheet. Group Headings show the task title and date, but those are not printed/exported unless you make those columns visible. You can show or hide any columns using the “Column Visibility” button. If you want to print or export your data, I would suggest hiding the “Actions” column and showing the “Task/Item” and possibly the “Date” columns. If you do NOT want to view, export, or print empty slots, click on the “Hide Remaining” button, which will remove those from the table. If you need to see them again, you will need to reload the page. You can also click on the “Disable Grouping” button to remove the group heading rows, at which point you may wish to make the corresponding columns visible. You can also check the option in the main settings to disable grouping completely for the DataTables.
You can sort by clicking on any of the column headers, and clicking multiple times on the same header toggles between ascending and descending sort order. At the bottom of each column are select boxes that will allow you to select a value for that column, which will then only show entries that have that value. The search box allows you to search for any value within the table and filter to show only rows that match your search text. The searches and filter select boxes only hide/show items, so you don’t need to reload a page if you want to see everything again (just clear the search box, or select “Show All” for the column select filter).
Starting with version 4.1.0 you can also drag and drop the column headers to reorder the columns in the order that you want them for printing or exporting. Note that the dropdown select filters at the bottom of each column need to be destroyed and recreated when you reorder the columns, so they will display the “Show All” value even if you have already filtered by a column value (table rows will still be filtered). It’s best to do the column reordering first, and then do any filtering and sorting that you want.
Once you have your table showing things the way you want, you can use any of the first four buttons to export or print your table info.
New DataTables Feature – Save State. Added in version 4.0. On the admin side, for the View Signups and the View/Export All Data tables, which use the DataTables plugin to view/filter/sort and export data, the Save State function has now been enabled via two new buttons. The “Create State” button will save the current state/view of the table into a new preset (there is no confirmation when you do this). The “Saved States” dropdown select button shows all the states you have saved for that particular table. Click the button then click on the State you wish to restore. You’ll also notice there is a dropdown arrow for each saved state that gives you further functions for that state: Update, Rename, and Remove.
CRON Functions (admin)
The CRON Functions admin page will show you some information about the CRON reminder functions, and also will allow you to manually clear expired signups if you disabled their automatic clearing.In the reminders section, you’ll see data for the last time any reminder emails were actually sent, and then data for the last time the reminders were actually sent. If the CRON function has never run, or no reminders have ever been sent, you may see some strange date/times here. If you are testing, and don’t want to wait for the next hourly CRON reminder check, you can click the Send Reminders button to run the reminders check manually.
Version 4.7.0 adds a readonly textarea that shows any log messages generated by the CRON functions, which can be helpful when debugging. There is a button below the textarea to allow you to manually clear the log file, if desired. All log files in the /uploads/pta-logs directory will be automatically cleared/reset every 30 days, to keep their size manageable.
Email Volunteers
VALIDATION SYSTEM
Validation System Overview
Purpose and Benefits
The validation system allows volunteers to manage their signups without needing a WordPress user account. This feature provides several key benefits:
- Volunteers can view and manage all their signups
- Site owners don’t need to maintain WordPress user accounts
- Reduces spam signups through email validation
- Maintains security while improving user experience
How It Works
When a volunteer signs up for their first event:
- They provide their name and email
- The system generates a unique validation code
- An email containing a validation link is sent to their address
- Clicking the link validates their identity
- A cookie is set in their browser to maintain validation
Once validated:
- Volunteers can sign up for additional events without re-validating
- They can view all their signups
- They can clear their own signups when needed
- The validation remains active until the cookie expires
- Volunteers can re-validate using the validation form.
- Optionally, you can have volunteers use the validation form first to become validated before signing up for anything.
PUBLIC SIDE
Blocks & Shortcodes
Version 5 adds updated blocks to replace shortcodes for the volunteer sign up sheets. These blocks are built around the latest WordPress blocks API, and will generate live previews of the current output as you adjust the parameters. The blocks can be found in the “Widgets” category, and they include the main “Sign Up Sheets” block, the “User Signups List” block, and the “User Validation Form” block. There is also a block to replace the old sidebar widget that shows a small list of upcoming events, which can also be found in “Widgets” with the title “Upcoming Events”. The original Sign Up Sheets block from several version back will still show up with (Legacy) after its name. If you were using it on a page, it will still function, but if you edit that page you will see a notice that it has been deprecated and there will be a button you can press to convert it to the new version block.
Sign Up Sheets parameters:
Most of these are self-explanatory, and when you use the Sign Up Sheets block, you can see the changes in real time. Note that some of the parameters, such as Show Headers, Show Time, Show Phone and Show Email only apply to an individual sheet when you have the main settings to not hide volunteer names from the public. NOTE: These ONLY work on the default layout that the main plugin creates. If you are using the Customizer Extension to create custom layouts for the individual Sheet view, those layout templates will determine what is shown, and these parameters will have no effect. In order to see the effect of the parameters that affect the default single sheet view with the live block preview, just set the Sheet ID parameter to one of your existing sheets, and then you will see what that sheet with look like with the current block parameters. Just remember to set it back to blank in order to display the main list of sheets.
If you prefer the WordPress classic editor and using shortcodes, then all you really need to make all the features available to the public is to create a page for your Vounteer sign-up system and insert the main shortcode:
[pta_sign_up_sheet]
Additionally, there are shortcodes for the User Signups List and the new User Validation Form.
[pta_user_signups]
[pta_validation_form]
It is also recommended that you don’t put any other content in the content area of the page or post that you insert the main block or shortcode since the shortcode will generate different content depending on actions that the user takes.
Public functionality
On the page that you put the main block or shortcode, there will first appear a simple list-table of current volunteer sign-up sheets with start date, end date, and links to “View & sign-up” for each sheet. The default heading of “Current Volunteer Sign-up Sheets” above that table can be changed by changing the List Title in the block, or adding a “list_title” argument to the shortcode, such as: list_title=”My New Title”
This list will ONLY show sheets where there are still items/tasks whose dates have not already passed. If it’s a recurring or multi-day event, the sheet will still be in the list as long as there still are some dates for items/tasks that have not expired yet. Expired tasks/items will not be counted in the “Open Slots” calculations.
If a user is logged in and has already signed up for anything, then below that main list will be another list showing everything they have signed up for along with a “clear” link that they can use to remove themselves from a sign-up. This is the User Signups list, which can also be displayed via its block or shortcode. If you want to put the User Signups List on another page, just use the block or shortcode. You can then use the option in the main settings to disable the User Signups List at the bottom of the main volunteer output.
When a volunteer clicks on a sheet title or the “View & sign-up” link, the page refreshes and they will see the details for that specific sheet/event. Title, contact info, and any details will be shown at the top, followed by a table of all upcoming tasks/items. For each available spot that has not been filled yet, there will be a “Sign up” link.
When a volunteer clicks on the sign up link for an open spot, the page refreshes and they are shown a simple sign-up form where they enter first name, last name, email, and phone. If the task/item requires details, then there will be an input box for them to enter the task/item details (such as what dish they are bringing to a lunch). If the user is logged in, then their contact info will already be filled in for them if it has already been stored in their user profile (as a minimum, each user account needs an email, so that will always be filled in for logged in users). If they don’t have first name, last name, or phone already stored in their user meta, then after they sign up for their first volunteer slot, that information will be added to the user’s meta, and they won’t have to fill it in for future volunteer sign-ups.
Note that there is a hidden “honeypot” style spambot field on the signup form to help reduce/prevent spam signups from bots (if your signup forms are open to the public). There is nothing to configure for the spambot field.
After a user signs-up for a slot, they will immediately be emailed a confirmation with all the details, and a copy of that will also be sent to the contacts specified for the event.
Displaying a Sign-up Sheet on its own page
If you have a page where you always want to show the list of available sign-ups for a particular event/sheet, you can add the Sheet ID in the block editor, or add an “id” argument to the shortcode. You need to look at the All Sheets list on the admin side to find the ID for a sheet, and then you can add the argument the block or to the shortcode in the format:id=”1″
With this argument included, the main list of all sign-up sheets will not be displayed, instead you will see the details and list of available sign-ups for that particular sheet. If you have the “Redirect Sign Ups to Main Page?” box check in the main settings, the volunteer will be redirected to the main “Volunteer Sign Up Page” you selected in the settings. If you want to keep them on the same page to signup, then you need to make sure the “Redirect Sign Ups to Main Page?” option is not checked.
Starting with version 2 of the plugin, you can use more than one shortcode on a page to display several single sheets on a page. If you put multiple shortcodes on one page, you will probably need to enable the option “Suppress Duplicate Output?” to avoid duplicate success/error messages, and/or use the redirect option to redirect to a main page for signups.
ALL Available Shortcode Arguments
It is strongly recommended that you use the built-in blocks, instead of shortcodes, to see and properly use all the available arguments, but the shortcode versions are listed here for reference:
- id – A specific sheet ID to display. ID is shown as the first column on the admin main list of sheets
- date – Can be used on its own to only show sheets/tasks for a specific date, or can also be used in combination with the id argument to only show tasks for a specific sheet and a specific date (only really useful if that sheet has tasks on multiple dates). Dates need to be specified as: yyyy-mm-dd
- group – This is used to specify one or more groups to show sheets for when used in conjunction with the Groups extension
- list_title – Allows you to modify the default title shown above the main list of volunteer sheets
- show_headers – This allows you to determine if headers should be shown on the individual sheet display. Headers include the sheet title, contact info, and description. Argument values are “yes” or “no”. If not specified, headers will be shown by default (“yes” is default)
- show_time – Allows you to show or hide the start and end time columns on the sheet display. Argument values are “yes” or “no”. If not specified, times will be shown by default (“yes” is default)
- show_date_start – Allows you to show or hide the start date column on the main sheets list display. Argument values are “yes” or “no”. If not specified, the start date will be shown by default (“yes” is default)
- show_date_end – Allows you to show or hide the end date column on the main sheets list display. Argument values are “yes” or “no”. If not specified, the end date will be shown by default (“yes” is default)
- show_phone – Allows you to show phone numbers on the list of signups. Only works if you are displaying each signup in the task list (versus a consolidated view). Argument values are “yes” or “no”. If not specified, the phone column will NOT be shown (“no” is default)
- show_email – Allows you to show emails on the list of signups. Only works if you are displaying each signup in the task list (versus a consolidated view). Argument values are “yes” or “no”. If not specified, the email column will NOT be shown (“no” is default). Highly recommended to NOT show emails to the general public where they can be harvested by spambots. You should only use this on password protected pages or when only showing signups to logged in users.
- order_by – Lets you define the sort order of the list of sheets shown. Can be set to “first_date” (default), “last_date”, “title”, or “id”.
- order – when used with the above order_by, lets you set the ordering as ‘ASC’ or ‘DESC’ (ascending or descending).
For any of the arguments, the format is the argument id, followed by an equal sign and then the value in quotes. Here is a sample with all arguments shown:
[pta_sign_up_sheet id="" date="" group="" list_title="" show_headers="yes" show_time="yes" show_phone="no" show_date_start="yes" show_date_end="yes" order_by="first_date" order="ASC"]