One Year Anniversary of the Advanced Events Registration Plugin

Today is the one year anniversary of the free version of the Advanced Events Registration plugin (originally named and still known as Events Registration with PayPal IPN.)

As well as being an important and cost effective addition to many small organizations and blog owners, it has become a very successful event registration plugin for WordPress. It all started off as a small project for my wife. She needed a simple system for people to register for her scrap booking events. Being a part time PHP developer (as well as loving  husband), I volunteered to help out. So I set out to find a solution and found a very simple Event Registration plugin for WordPress by David Fleming, but it seemed to be missing some of the basic features my wife needed for her business/hobby. We needed a way to accept payments using the PayPal IPN and a bunch of other custom features that seemed to be missing from David’s plugin. (I am not putting down David’s plugin at all, it is a very nice plugin and helped me to get moving on something more advanced.)

So I started studying the WordPress Codex and reading up on how to build plugins in the WordPress environment. After a few weeks of programming and testing. I was able to put something together based on David’s original plugin (version 1.0 I believe.) After a couple more weeks of testing I released the plugin on the WordPress Plugin Directory one year ago today (April 20, 2009.)

After almost a year of user submitted input, I was able to release the Advanced Events Registration Pro version of the plugin. Since the release of the pro version on January 28, 2010, I have made several hundred improvements throughout. One of the latest (and biggest) improvements has been a complete overhaul of all the old code. It now relies heavily upon the core WordPress functions and coding standards. Making it easier to use and more WordPress friendly. I have a Member addon almost ready. Among other things, I have added a way to include your own custom PHP functions, shortcodes, include files, and a simple template system for displaying events. All of which are stored in the “/wp-content/uploads/eventregis/” directory, so you don’t have to worry about overwriting all of your custom additions.  I am also ramping up to release alternate payment gateways such as, 2Checkout, and Google Checkout payment systems.

I love hearing from users, so please tell me about your experience with this plugin.

Related Articles

2 thoughts on “One Year Anniversary of the Advanced Events Registration Plugin

  1. Must say, I love this plugin! A great example of what can be done to extend the functionality of WP. I see that an update to 2.1.12 is available although as I’ve made a number of changes to the side I might just wait for the next release of the PRO version before upgrading.

    A couple of little issues (that may well have been resolved in the latest release) as a few suggestions:

    When I first set this up I noticed that the total shown in the default email just showed the single ticket price, not the total depending on number of attendees, (also a typo ‘reveiw’ in the email).

    I added an extra Text Area field for names of any additional attendees (would be great if this could be built in as a default field if additional attendees are selected) but found that if they were entered one per line that when exported to a spreadsheet the line break appeared a a new line in the spreadsheet so reverted to a single text field instead.

    On the subject of additional questions, would be great if the same question could be added to multiple events without having to recreate it for each individually, either by creating the question once and selecting the events it should be added to from a check box list, or making a library of questions that you can select from for each event. Would be even better if there was an option to add new questions as a default question for all future events.

    Other changes I made were to the formatting of the registration form and removal of fields that are not relevant outside the US. Would be great if this could be done within the settings without having to edit the code.

    In practice the issues we have come across are people not being able to pay with PayPal (beyond your control) and misreading the number of additional attendees question and entering the wrong number, then going back and changing it which results in duplicate registrations. Have added a note to the registration form and underlined the ‘additional’ which has helped.

    Other than that a brilliant plugin and one that I can thoroughly recommend! Looking forward to trying out the PRO version.

    • Thanks Ben,

      Most of the issues stated above have been fixed in the latest release of the free and pro versions of the plugin. I think you will be happy to know, I have a custom files addon available. The custom files addon offers support for custom templates, functions, and shortcodes. Virtually allowing you to customize the plugin to your needs and making your custom changes future proof. Another thing I have done recently is to allow you to move the core templates into your “wp-content/uploads/” directory. Therefore the core plugin templates are safe if you decide to make modifications.

      I still need to test a few things and finish some documentation, but the gateway addon is pretty much done. I am hoping that will help quite a few people. 🙂

      As for the custom questions. I am in the planning stages of a complete overhaul to the custom questions interface and functionality. This will be shipped out with the pro version at no additional charge.

      Good luck and thank you for the great feedback!

      Seth Shoultes

Share a Reply or Comment

Your email address will not be published.

Need help with Event Espresso? Create a support post in our support forums

Event Espresso
[gravityform id=116 title=false description=false]
<script type="text/javascript">var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});</script> <div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_116' ><form method='post' enctype='multipart/form-data' id='gform_116' action='/2010/04/one-year-anniversary-of-the-advanced-events-registration-plugin/' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_116' class='gform_fields top_label form_sublabel_below description_below'><li id="field_116_5" class="gfield gfield_contains_required field_sublabel_hidden_label field_description_below gfield_visibility_visible" ><label class='gfield_label gfield_label_before_complex' >What is your first name?<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name' id='input_116_5'> <span id='input_116_5_3_container' class='name_first' > <input type='text' name='input_5.3' id='input_116_5_3' value='' aria-required='true' placeholder='First name' /> <label for='input_116_5_3' class='hidden_sub_label screen-reader-text'>First name</label> </span> </div></li><li id="field_116_1" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_116_1' >What is your email address so we can follow up with you?<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_116_1' type='text' value='' class='medium' placeholder='' aria-required="true" aria-invalid="false" /> </div></li><li id="field_116_2" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_116_2' >Tell us about your concerns below<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_textarea'><textarea name='input_2' id='input_116_2' class='textarea medium' placeholder='What kind of events are you planning?' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div></li><li id="field_116_6" class="gfield field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label gfield_label_before_complex' >GDPR Agreement</label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_116_6'><li class='gchoice gchoice_116_6_1'> <input class='gfield-choice-input' name='input_6.1' type='checkbox' value='I consent to have this website store my submitted information so they can respond to my inquiry.' id='choice_116_6_1' /> <label for='choice_116_6_1' id='label_116_6_1'>I consent to have this website store my submitted information so they can respond to my inquiry.</label> </li></ul></div></li><li id="field_116_3" class="gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_3' id='input_116_3' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></li><li id="field_116_4" class="gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_4' id='input_116_4' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></li><li id="field_116_7" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_116_7' >Email</label><div class='ginput_container'><input name='input_7' id='input_116_7' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_116_7'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_116' class='gform_button button' value='Send my message' onclick='if(window["gf_submitting_116"]){return false;} if( !jQuery("#gform_116")[0].checkValidity || jQuery("#gform_116")[0].checkValidity()){window["gf_submitting_116"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_116"]){return false;} if( !jQuery("#gform_116")[0].checkValidity || jQuery("#gform_116")[0].checkValidity()){window["gf_submitting_116"]=true;} jQuery("#gform_116").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_116' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='116' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_116' value='WyJbXSIsIjBiNjdjZjkyMDUzOWUxOWY5Y2NiZjIwMzM4YjA1Mjk4Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_116' id='gform_target_page_number_116' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_116' id='gform_source_page_number_116' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_2" name="ak_js" value="107"/><script>document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>