Migrating from WordPress
jekcms ships with a first-class WordPress importer. Given a standard WXR export file, it reconstructs posts, pages, authors, categories, tags, featured images, and post meta — and auto-generates 301 redirects so your existing search traffic keeps landing on the right pages.
This guide walks the full migration path.
Step 1 — Export from WordPress
In your WordPress admin:
- Tools → Export
- Choose All content (or narrow by post type if you only want some)
- Click Download Export File
You'll get a file like yoursite.wordpress.2026-04-21.xml. This is a WXR file — a flavor of RSS that WordPress uses for migration. Keep it; you'll upload it next.
Large sites (>50 MB export) should split the export by date range. WordPress's exporter has a "Date range" filter; run it once per year and upload the files sequentially.
Step 2 — Upload to jekcms
In the jekcms admin:
- Tools → Import → WordPress
- Drag-and-drop your WXR file (or browse)
- Click Analyze
The analyzer parses the file and shows a preview: X posts, Y pages, Z authors, N images referenced. No data is written yet — this is your chance to review.
Step 3 — Map authors
WordPress author IDs don't match jekcms user IDs. The importer shows a mapping table:
| WP Author | jekcms User | |-----------|-------------| | admin (Jane Doe) | Select existing user or Create new | | editor2 (John) | Select existing user or Create new |
Pick an existing jekcms account or let the importer create new users with the original email and a random password (they'll receive a reset email).
Step 4 — Run the import
Click Start Import. The importer processes in batches of 50 posts:
- Posts and pages are inserted with original publish dates preserved
- Categories and tags are merged by slug (existing ones reused, new ones created)
- Post meta (custom fields) copied verbatim into jekcms's
post_metatable - Draft vs published state preserved; scheduled posts remain scheduled
- Featured images downloaded from the WP origin into
uploads/imported/YYYY/MM/and rewired to the new post - Inline images in post content are also downloaded and the
<img src>attributes rewritten to local URLs
Progress bar updates live. A 2,000-post site with 8,000 images typically takes 20–40 minutes depending on the origin server's speed.
URL preservation and redirects
jekcms auto-generates a redirect table so old WP URLs keep working:
/2023/11/15/my-old-post/ → /my-old-post
/?p=42 → /my-old-post
/category/news/ → /category/news
These land in Tools → Redirects with type 301. Apache/Nginx enforce them via the jekcms rewrite layer — no manual .htaccess edits required.
If your WP permalink structure was non-standard, edit the URL preservation setting before importing and paste your permalink_structure value (e.g., /%category%/%postname%/).
What's imported vs. not
Imported:
- Posts (
posttype) - Pages (
pagetype) - Categories and tags
- Authors (with creation)
- Featured images and inline images
- Post meta / custom fields
- Publish state and dates
Not imported:
- Themes — jekcms themes are a different architecture. Pick one under Appearance → Themes.
- Plugins — no 1:1 port. jekcms has built-in SEO, forms, caching, and AI, so most common WP plugins are already covered.
- Widgets and sidebars — rebuild these in your jekcms theme's customizer.
- Custom post types — only
postandpageby default. To include others (e.g.,portfolio,product), tick the custom post type boxes in the analyzer preview. - Comments — off by default. To include, check Import comments in step 2. Comments come over with their approval state.
Post-import cleanup
Run through this checklist after the import completes:
- Slug audit — Posts → All Posts → Sort by slug. Look for duplicates or weird characters. WP sometimes stores transliterated slugs that don't match your current theme's canonical URL rules.
- Featured image verification — Media Library → Filter: Imported → Missing thumbnails. Any image that failed to download shows a broken-link indicator; re-upload manually or click Retry fetch.
- Comment review — if you imported comments, spot-check for spam that WordPress had missed. jekcms's built-in Akismet-equivalent runs on the whole batch automatically.
- Redirect spot-check — open 5 old URLs in an incognito tab. All should 301 to the new location.
- Re-submit sitemap — Google Search Console → submit
/sitemap.xmlso the new URLs index fast.