🛠️ Technical Deep Dive

Why I Build on WordPress (And Still Write Custom Code)

📅 April 2026 ⏱️ 12 min read ✍️ Leroy Alexander

"Real developers don't use WordPress."

I've heard this a hundred times. Usually from developers who've never built a business, never had to maintain 50+ client sites, and never had to ship something that actually makes money for a small business owner.

Here's my take after 14 years and hundreds of projects: WordPress isn't the enemy of custom code. It's a foundation for it.

I write PHP, JavaScript, HTML, CSS, and SQL every day. I build custom plugins from scratch. I architect systems that handle thousands of bookings. And I do most of it on WordPress — not despite being a "real developer," but because I am one.

Let me explain.

The False Choice

The tech world loves false binaries:

  • WordPress OR custom code
  • Templates OR hand-coded
  • Easy to use OR powerful
  • Fast to build OR high quality

This framing is wrong. The best solutions combine approaches based on what the project actually needs.

❌ Pure WordPress (No Code)

  • Page builder everything
  • 20 plugins for basic features
  • Slow, bloated, fragile
  • Breaks with every update
  • No custom functionality

❌ Pure Custom (No CMS)

  • Build everything from scratch
  • 3x longer development time
  • Client can't update content
  • No ecosystem/plugins
  • Higher maintenance burden

✅ Hybrid Architecture (What I Actually Do)

  • Static HTML for public-facing pages — lightning fast, SEO-optimized
  • WordPress in subdirectory for admin, booking systems, payments
  • Custom plugins for business logic — no bloat, exactly what's needed
  • Hand-coded frontend with modern JavaScript
  • REST APIs connecting static pages to WordPress backend

The Hybrid Architecture

Here's how I actually structure most client projects:

🏗️ The Stack

Layer 1: Static HTML (Public Pages)
Homepage, service pages, blog posts, landing pages. Hand-coded HTML/CSS/JS. No WordPress overhead. Lightning fast. Perfect for SEO.
Layer 2: WordPress in /wp/ Subdirectory
Admin dashboard, booking management, payment processing, user accounts. All the dynamic stuff lives here, hidden from public view.
Layer 3: Custom Plugins (Business Logic)
Ezy Travels Pro, Ezy Car Rentals, Ezy Loan Manager — custom-built WordPress plugins that handle specific business workflows. Written from scratch, no page builder garbage.
Layer 4: REST APIs (The Bridge)
JavaScript on static pages calls WordPress REST endpoints. Get live pricing, submit bookings, fetch availability — all via clean API calls.

This gives us:

  • Speed: Public pages load instantly (no WordPress/PHP overhead)
  • SEO: Clean HTML that Google loves
  • Power: Full WordPress admin for complex operations
  • Flexibility: Custom code exactly where needed
  • Maintainability: WordPress ecosystem for user management, updates, security

A Real Example: Tour Booking Site

Let me show you how this works with an actual client — a tour operator in Jamaica:

What the Tourist Sees

Static HTML pages. Homepage loads in under 1 second. Clean URLs like /tours/dunn-river-falls/. No WordPress sluggishness.

The booking calculator on the page is vanilla JavaScript. When they select options, it calls our REST API:

// Static page JavaScript
async function getQuote(pickup, destination, passengers) {
    const response = await fetch('/wp/wp-json/ezy-travels/v1/quote', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ pickup, destination, passengers })
    });
    return response.json();
}

That API endpoint lives in our custom WordPress plugin. It calculates pricing based on zones, group sizes, seasonal rates — all the complex business logic.

What the Operator Sees

Full WordPress admin at /wp/wp-admin/. Dashboard showing today's bookings. Ability to:

  • Manage pricing zones and hotels
  • View and edit bookings
  • Assign drivers to pickups
  • Export reports to CSV
  • Send WhatsApp notifications

All of this is custom plugin code. Not page builders. Not off-the-shelf plugins. Hand-written PHP that does exactly what this business needs.

The Result

  • Public site scores 95+ on Google PageSpeed
  • Admin panel has full WordPress power
  • Business logic is custom and maintainable
  • Client can update content without breaking things

Why Not Just Build Everything Custom?

I could build a booking system from complete scratch. Custom authentication, custom database schema, custom admin UI, custom everything.

Here's why I don't:

Time to Market

A fully custom system takes 3-6 months. WordPress + custom plugin takes 4-6 weeks. Caribbean small businesses need solutions now, not next year.

Maintenance Burden

Custom auth system? I'm responsible for security patches forever. WordPress handles user management, password resets, session handling — battle-tested code used by 40% of the web.

Client Independence

With WordPress, clients can update their own content. Add a new tour. Change pricing. Upload photos. Without calling me for every small change.

Ecosystem Benefits

Need email notifications? WP Mail SMTP. Need backups? UpdraftPlus. Need security scanning? Wordfence. I don't have to reinvent every wheel.

