Original MySQL Basic DB
I have been working with Chris Koval since June of 2015 on his website, Future Sounds. When I first met with him, his site was built from scratch with PHP and a MySQL database.
It worked, but without regular updates, more and more of the PHP functions became deprecated, and the site faced quite a few regular Fatal Errors that required constant fixes. After meeting with Chris, we decided to rebuild the site in WordPress and set up a system much easier to maintain and keep updated.
Original PHP Website Converted to WordPress
When a Quote Request was submitted, a Custom Post Type Event would be generated, where clients could enter details about their events, additional contacts, schedules, itineraries, and even select music for their event.
Adding the Power of WooCommerce
It became obvious that this system could be massively improved by automating with WooCommerce. We rebuilt the quote / member / payment system using the following plugins:
Site FlowView the automation process in this slider
Dynamically Generated ContractsNo more need to manage and send manual documents with Word/Excel macros!
While Chris normally had to manage an Excel Spreadsheet with his clients’ information in order to generate a Word file Contract for them to sign, this site update brings along enhancements that will save him time and money, by automatically generating a Client Contract based on their filled-out Event Details.
The system will not allow a user to sign the contract unless all the required fields have been saved on their event (contact info, venue info, etc). Once they do sign the contract, they are presented with a beautiful PDF version of the contract, containing not only their digital signature, but also Chris’.
This digital version of their contract is now available for download from their Event dashboard at any time!
Code SnippetsHere are a couple snippets of code that made this integration really shine.
Hooking into woocommerce_checkout_update_order_meta, I was able to grab everything I needed from the Order Details, and create my Custom Post Type with its unique Custom Fields. This is what most of the integration is built on.
Saving Checkout Values
Checkout Field Editor makes it pretty easy to grab its values from the order meta, which is just what I did to save them in an array that would later be filtered into individual Post Custom Meta Fields for the ‘Event’ Custom Post Type.
Dynamic Travel Fee Calculator
The user enters the zip code of their Event Venue on the product page, and after tabbing out of that field, they will immediately see their travel fee. This fee will also be displayed as a line item on the checkout page.
One Item per Cart
As a starting point, only one product is allowed in the cart at a time. The most common purchase on this site will be for only one Booking anyway, but in the future, we might upgrade the system to allow more than one Event to be purchased at a time.
Ease of Navigation
To make it easier for Chris to navigate his site’s admin area, I created this meta box that shows up on on the side of an ‘Event’ Custom Post Type, making it very easy to get to the corresponding Booking / Order(s) tied to the currently viewed Event.
This also makes it easy to see if a customer is paid up or not, without needing to leave the ‘Event’ admin page.