Your content belongs to WordPress, and a theme is the layer that displays it. Everything WordPress considers its own survives any theme change, and everything the old theme declared leaves with it. Every case below follows from that.
#What moves with nothing to do
- posts and pages
- attachments and the whole media library
- categories and tags
- comments
- users and authors
- menus, meaning the menu items themselves
- reading settings and permalink structure
Nothing here needs exporting, converting or reconnecting. It is still there after the switch.
#What stops working
The data stays. What leaves is the code that displayed it.
- Custom post types from the old theme
The entries stay in the database. If the old theme declared the type, it is no longer registered after the switch: it disappears from the admin menu and its pages return 404. A new theme declares its own types and does not adopt somebody else's.
- Custom taxonomies from the old theme
Same situation, same reason.
- Shortcodes from the old theme
The shortcode text is left in the content as a plain string. This is the most visible breakage, because it shows on every page that used one.
- A page builder built into the old theme
Layouts made with a theme's own builder do not render afterwards. A builder that is a separate plugin keeps its pages, though the look still changes, because the styling comes from the theme.
- Widgets and menu locations
Menu items stay; the assignment to locations does not, because the new theme declares different ones. Widgets from old sidebars move to Inactive Widgets rather than disappearing.
- The old theme's settings
Colors, fonts and layouts do not transfer, and cannot: two themes have different settings systems with different fields.
No theme change carries the previous theme's custom functionality into the new one, whichever two themes are involved.
#The order to do it in
Take a backup
Database and files, before anything else. Your host's backup, a backup plugin, or a manual database export all work.
Export your content
ToolsExport produces an XML file with your native content. It is insurance, and it is also how content moves to a different site.
Try it on a copy first
A staging copy is the calmest route by a wide margin. Staging is a separate domain, and every license carries a free slot for one.
Review afterwards
Walk the checklist below.
#The review checklist
Menus are assigned to the new theme's locations
Widgets are placed where you want them
Pages that used shortcodes have been opened and checked
Custom post types you rely on still exist
Permalinks resolve (if they do not, open SettingsPermalinks and save once)
#Demo import on a site that already has content
A demo import adds its content beside yours.
Your posts and pages are not erased, but the settings and widget areas you choose to import take the demo's values, and the result looks like a mixture of two sites. Demo import is a tool for a clean install: on one with real content, either skip it or select only the data types you need.
#Cloning a site
A copy taken to another domain, or a staging site promoted to live, carries the license activation record with the database. That record names the old domain, so the new site reports the license as lost. Nothing is broken: release the activation and run it again on the new domain.
#Common questions
Can I move the old theme settings across?
No. Two themes have different settings with different names and different meanings, so there is nothing to map between them.
My old shortcodes are showing as text
Rendering them again means keeping the plugin or theme that provided them, which usually is not an option after a switch. A search and replace across the database can strip them instead, with a backup taken first.
Will my SEO rankings drop?
Not because of the theme, as long as the URLs stay the same. Leave the permalink structure alone during a switch and the addresses search engines already know keep working.
Something looks lost
Check the database before assuming it is gone. Content usually survives even when nothing is displaying it, and a plugin that registers the missing post type can bring an old archive straight back into view.
#Still stuck
Open a support ticket and say what you tried and where it stopped. Your product, your domain, a screenshot and the exact message you saw are usually enough to settle it in one reply.
Last updated