Note: RSVPMaker 2.5 makes more advanced customization of the RSVP form available from within the administration console, which may eliminate the need for some code-level customization.
RSVPMaker includes a mechanism for allowing you to add custom functions or override the some of the default functions included with the plugin. Specifically, you can override any of the functions defined in rsvpmaker-plugabble.php. You do this by adding your own rsvpmaker-custom.php file to the plugins directory (the directory above the rsvpmaker folder). My distribution includes a sample rsvpmaker-custom.php file but it will not be activated until you move it to the new location.
Essentially, this lets you plug in your own functions within my plugin. The idea is to provide some freedom to customize, without losing the benefit of upgrades to the core rsvpmaker code.
Modifying the event_content function
More extensive customizations are possible by overriding the event_content function, although this is a longer, more complex function. If you open the rsvpmaker-plugabble.php file, you will see the functions are wrapped with if(!function_exists(‘function_name’) ).
If you copy the function definition for event_content into your custom.php file, you will be able to modify the function as necessary for your purposes.
When a single event is displayed, the standard single post template may tend to cause confusion because it juxtaposes the posting date with the event date. This is particularly a concern for post templates that feature the publication date prominently at the top of the post.
You can avoid this problem by adding a single-rsvpmaker.php file to your theme. WordPress will load this instead of the single.php template for an event post type.
A sample single-rsvpmaker.php file for the Twentyten theme is included with the RSVPMaker download, but you must copy it from the plugin folder to the theme folder to get it to take effect. Note that this file may not work with themes other than Twentyten without modification.
Most themes include a single.php file that you can modify to remove (or de-emphasize) the code that outputs the post publication date. I also recommend removing the code that outputs the comments template because people tend to be confused by having two forms on the page (the RSVP form and the comment form).
Updated 12/29/2010 to reflect change in file naming (single-rsvpmaker.php rather than single-event.php).
I’m planning to introduce support for translation in the next update. So far, I’ve got interest in French and Danish. I’m a mono-linguistic American, so my contribution will be limited to tagging words and phrases for translation and looking for collaborators who can do the actual translating.
Update 12/29/2010: I’ve finished flagging most of the elements in the user interface that I thought might need to be translated and have added them to the file rsvp.pot in the plugins/rsvpmaker/translations subdirectory of the latest release. This is the “catalog” file that you load into a tool such as POEdit to translate words and phrases such as “RSVP Now!” into whatever makes more sense in a given language.
Send me your translations to be included with a future release, and I will be happy to credit your contribution.
A few users who have tried the RSVPMaker plugin report problems with getting 404 page not found errors when they try to follow a link to one of these entries. Let me know if you experience this issue, as I’m trying to track down the cause. It seems to work fine for most people, but I may be running into some kind of clash with other plugins that manipulate the WP rewrite rules object.
One website manager I’ve been working with has it functioning correctly on one site she manages, but not another. Very puzzling.
Update: 12/29/2010: I think I’ve now resolved this issue by changing some of the code that sets up the custom post type and sets the rewrite rules.
The RSVPMaker and ChimpBlast plugins work together to let you send event invitations through the MailChimp broadcast email service.
This tutorial uses the system as installed on the Economic Forum of Palm Beach County website as an example. Using the RSVPMaker options page, I’ve configured things so we always ask for an RSVP response by default and a block of default text with boilerplate on the standard meeting location and payment details is loaded into the editor when I add a new event.
I then add a headline and details about the specific event, set the date and time and publish my event.
After publishing my event, I switch to the Eblasts menu and click Add New. I get a blank form, but at the bottom of the form you will see a list of links to upcoming events. Click the link to load the event into the editor.
Here, you see the formatted text of the event has been loaded into the editor. Add a title (which will serve as the subject line of the email). You can add also add an additional message introducing the event or encouraging people to RSVP online.
When you click the publish button, you will get a prompt to “View Post” just as you would for a regular blog post. In this case, “View Post” will take you to a preview of the message in the email template.
At the top of the email preview screen, you will see options that allow you to send yourself a preview of the message (good for checking that it shows up correctly in an email client) or send it out live.
Here is what this message looks like in GMail.
When the Recipient clicks on RSVP Now, he or she will be taken to the event page on your website. If the recipient has registered for events before, using the same email address, RSVPMaker will try to look up contact details (such as phone number) rather than making the user enter them again.
Update: I wound up publishing a new version that addresses most of these requests sooner than planned, after I found a few other errors that needed to be corrected.
I expect to publish an update to the RSVPMaker Plugin in about a week. Feedback has been good overall. People who have tried other event management plugins tell me mine seems more flexible. I had tried some of the others and they were never quite what I was looking for, or not close enough to convince me to stop developing my own.
Here are a few improvements people have asked for, none of which looks too difficult:
A configuration setting choice between AM/PM times, as used in the U.S., and 24-hour time, more common in the rest of the world.
Ability to set the maximum number of participants allowed for each event.
A way to set the maximum number of events to be displayed in the headline list or sidebar widget.
Better documentation of the shortcodes available for use.
I’ve already done some of this, but probably need another week or so to pull it all together. Let me know if there are other things you would like to see.
RSVPMaker also provides a widget you can use to display upcoming events in your sidebar.
Update for version 2.5.5
The rsvpmaker_upcoming shortcode now accepts limit=”x” (show x number of events) as an attribute. Example [rsvpmaker_upcoming limit=”3″] would retrieve a maximum of 3 posts.
You can also use add_to_query=”myquerystring” to modify the query using query_posts() query string syntax. Example: [rsvpmaker_upcoming add_to_query=”p=99″] would retrieve a single rsvpmaker post with the ID of 99. This appends the parameters you provide to the default query string, so the whole thing would be something like post_type=rsvpmaker&post_status=publish&p=99.
RSVPMaker includes integration routines from the PayPal software developer’s kit to allow you to solicit online payments for your events and record which users have paid. The setup is a little bit involved, but there’s a reason for it.
I could have made it easier to set up RSVPMaker to work with PayPal, but for security reasons I hesitated to do so. If I had you enter your security credentials into a WordPress and save them as options associated with the application, they would be stored in the WordPress database and potentially be vulnerable to exposure through any hack that might allow someone to gain database access. While WordPress is secure enough for many purposes, it does get hacked from time to time, and I wouldn’t want anyone to gain access to your PayPal account (and, indirectly, to your bank and credit card accounts) for the sake of making things more convenient.
So I instead require you to edit the paypal_constants.php file in the paypal subdirectory of the RSVPMaker distribution. You will have to enter your API Username, API Password, and API Signature in that file. To obtain these you must have a Business or Premier PayPal Website Payments Standard or Website Payments Pro account (in most cases, I recommend Website Payments standard, which provides the needed functionality but does not require a monthly fee). Log into PayPal and visit the Profile Menu, follow the link to API Access, and then View API Signature. This will display the codes you need to copy into the configuration file.
I recommend storing this file outside of the web root directory — or at least somewhere other than the default location — so that it’s not possible for an attacker (who may have read these instructions) to browse to
and make some kind of mischief on it. If your directory structure is /home/account/public_html then putting the file in /home/account and giving it a different name would be better.
Once you have this set up, record the path to the configuration file on the Settings screen for RSVPMaker, and you should be good to go.
Create a test event with a fee associated with it, go through the RSVP process, and you should be prompted to pay online. When you click the Pay Now button, you should be redirected to a page on the PayPal website that displays the name of your organization and asks you to either log in or provide credit card information to make a purchase.
I developed the RSVPMaker plugin to serve the event scheduling needs of multiple volunteer organizations, political campaigns, and professional groups I have worked with. It attempts to address many of the common requirements of these groups, while still leaving a great deal of flexibility for customization.
The plugin uses the custom post types feature introduced in WordPress 3.0 to treat events differently from other types of posts, while letting you create and edit them using the same basic WordPress editing tools. The event editor essentially looks like the blog editor, but with a few extra options for specifying dates, times, and RSVP options.
You can then create an events listing on your website with the events listed in chronological order, as opposed to blog style reverse chronological order by the date of publication.
You can modify the RSVP form to ask for more or fewer details, according to your preference. The sample RSVP form used on this website is an abbreviated one, but sometimes you may want to collect more complete contact information. For example, the Florida political campaigns I’ve worked with are required to collect full contact information plus the employer and occupation of everyone who attends a fundraiser.
Features of RSVPMaker:
Use the standard WordPress editor to enter and style text and upload images.
Set one or more dates to be associated with your event.
Specify just a start time, both a start time and an end time, or don’t include the time at all in the headline (for example, an all-day event where you will list the schedule details in the body of the event description).
Request RSVPs, if desired. Set one or more email addresses to be sent a notification as RSVPs come in.
Configure the default details to be included with new events. For example, if a group has a standard meeting place, you can have the boilerplate details with the address and a map link for directions included by default. You can specify whether RSVPs should be requested by default, if you want that most of the time, or only turn on RSVPs when needed, and you can set a default email address for RSVP notifications to be sent to.
Prompt attendees to choose one or more specific timeslots (example: signing up volunteers for shifts on a petition drive or bake sale).
Request online payments via PayPal. Set pricing to be calculated according to the number of participants in one or more categories (for example, a different price for members and non-members or children versus adults). Some manual setup required for PayPal configuration.
Modify the plugin’s default behavior by overriding functions. The plugin checks for a custom.php file (sample included) installed in the plugins/rsvpmaker/ directory, which you can use to substitute your own functions for things like the fields to be included in the RSVP form or the logging of attendee responses.
Display listings on an events page, or put an abbreviated list on your home page, using the RSVPMaker Shortcodes. A widget for displaying upcoming events in your blog sidebar is also provided.
I use RSVPMaker in conjunction with another plugin for integration with the MailChimp broadcast email service, which is not yet ready for public release. However, if you copy and paste an RSVPMaker event into the MailChimp editor, you will find that the RSVP Now links are coded according to the MailChimp merge language with a ?e=*|EMAIL|* parameter that will be substituted with the recipient’s email address. When a recipient who has previously RSVP’ed clicks on this link, RSVPMaker will check to see if we have that user’s details on file so we don’t have to ask for them again. This is particularly useful for longer RSVP forms that ask for more details.
Help wanted: This plugin has served my purposes, but I’m sure there is room for improvement. I have not yet invested in things like localization. I’ve tried to follow best practices for web application security, but I would welcome any suggestions about how to make it better.
The RSVPMaker WordPress Plugin has been released on the Downloads page.
I’ve been using variations on this script for years on my personal projects, but have now (I think) abstracted it enough that I hope others can take advantage of it. Publishing it to the directory on wordpress.org to follow.