It’s 2026 and I still encounter WordPress agencies deploying via FTP. Direct to production. On a Friday afternoon. With no backup. This article is an intervention.
The FTP Problem
Let me describe the FTP deployment workflow and see if it sounds familiar:
- Developer finishes a feature on their local machine
- Developer opens FileZilla
- Developer drags files to the production server
- Something breaks
- Developer frantically tries to remember which files they changed
- Developer overwrites the wrong version of a file
- Client calls, angry
- Developer stays up until 2 AM fixing everything
If you’ve lived through this cycle, you know the cold sweat it produces. If you haven’t, count yourself lucky and set up CI/CD before your luck runs out.
What CI/CD Actually Means for WordPress
CI/CD stands for Continuous Integration / Continuous Deployment. Strip away the jargon and it means: automated processes that test your code and deploy it safely.
For WordPress specifically, a CI/CD pipeline typically includes:
Continuous Integration
- Automated linting: PHPCS with WordPress coding standards runs on every commit
- Security scanning: Static analysis catches sanitization gaps, SQL injection vectors, etc.
- Unit tests: PHPUnit runs your test suite automatically
- Compatibility checks: Tests against multiple PHP versions
Continuous Deployment
- Staging deployment: Passes CI? Automatically deployed to staging.
- Production deployment: Approved on staging? One-click deploy to production with automatic backup.
- Rollback capability: Something wrong? One click to restore the previous version.
The Simplest Possible Setup
You don’t need to go from FTP to a full DevOps pipeline overnight. Here’s the minimum viable CI/CD setup for WordPress:
Step 1: Version Control
If your code isn’t in Git, start there. Everything else depends on this. Your theme, your custom plugins, your configuration — all in version control. Not your uploads directory, not WordPress core (use Composer for that), not your wp-config.php with production credentials.
Step 2: Automated Testing
Set up GitHub Actions (free for public repos, cheap for private). Start with PHPCS and a basic PHPUnit setup. This alone will catch the majority of issues that currently make it to production.
Step 3: Automated Deployment
GitHub Actions can also handle deployment. On push to your main branch, after tests pass, deploy to your server via SSH. Not FTP — SSH. Use rsync for efficient file transfer. Generate a backup before every deployment.
Step 4: Monitoring
Set up basic uptime monitoring and error tracking. Know about problems before your clients do.
What This Looks Like in Practice
With this setup in place, the deployment workflow becomes:
- Developer pushes code to a feature branch
- CI automatically runs tests and security scans
- Developer opens a pull request
- AI code review agent provides initial feedback in minutes
- Human reviewer approves the architecture and logic
- Merge to main triggers automatic deployment to staging
- After verification, one-click promotion to production
- Automatic backup ensures easy rollback if needed
Total deployment time: about 3 minutes. Risk of breaking production: near zero. Friday afternoon cold sweats: eliminated.
But WordPress Is Special
I hear this objection a lot. “WordPress isn’t like a regular application. It has the database, the media uploads, the admin panel where clients make changes.” All true. All solvable.
- Database migrations: Use a migration library or WP-CLI scripts for schema changes
- Media uploads: These live on the server, not in your repo. rsync preserves them.
- Client changes: Content lives in the database. Code lives in the repo. They don’t conflict.
- Plugin updates via admin: Disable file editing in wp-config.php. All code changes go through the pipeline.
The ROI
A client of mine tracked their deployment-related incidents before and after implementing CI/CD:
- Production incidents per month: 4-6 → 0-1
- Average deployment time: 45 minutes → 3 minutes
- Emergency weekend fixes per quarter: 3-4 → 0
- Developer satisfaction score: up 40%
The setup took two days. It paid for itself in the first week.
The Bottom Line
FTP deployment is not a workflow — it’s a liability. Every manual deployment is a chance for human error, and human error on production systems is expensive. CI/CD isn’t a luxury. In 2026, it’s the bare minimum for professional WordPress development.
Ready to modernize your deployment process? Book a strategy call and we’ll design a CI/CD pipeline tailored to your WordPress workflow.