Available for remote work

Halleluyah Salako

I build custom WordPress plugins

// your site has 47 plugins. I can fix that.

Production systems and the internal tools that run them, custom plugins instead of plugin sprawl, payment and API integrations, and admin dashboards non-technical teams can actually operate without calling a developer.

Nine years of client work. Abuja, Nigeria (UTC+1), full overlap with Europe, mornings and afternoons with US Eastern.

9YEARS BUILDING
15+LIVE CLIENT SITES
11COUNTRIES SERVED
4OPEN SOURCE PLUGINS

Selected work

Live client sites I designed, built and still maintain, with the custom plugins and themes behind them. All links go to the real thing.

๐Ÿฉบ

Veterinary Career Guide

Flagship
vetcareerguide.com โ†—

A subscription commerce and publishing platform carried entirely by one custom WordPress plugin I wrote from scratch, plus a theme built specifically for it. Elementor handles public pages only; the plugin drives everything else, and programmatically controls both Elementor and Formidable Forms.

  • Custom subscription billing, written directly against the Paystack, Flutterwave and Stripe APIs rather than their built-in subscription products, with WP Cron tracking each member's billing date and charging on schedule
  • Geo-routed payments, the gateway is selected automatically by visitor country
  • Multi-currency, prices held in Naira and converted from the visitor's detected location, with a manual override
  • Fulfilment, per-buyer ebook watermarking; hardcopy purchases redeemed through unique codes printed in the physical book
  • Member dashboard, progress tracker with calendar, to-do list, habit tracker and goal tracking
  • Discounting, standard, group and email-targeted coupons, early-bird pricing and stock management, each with an admin screen so non-technical staff run promotions without a developer
๐ŸŸ

AFIWEL, Africa Fish & Aquaculture Welfare

afiwel.com โ†—

Full site plus a Resources plugin now serving 59 publications across an 11-country programme. One plugin replaced four: it registers its own custom post type and fields in place of ACF, exposes itself as a custom Elementor widget so editors compose pages normally, and owns its query, filtering and pagination, which is why it survives Elementor updates and shifting post IDs. Every resource auto-generates its type badge, View and Download actions, and share links for eight platforms on publish.

๐ŸŒ

One Health & Development Initiative

onehealthdev.org โ†—

Full site for a global nonprofit working across human, animal, plant and environmental health. Its news archive ran on three or four stacked filter plugins; I replaced them with one I wrote, Year, Category and keyword filtering, available as both a shortcode and an Elementor widget, owning its own query, results and pagination.

๐ŸŒพ

AgrowSAFE

agrowsafe.com โ†—

Digital verification and market platform for sustainable agriculture across Africa, with three distinct audience paths, farmers seeking verification, buyers sourcing ethically, and partners or investors, plus a professional directory and framework pages. Includes a custom plugin handling structured data collection and custom post types, so submitted records become manageable content rather than form entries.

๐Ÿš€

One Health Ventures

onehealthv.com โ†—

Corporate site for the ventures and innovation arm, technologies, corporate advisory and an entrepreneurship programme, built so the team maintains it themselves.

Open source

Code you can actually read, not screenshots you have to trust. Four public repositories, all GPL.

๐Ÿ›’

Inline Checkout for WooCommerce

Flagship
github.com/Halleluyahsalako/wc-inline-checkout โ†—

Buy Now and a one page checkout, with Paystack and Flutterwave collected in a modal instead of a redirect. The interesting part is what happens after the widget says "paid": the browser is not believed. The server checks the reference against the one it issued for that order, then calls the gateway API with the secret key to confirm status, currency and amount before anything is marked complete.

Handles the things that are easy to get wrong: Paystack quotes NGN in kobo, so a subunit amount compared against a major unit total passes for anything over one naira. References are bound to their order so a valid one cannot be replayed against another. Flutterwave settlement is net of fees, so comparing against it would reject every real payment.

๐Ÿ“š

Resource Library

WordPress plugin
github.com/Halleluyahsalako/wp-resource-library โ†—

A filterable library of downloadable documents. One plugin instead of a custom post type plugin, a custom fields plugin, a filter plugin and a search plugin all owning a piece of the query and none owning the whole thing. Type and subject are taxonomies rather than a hardcoded list, so the vocabulary belongs to whoever installs it. No jQuery, cards built with createElement, assets loaded only where the shortcode runs.

๐Ÿ”

Cascading Post Filter

WordPress plugin
github.com/Halleluyahsalako/wp-cascading-post-filter โ†—

An AJAX archive filter with search, year, and a parent taxonomy select that reveals a child select on demand. Works with any post type and any hierarchical taxonomy. It owns its own WP_Query rather than reaching into a page builder's markup to swap results, which is why it keeps working when the builder updates.

๐Ÿ›’

Cartel

In development
github.com/Halleluyahsalako/Hal-Cartel โ†—

A lightweight, security conscious eCommerce plugin for WordPress, built as a free alternative to WooCommerce plus its paid extensions. One page checkout, a pluggable payment gateway architecture, Stripe PaymentIntents with signed idempotent webhooks, an abandoned order cron that restocks stale orders, signed expiring download tokens, multi currency and per zone shipping.

๐Ÿ”ง

WordPress snippets

Toolbox
github.com/Halleluyahsalako/wordpress-snippets โ†—

Single purpose solutions from client work. A recurring event date engine that handles the rules events plugins cannot express, like "the last day of the month if it is a Saturday, otherwise the first Saturday of the next month". And a way to point a theme's existing hamburger at your own menu panel without forking the theme.

๐Ÿ“‹

ctrl-freak

Android ยท Kotlin
github.com/Halleluyahsalako/ctrl-freak โ†—

Syncs clipboard, notes and files between phone and computer, because emailing yourself a link is not a workflow.

Stack

What I reach for, and what I've shipped with.

๐Ÿงฉ WordPress
Plugin architectureCustom themesCPTs & metaCustom Elementor widgetsWP CronREST endpointsWebhooksWooCommerceDokanFormidableACF migrationPHP 8 upgradesMultisite
๐Ÿ’ณ Payments
StripePaymentIntentsWebhooksPaystackFlutterwave
โŒจ๏ธ Languages
PHPTypeScriptJavaScriptSQLKotlinPython
โš™๏ธ Backend
NestJSNode.jsPrismaPostgreSQLMySQLMongoDBBullMQ / RedisJWT
๐ŸŽจ Frontend
Next.jsReactVueTailwind CSS
๐Ÿ“ฑ Mobile
ExpoReact NativeOffline-first SQLite
๐Ÿ”’ Security
HardeningMalware remediationStaging โ†’ productionLive debugging

How I work

I work on staging before production, document what I changed, and send short written progress updates by default. I take ownership of a codebase end to end, schema, API, interface and deployment.

I'll also tell you when an off-the-shelf plugin would genuinely be cheaper than hiring me to build one. It costs me a job occasionally. It has never cost me a client.

Django Girls mentor since the first Ogbomoso workshop in 2016; Abuja chapter through 2022.