Certified WordPres Expert Developer since Nov 2013
I am a coder who has fallen in love with WordPress. When I am not spending time with my kids I am coding, my favourite task is extending excellent plugins like WooCommerce.
I don’t really like the use the word expert, because everything is moving so fast, for example I once read a book learning Ruby on Rails and by the time I finished the book I just about had to start all over again because they brought out a new major version of Rails and so many conventions had changed.
But when it comes to PHP and WordPress I have to consider myself an expert. I have been developing in PHP for 11 years and am well versed in all the latest advanced methods, I have built many successful API connections, both clients and servers, know all about namesspaces and use PDO for my database connections, all of course using OOP PHP :-).
But of course WordPress takes away the need for a lot of those things, by providing classes and functions we can use to make our lives easier, but none of it is possible without a good grounding in PHP, in fact with a good grounding and knowledge of OOP PHP anything can be made possible in the world of WordPress.
Over the last 7 years I have specialised in WordPress. In the last 6 years I have built around 800 WordPress plugins. Dozens of them being standalone plugins to perform vital functionality for WordPress sites, enhancements to the comments feature, sending data to an API from contact forms etc. However most of my work has been creating extensions for other plugins such as WooCommerce, Gravity Forms, Learndash, Events Manager, SportsPress, Buddypress, payment gateways for the likes of Clearent, Pesapal, and Chase, and much much more.
During the last several years several of the plugins I have written have been general enough to be useful for release. I have chosen to release most of these in the WordPress plugin repository free and open source.
These plugins are
Woo Bookings Dropdown – an extension for WooCommerce Bookings showing the calendar dates in dropdown form.
Woo Vendors Booking Management – a plugin adding Bookings management to Woo Vendors dashboard.
Woo Product Addons Cart Editable FIelds – a plugin making Woo Product Addons text based fields editable in the cart.
Woo Cart Fields – A simple plugin for adding form fields to cart item rows in WooCommerce fully editable and saveable of course.
Some of my proudest work for WooCommerce includes:
- Salesforce connector built for WooThemes themselves (before the Automattic buyout)
- Payment gateway for E-Xact – supporting refunds and tokenization (saved payment methods)
- Payment gateway for Pesapal
- Stripe mod to not charge or authorize a card on checkout, but to save it (with validation) and charge when the order is marked “processing”
- Mod for WooCommerce Composite Products showing the image of the final product in the main image for the product
- WooCommerce Product Addons for Bookable Products Resources
- WooCommerce Cart Fields (now in WP repo)
- Custom CSV Export/Import system for an Enterprise client to sync with their ERP system – using WP Async Requests
- Connector for Shipstation and Authorize.net CIM plugins so that when an order shipped the authorized transaction was captured.
- Many many more
One project that really sticks in my mind is a WooCommerce wedding party plugin I built from scratch. The plugin allowed users to create a wedding party, i.e. groomsmen, best man etc, and to assign products in the store to their list, like a wishlist. The user could then send the link to the lists to the according people. It would also check on purchases and if the emails matched a wedding party, and the item that person’s list it would check it off the list as purchased. The whole CRUD (Create Read Update Delete) interface for the system ran in ajax (no page reloads). I was very proud of it.
I was equally proud when I made the WooCommerce Points and Rewards plugin work as a store credit plugin, where points were converted and stored as a cash balance which could of course be redeemed for purchases. And when I made it so that any product in one client’s site could be purchased as a subscription, and where the user could choose the duration and frequency of that subscription, weekly, bi-weekly, daily etc.
- System to store and display entries including a new field type for star ratings and ability to edit saved entries
- Several custom API connections sending the form submissions to CRMs etc.
- Oauth Client implementation for Gravity Flow to connect to the WP Rest API using oauth1 (git commit but check other commits from me in my fork and the main plugin).
Events Manager + Events Manager Pro
I have also worked on three mod/expansions of the events manager and events manager pro plugins.
I was tasked to build an extension to em and em-pro to allow for split payments, i.e. the user pays a deposit initially and then 4wks before the event they are sent a reminder to pay the remainder. The back end user can control the percentage of the deposit on a per event basis, and the payments of deposit and remainder are all fully tracked using the existing em and em-pro bookings management screens. The user can pay early, as the minute they pay the deposit, the my-bookings screen contains a “Complete Payment” button — the email reminder simply directs them to this page.
The second expansion allowed event authors to set a currency for their event other than that set in the main settings. And the third was again, a customisation to allow the plugin to be used seamlessly with a business model, in this case a tours website, i.e. having a static Page for each tour, which then had dates all year round, like Sat and Thu every week.
For this I made the recommendation of EM and EM pro using recurring events for the Tour, with recurrences being the tour dates. I coded a function to auto-refresh the recurring events as they ran out using WP-Cron and they also asked that the tickets have a cut-off on each recurrence, in EM you set a cut-off for each ticket, but on a recurring event’s tickets the cut off is obviously set at the end of the recurring event, and it goes the same as the tickets are created in each recurrence within the timespan. I coded a function that took the cut-off of the recurring event and translated it for the tickets of all recurrences, so if the recurring timespan ended Jan 14th, and the ticket cut-off on the recurring event was Jan 12th, it would set the cut off on recurrence tickets to be two days before the date of that recurrence event. For this one they also wanted a datepicker on the static page, so there are meta boxes to link a page to a recurring event (multiple select possible for Thu+Sat tours etc) and then the add_calendar function builds json for available dates and links to the individual pages and sends them into the datepicker as data attributes, they are then used in the js to make clickable links to the available tours.
I have done dozens of other modifications to plugins, including a couple of mods to the Wp User Frontend plugin, and fixing an extension to the BuddyPress plugin. One particularly strange one was bringing in a PHP form with connection to an API and putting it inside WordPress as a shortcode. Nothing strange about that, but I also ended up having to write an ftp connection Batch script to process sending the xls files generated by the form to the server – it turned out not to be your traditional API connection :-).
I also build a Magic Members/WooCommerce bridging plugin, where Magic Members posts were purchased through WooCommerce so they could make use of the payment gateways available for WooCommerce.
I have finally started making time to actually get some of my work out there into the open source world. So far I have released 4 plugins into the WordPress repository, but I have several more ready to go up, including a WooCommerce payment gateway for Chase Paymentech. All of my Open Source work goes on Github as well.
With Liam, you can't really ask for more. A true gentleman, dedicated and reliable. We will be looking forward to continuing working with him on the upcoming projects.
Liam knew the solution and implemented it quickly. I'm very grateful to be able to utilize his expertise and would recommend him to anyone!
Liam is an experienced and meticulous professional, but that is nothing compared to his patience, attention to detail and ease of character. These are great qualities that anyone with an assignment wants to experience. My assignment required not just php qualifications, but technical curiosity and competence - because the solutions were sometimes not what we thought them to be on the face of it. FYI Liam was the THIRD coder I tried to get the job done (the other 2 were not from Codeable), and I must say he became the best encounter. Finally, I do honestly believe that Liam gave me far more than my money's worth; he invested more time than either of us had envisioned, and for that I am grateful. I want to use him again whenever the opportunity arises. And I do want to keep it Codeable.
Great guy to work with.
Great guy - gets the job done.
Liam did a fine job with my project. We had a little bit of a bumpy start due to a problem beyond his control. He was very upfront about. He answered all of my many questions. I plan to work with him again. I would recommend him without hesitation.
Liam responded at short notice and was able to suggest enhancements and construct a good scope for a complex task. We'll be raising more additional tasks and working with Liam more on this task and future projects.
Great guy! Great knowhow!
Thanks Liam, a few glitches but well sorted.
Solved a persistent and complex problem while keeping me informed and educated the whole way through. Thanks, Liam!
Liam has been spot on in all aspects from 1st contact through to providing a detailed debrief at the end of the project. Job completed in good time and all working just as we requested.