WordPress Upgrade Project - Overview
Project: Dezeen.com WordPress 6.2.2 → 6.9 Upgrade Timeline: 6-8 weeks Approach: Incremental & Cautious Date Created: January 2026
Executive Summary
Current State
Production Environment:
- WordPress: 6.2.2 (May 2023) - 19 months outdated
- PHP: 7.4.20 (July 2021) - END OF LIFE ⚠️
- Database: MariaDB 11.7.2
- Theme: 2016dezeen only (v2.0, 28MB, 55,774 lines of code)
- Plugins: 73 total (48 custom dezeen-*, 20 third-party, 5 mu-plugins)
- Build System: Laravel Mix 6.0.43
- Caching: WP Rocket 3.18.2 + Redis + Cloudflare CDN
Local Development Environment:
- PHP: 8.4.7 (significant difference from production!)
CRITICAL Issues Identified
- 🔴 CRITICAL: Yoast SEO Premium v13.0 - From January 2020 (5 years old!) - CRITICAL SECURITY RISK
- 🔴 CRITICAL: PHP 7.4.20 - End of Life since November 2022 - SECURITY RISK
- 🟡 HIGH: WordPress 6.2.2 - Missing 19 months of security patches
- 🟡 MEDIUM: PHP Version Mismatch - Local (8.4.7) vs Production (7.4.20) - testing issues
- 🟢 LOW: Theme technical debt - 100+ lines of commented code in webpack.mix.js
Update Path
WordPress Core:
- 6.2.2 → 6.2.8 (minor) → 6.9 (major, current stable)
PHP Upgrade (RECOMMENDED):
- 7.4.20 → 8.0.x → 8.1.x (recommended for WordPress 6.9)
- Note: WordPress 6.9 supports PHP 7.4 but recommends PHP 8.0+
Project Phases
| Phase | Description | Duration | Risk Level |
|---|---|---|---|
| Phase 0 | PHP Upgrade (7.4.20 → 8.1.x) | 10-12 days | HIGH |
| Phase 1 | Preparation & Environment Setup | 5-7 days | LOW |
| Phase 2 | Critical Security Updates (Staging) | 7-10 days | MEDIUM-HIGH |
| Phase 3 | Plugin Compatibility Testing | 5-7 days | MEDIUM |
| Phase 4 | WordPress Core Major Upgrade | 7-10 days | HIGH |
| Phase 5 | Minor Theme Cleanup | 3-5 days | LOW |
| Phase 6 | Production Deployment & Validation | 3-5 days prep | CRITICAL |
Total Timeline: 8-10 weeks (including PHP upgrade) Decision Made: ✅ PHP upgrade INCLUDED (Option A)
Recommended Approach
Option A: WordPress Upgrade ONLY (Lower Risk, Temporary)
- Upgrade WordPress 6.2.2 → 6.9 on existing PHP 7.4.20
- Test extensively with PHP 7.4.20
- Plan PHP upgrade as separate project in 2-3 months
Pros:
- Lower complexity
- Faster to complete
- Addresses immediate WordPress security issues
Cons:
- PHP 7.4.20 remains a security risk (EOL)
- May encounter plugin compatibility warnings
- Will need another upgrade cycle soon
Option B: Combined WordPress + PHP Upgrade (RECOMMENDED)
- Test PHP 8.1 compatibility on staging
- Upgrade PHP first (7.4.20 → 8.1.x)
- Then upgrade WordPress (6.2.2 → 6.9)
- Single comprehensive upgrade cycle
Pros:
- Addresses both security risks
- Modern platform for future
- Single disruption period
- Better long-term performance
Cons:
- Higher complexity
- More testing required
- Longer timeline (add 1-2 weeks)
- Higher risk if issues occur
✅ DECISION MADE: PHP Upgrade Included
Decision: WordPress + PHP upgrade (Option A) - RECOMMENDED
This means:
- Phase 0 added: PHP 7.4.20 → 8.1.x upgrade
- Timeline extended: 8-10 weeks (instead of 6-8)
- Benefits: Single upgrade cycle, addresses both security risks
- All testing will be done on PHP 8.1 environment
Project Structure
This upgrade plan is organized into the following documents:
- 00-wordpress-upgrade-overview.md (this file) - Project summary
- 01-phase-1-preparation.md - Backups, staging setup, baseline metrics
- 02-phase-2-security-updates.md - Yoast SEO, ACF Pro, WP Rocket updates
- 03-phase-3-plugin-testing.md - Testing all 48 custom dezeen-* plugins
- 04-phase-4-wordpress-upgrade.md - Incremental WP 6.2.8 → 6.9 upgrade
- 05-phase-5-theme-cleanup.md - Webpack cleanup, documentation updates
- 06-phase-6-production-deployment.md - Production deployment procedures
- 99-command-reference.md - Quick reference for all commands
- critical-findings.md - Important discoveries and decisions
Success Criteria
The upgrade will be considered successful when:
- [ ] WordPress 6.9 running in production
- [ ] All 73 plugins active and compatible
- [ ] Zero critical errors in logs (24 hours post-deployment)
- [ ] Performance within 5% of baseline
- [ ] All external integrations functional (Algolia, Campaign Monitor, etc.)
- [ ] SEO metrics stable (Search Console, sitemaps, structured data)
- [ ] Business-critical features working (Awards, Competitions, Events)
- [ ] Cache systems optimized (WP Rocket, Redis, Cloudflare)
- [ ] User-facing site fully functional
- [ ] Team confident in new baseline
Risk Management
High-Risk Areas
| Risk | Impact | Probability | Mitigation |
|---|---|---|---|
| Yoast SEO data loss | CRITICAL | LOW | Full database backup, test on local first |
| ACF field corruption | CRITICAL | LOW | ACF export before update, test all field groups |
| PHP 7.4 incompatibility | HIGH | MEDIUM | Extensive testing, monitor deprecation warnings |
| WP Core breaks custom plugins | HIGH | MEDIUM | Incremental upgrades, thorough Phase 3 testing |
| Performance degradation | HIGH | LOW | Baseline metrics, continuous monitoring |
| SEO ranking drop | CRITICAL | LOW | Validate sitemaps, monitor Search Console |
| Algolia search breaks | HIGH | MEDIUM | Test extensively, verify API keys |
| Payment processing fails (Awards) | CRITICAL | LOW | Test PayPal in sandbox, verify JWT auth |
Team Roles & Responsibilities
Technical Lead:
- Overall project coordination
- Execute upgrade commands
- Troubleshooting and rollback decisions
- 60-80 hours estimated
QA/Testing:
- Execute testing checklists
- Functional testing across all systems
- Performance validation
- 40-60 hours estimated
DevOps/Deployment:
- Backup management
- Production deployment
- Monitoring setup
- 20-30 hours estimated
Total Estimated Effort: 120-170 hours across 6-8 weeks
Communication Plan
Stakeholder Notifications
Frequency:
- 7 days before maintenance window
- 3 days before maintenance window
- 1 day before maintenance window
- 1 hour before maintenance window
- Immediately after deployment
- 24-hour status update
Status Reporting
Weekly Status Reports:
- Phase completion status
- Issues encountered and resolved
- Next week's plan
- Risk updates
Dependencies
External Services to Coordinate
- Algolia - Search service (ensure API uptime during testing)
- Campaign Monitor - Newsletter service
- Cloudflare - CDN provider
- PayPal - Payment processing (awards)
- Parse.ly - Analytics
- Disqus - Comment system
Internal Dependencies
- Staging Environment - Must be available and synced
- Backup Storage - Sufficient space for multiple backups
- Team Availability - Key personnel during deployment window
- Maintenance Window - Approved downtime period
Next Steps
- Review this overview with technical team
- Make PHP upgrade decision (Option A vs Option B)
- Review Phase 1 documentation (01-phase-1-preparation.md)
- Schedule kickoff meeting to allocate resources
- Begin Phase 1 when ready (backups and baseline metrics)
Document Version
- Version: 1.0
- Last Updated: January 6, 2026
- Author: Claude Code (AI Assistant)
- Status: Draft - Awaiting Review
⚠️ IMPORTANT NOTES:
PHP Version Discrepancy: Local environment runs PHP 8.4.7 but production runs PHP 7.4.20 (EOL). All testing must be done on PHP 7.4-compatible environments or you'll encounter false positives/negatives.
No 2025Dezeen Theme: The CLAUDE.md documentation mentions a "2025Dezeen theme under development with Tailwind CSS" but this theme does not exist in the codebase. Documentation will be updated in Phase 5.
Yoast SEO Priority: The Yoast SEO Premium update from v13.0 (Jan 2020) to latest is the HIGHEST PRIORITY security fix. This must not be skipped or delayed.
Backup Verification: All backups must be tested for restoration before proceeding. A backup you can't restore is worthless.
Staging Environment Must Match Production: Staging should run PHP 7.4.20 to match production, not PHP 8.4.7, to ensure accurate testing.