In Part 1 of our series, we walked through how to transition from WordPress to Craft CMS. If you missed the reasoning behind these migrations, here’s why we’re advocating for better alternatives to WordPress in the first place.
This time, we're diving deeper, and getting a bit more technical, on how to migrate a WordPress site to ExpressionEngine (EE), a robust and secure CMS built for performance, flexibility, and long-term stability.
Step 1: Audit and Export Content from WordPress
Before doing anything inside ExpressionEngine, you’ll need to extract your existing content. This includes:
- Posts
- Pages
- Categories
- Tags
- Custom post types
- Media files
We recommend using the WordPress REST API or a tool like WP All Export to generate structured data (CSV, XML, or JSON). Pay close attention to:
- Content hierarchy (parents, children)
- Featured images and galleries
- Custom fields (ACF)
Step 2: Set Up ExpressionEngine Locally or on a Staging Server
Install ExpressionEngine via Composer or the EE installer. Configure your .env
file with staging database credentials, and get your file paths set properly for assets and templates.
Use EE’s channel and field system to mimic your WordPress structure. For example:
- WordPress "Posts" become a Channel in EE
- Categories/Tags map to EE Categories or Relationship fields
- ACF custom fields map to EE’s custom fields (text, grid, file, etc.)
Step 3: Create Matching Templates
ExpressionEngine separates content from presentation cleanly. You’ll create template groups and templates (HTML + EE tags) that reflect your WordPress front-end structure.
For example:
blog/index.html
for the main blog loopblog/entry.html
for single post pagespages/about.html
for static content
You can recreate page structure using template variables like {exp:channel:entries}
and custom fields.
Step 4: Import Content
Depending on your export format, we typically use:
- EE's built-in DataGrab (commercial add-on) or Smart Import Pro
- Custom PHP scripts for complex field mapping
- Manual uploads for media and assets
Map each CSV/JSON field to its matching EE field. If you’re pulling in categories or relationships, make sure to import those first to maintain content relationships.
Step 5: Optimize Structure and Templates
With your content in place, clean up any leftover formatting or mismatches from the import. This is also the right time to:
- Enable caching
- Set up clean URLs with custom routes or template groups
- Add SEO-friendly meta tag fields
- Enable secure file uploads and role-based content editing
Step 6: Launch and Replace URLs
Once everything is tested and optimized, point your domain to the new EE server. Then:
- Set up 301 redirects from old WordPress URLs to new EE equivalents
- Submit your updated sitemap to Google Search Console
- Monitor error logs and crawl reports for anything missed
ExpressionEngine offers a powerful, modular, and stable platform for content-driven websites—without the bloat and vulnerability of plugin-heavy WordPress installs.
Moving from WordPress doesn’t have to be painful. With the right process, and the right partner, it’s an opportunity to create a website that’s faster, easier to manage, and built for the future. At Rudder Digital, we’ve migrated multiple sites from WordPress to ExpressionEngine, carefully mapping structure, preserving SEO, and future-proofing content.
Let us help you choose the best path forward. Contact us and let’s talk about your next move.
Stay tuned for upcoming posts on how to move WordPress content to other content management systems.