The goal isn't to write the most code. It's to solve problems efficiently. WordPress handles the boring stuff so I can focus on the business logic that actually matters.

What I Actually Code

Let me be clear: I'm not dragging and dropping Elementor blocks. Here's what my actual development looks like:

PHP (Custom Plugins) JavaScript (ES6+) HTML5 / CSS3 MySQL Queries REST API Development WordPress Hooks & Filters AJAX Handlers Payment Gateway Integration WhatsApp API Cron Jobs

Custom Plugin Structure

Every Ezy plugin follows a proper architecture:

ezy-travels-pro/
├── ezy-travels-pro.php      // Main plugin file
├── includes/
│   ├── class-booking.php    // Booking logic
│   ├── class-pricing.php    // Zone-based pricing
│   ├── class-hotels.php     // Hotel database
│   └── class-api.php        // REST endpoints
├── admin/
│   ├── class-admin.php      // Admin UI
│   ├── views/               // Admin templates
│   └── assets/              // Admin CSS/JS
├── public/
│   ├── class-public.php     // Frontend handlers
│   └── assets/              // Public CSS/JS
└── templates/
    └── email/               // Email templates

This isn't "WordPress development" in the drag-and-drop sense. It's software engineering that happens to use WordPress as a foundation.

The Static + WordPress Pattern

Let me explain the specific architecture I use for most client sites:

File Structure

public_html/
├── index.html              // Static homepage
├── about/
│   └── index.html          // Static about page
├── tours/
│   └── index.html          // Static tours listing
├── contact/
│   └── index.html          // Static contact page
├── assets/
│   ├── css/style.css       // Hand-coded CSS
│   └── js/main.js          // Custom JavaScript
├── wp/                     // WordPress subdirectory
│   ├── wp-admin/
│   ├── wp-content/
│   │   └── plugins/
│   │       └── ezy-travels-pro/
│   └── wp-config.php
└── .htaccess

How It Connects

Static pages include a small JavaScript file that communicates with WordPress:

// /assets/js/booking.js

const EzyBooking = {
    apiBase: '/wp/wp-json/ezy-travels/v1',
    
    async getHotels(zone) {
        const res = await fetch(`${this.apiBase}/hotels?zone=${zone}`);
        return res.json();
    },
    
    async calculatePrice(data) {
        const res = await fetch(`${this.apiBase}/quote`, {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(data)
        });
        return res.json();
    },
    
    async submitBooking(booking) {
        const res = await fetch(`${this.apiBase}/book`, {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(booking)
        });
        return res.json();
    }
};

The WordPress plugin exposes these endpoints with proper validation, authentication where needed, and business logic.

When I Don't Use WordPress

WordPress isn't always the answer. Here's my decision framework:

Project Type My Approach
Small business website with booking Static HTML + WordPress backend
Blog or content site Pure WordPress (it's literally designed for this)
E-commerce with local payments Static frontend + WooCommerce in /wp/
Simple landing page Pure static HTML (no WordPress needed)
Complex web application Might consider Laravel or Node.js
Mobile app backend WordPress REST API or custom Node.js

The point is choosing the right tool for the job — not religious devotion to any one approach.

The Real Benefits for Caribbean Businesses

Why does this architecture matter for my clients?

Speed on Mobile Networks

Caribbean internet isn't always fast. Static HTML pages load even on 3G. WordPress-heavy sites often don't.

Lower Hosting Costs

Static files can run on basic shared hosting. Heavy WordPress sites need expensive servers. My approach keeps hosting affordable.

SEO Performance

Google's Core Web Vitals matter. Static HTML scores perfectly. This translates to better rankings and more organic traffic.

Reliability

Fewer moving parts = fewer things to break. Static pages don't crash. The WordPress backend handles the complex stuff in isolation.

To the "Real Developers"

If you think WordPress is beneath you, I'd ask: what have you shipped lately?

I've built booking systems processing thousands of reservations. Payment integrations with Jamaican gateways that don't have documentation. Admin dashboards that operators use on phones while driving between airports.

I did it faster, cheaper, and more maintainably than a "pure custom" approach would allow. And my clients are making money while purists are still architecting their microservices.

The best code is code that solves real problems for real people. Everything else is ego.

The Bottom Line

My approach:

  1. Static HTML for everything public-facing (speed + SEO)
  2. WordPress for admin functionality and content management
  3. Custom plugins for business logic (no bloat, exactly what's needed)
  4. REST APIs to connect the layers cleanly
  5. Hand-coded frontend (no page builders, no template garbage)

This isn't WordPress development. It's not custom development. It's hybrid architecture that takes the best of both worlds.

And it's how I've built software that actually works for Caribbean businesses.

Need This Architecture for Your Business?

Fast, modern websites with powerful backend systems. Let's talk about what you're building.

Start a Conversation