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 9 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 that stuff, 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 5 years I have specialised in WordPress. In the last 4 years I have built around 600 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 and many more.
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 Paymentect. All of my Open Source work goes on Github: as well.
Liam was very professional, communication was great and he went over and above to sort out a particular issue until it was resolved to my satisfaction. I would highly recommend Liam and will be using his services again.
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.
Did what he said he'd do, resolved our problems, and did so promptly.
Understood the task and completed quickly and efficiently what was required.
Quick and very helpfull. also takes the time in explaining how the process works and what he did to correct errors
Fast response - attentive - knowledgeable. Will hire again!