Eric Mutema

Case study 01 of 08

Global Atlanta

Moved a 30-year-old international business publication off Newspack to a custom GeneratePress build, then stabilized its performance, data and security.

Role
Lead WordPress developer
Type
Client work, long-running engagement
Timeline
Ongoing. Migration launched in 2026
Stack
  • WordPress
  • GeneratePress
  • PHP
  • The Events Calendar
  • Paid Memberships Pro
  • Fluent Forms
  • Gravity Forms
  • Kinsta
  • Cloudflare

01The Problem

Global Atlanta has tracked Atlanta's rise as a global city for more than 30 years. The site carries regional news sections, an events calendar, paid memberships and a jobs board, and it ran on Newspack.

Alongside the rebuild, live issues were hurting readers and staff:

  • Bots crawling event archives caused PHP-FPM upstream timeouts, so pages failed to load.
  • 29 native events widgets pushed pages into the PHP memory ceiling.
  • Forms failed because the edge cache served stale nonces.
  • Jetpack kept falling back into Safe Mode, and the firewall blocked Mailchimp's RSS crawler, so newsletters could not pull new posts.

02The Approach

I planned the migration architecture before writing code: the content model, regional section templates, event views and which existing plugins to keep.

I chose GeneratePress as a lightweight base with a custom child theme, instead of another full news theme with its own opinions.

For performance, I traced the timeouts to bot crawling of event archives and fixed the traffic at the edge before touching server resources.

03The Solution

The publication now runs on a custom theme, with the fixes below shipped during and after the move.

  • A GeneratePress child theme with block patterns, regional section templates and overrides for The Events Calendar.
  • A database repair for email addresses that a migration search-replace had corrupted by appending full URLs to usernames, across posts, options, postmeta, Gravity Forms entries and mail logs.
  • Cloudflare firewall rules and caching for event archives, database cleanup, tuned Kinsta caching and a Core Web Vitals review focused on CLS and TTFB.
  • 29 native Tribe Events widgets replaced with shortcode-based Custom HTML widgets to bring memory use back under the limit.
  • Fresh nonces for Fluent Forms behind Kinsta's edge cache, an end to Jetpack's Safe Mode loop, and Mailchimp's RSS crawler let through the firewall.
  • Removed unauthorized admin access, locked down wp-admin, and resolved DNS and SSL issues.

04The Why

GeneratePress keeps the front end light and puts layout decisions in a child theme the client owns, so the site is not tied to one vendor's roadmap.

Stopping bad bots at Cloudflare removes load before it reaches PHP, which is cheaper and more reliable than adding server capacity.

The widget swap keeps the same events output at a fraction of the memory, instead of raising limits and hiding the problem.

Repairing emails in place kept every member and form record intact, where restoring a backup would have lost newer data.

05The Result

The publication runs on a theme the team controls, with section and event templates built for its content. Event archives no longer time out under bot load, forms submit reliably and newsletters pull new posts again.

06Stack

  • WordPress
  • GeneratePress
  • PHP
  • The Events Calendar
  • Paid Memberships Pro
  • Fluent Forms
  • Gravity Forms
  • Kinsta
  • Cloudflare

Visit site