Change a post's type without losing what was attached to it
Set up a post type converter WordPress content can move between types safely with: a full impact report before anything changes, a real decision for every taxonomy involved, an automatic redirect for the old URL, and a genuine undo.
- A full analysis of what would change, before you commit.
- Four taxonomy modes: keep, match, map, or drop, per taxonomy.
- Redirects the old URL automatically through Redirect Manager.
- Genuinely reversible — slug, terms, meta and the redirect included.
Post type converter WordPress: what does the module actually do?
This is what a post type converter WordPress content gets with TheOneWP: a "Convert Type" row action on posts and pages runs TOWP_Post_Type_Converter::analyze() first, reporting exactly what would change — taxonomy terms that won't carry over, slug conflicts, hierarchy the destination can't express, sticky flags, page templates, post formats and comment support. Converting then applies a decision for every taxonomy involved (keep, match, map or drop), re-runs slug uniqueness for the new type, optionally creates a redirect from the old URL through Redirect Manager, and records a full undo record before anything risky happens — so a "Convert / Restore Type" action can put the post back exactly as it was.
Changing a post's type is more than one database column
WordPress's own set_post_type() writes a single column and clears the cache — everything that was bound to the old type is simply left behind.
Categories and tags don't automatically follow
A taxonomy the destination type doesn't register still has terms assigned to the post, quietly disconnected rather than migrated anywhere useful.
A changed URL breaks every existing link to it
Slugs are unique per post type, so a converted post can collide with an existing one, and its permalink can change entirely — with nothing pointing visitors or search engines to the new address.
Analyze first, apply in full, keep a way back
The module treats a conversion as a described, reversible operation instead of a single quiet database write.
A real report before anything changes
Taxonomy conflicts, slug collisions, lost hierarchy and more are all surfaced up front, not discovered afterward.
A real decision for every taxonomy
Keep, match, map or drop — nothing about existing terms is left to chance or silently dropped.
Genuinely reversible
An exact undo record means a conversion is a decision you can revisit, not a one-way door.
The complete post type converter WordPress feature set
Every capability below is present in the conversion engine or its admin AJAX handlers.
Full pre-conversion impact report
Blocked posts, taxonomy handling, slug conflicts, lost hierarchy, sticky posts, page templates, post formats and comment counts — all computed before conversion.
Four handling modes
Keep (recoverable, not deleted), Match (rebuild per-post by slug then name), Map (a fixed set for every post), or Drop — chosen individually per taxonomy.
Automatic Redirect Manager integration
A 301 or 302 redirect is created for the old address only when the URL genuinely changes — loop detection uses the same check Redirect Manager relies on itself.
Exact undo
Previous type, slug, parent, menu order, taxonomy terms and removed meta are all restorable with one action, including deleting the redirect that was created.
Leftovers handled explicitly
Page templates and post formats the destination doesn't support are removed and recorded; a sticky post that becomes a non-post type is un-stuck automatically.
Real WordPress save hooks fire
save_post and save_post_{type} fire after a conversion, so caches, search indexes and other plugins hear about it the same way they would for a normal save.
Run a post type converter WordPress conversion in four steps
Read the impact report before committing — it exists specifically so nothing is a surprise.
Click "Convert Type" on a post or page
Available as a row action for any post type enabled for conversion in settings.
Review the impact report
Check taxonomy conflicts, slug collisions and anything else flagged before choosing to proceed.
Decide each taxonomy and confirm the redirect
Pick keep, match, map or drop per taxonomy, and leave the redirect option on if the URL will change.
Convert, or restore if it wasn't right
"Convert / Restore Type" appears afterward — undo puts everything back exactly as it was.
Where converting a type beats starting over
The module fits situations where content structure needs to change without losing the content itself.
Turning posts into pages, or back
Move content between the two most common types without manually copying titles, content and taxonomy assignments.
Migrating into a new custom post type
Move existing posts into a purpose-built post type as a site's content model matures, with a real decision for each taxonomy along the way.
Testing a structural change safely
Convert, review the result, and undo cleanly if it turns out to be the wrong call — with the redirect it created removed too.
Conversions that don't leave a mess behind
Every design choice in the verified code favors a complete, checkable operation over a fast but incomplete one.
A direct write, not the full save pipeline
The verified implementation avoids re-running work that a conversion doesn't need.
Direct database row update
Column changes go through $wpdb->update() directly instead of wp_update_post(), avoiding a second full save cycle mid-conversion.
Hooks fire once, deliberately
save_post is triggered once, explicitly, after the row is fully coherent — not repeatedly as intermediate steps run.
Assets load only on the list screen
The dialog's CSS and JS enqueue only on edit.php for post types where conversion is actually enabled.
Checked at both ends, every time
A conversion touches capability boundaries on two post types at once, and the code checks both.
edit_post on the source, create_posts on the destination
can_convert() requires the user to be able to edit the existing post and to create content of the destination type — either missing blocks the conversion.
Nonce-verified AJAX on every action
Context, convert and revert all check a dedicated nonce before doing anything.
Destination type validated against an explicit allowlist
Only post types WordPress actually registers with an admin UI, minus a filtered exclusion list, can be offered as a destination at all.
Trashed content excluded entirely
The row action doesn't appear on trashed posts — content on its way out isn't a candidate for conversion.
Built to work with Redirect Manager specifically
The supplied code checks for a real module dependency by name rather than assuming redirects are always possible. No compatibility claim beyond the verified implementation is assumed.
Redirect Manager
Redirect creation only happens if that module is enabled — checked with class_exists( 'TOWP_Redirect_Manager' ) before ever calling it.
Content Clone's dialog styling
The conversion dialog shares its stylesheet with the Content Clone module, so the two look and behave consistently.
post_row_actions / page_row_actions
The only UI entry point in the shipped admin class — a button added to each row in the standard WordPress list table.
TheOneWP versus common alternatives
Compare a real post type converter WordPress implementation with WordPress core's own set_post_type() or a basic conversion plugin.
| Capability | TheOneWP Post Type Converter | Other common solutions |
|---|---|---|
| Pre-conversion visibility | A full impact report before anything changes | set_post_type() alone gives no warning at all |
| Taxonomy handling | Four explicit modes, decided per taxonomy | Often left disconnected with no decision offered |
| Old URLs | Redirected automatically via Redirect Manager | Usually left broken unless handled manually |
| Undo | Full restoration, including the redirect created | Rarely offered at all once a conversion runs |
| Save pipeline | Direct row update, hooks fired once deliberately | Varies; some tools re-trigger the full save cycle |
| Administration | A row action inside the list table already in use | May require a separate screen or bulk tool |
Convert with the report, not around it
A few habits keep type conversions predictable.
Read every line of the impact report
It exists specifically to surface consequences before they happen — don't skip past it.
Use Match for per-post taxonomy fidelity
When each post's own terms matter, Match preserves that instead of applying one fixed set to everything.
Keep the redirect option on for published content
It only creates a rule when the URL genuinely changes — there's little reason to turn it off for live content.
Use Undo instead of converting back manually
It restores taxonomy assignments and meta a second manual conversion wouldn't reliably reproduce.
Avoid assumptions the code does not support
The module has a defined, verified scope — a few assumptions outside it cause confusion.
Expecting a bulk-conversion screen
The shipped admin UI converts one post at a time through a row action — there is no batch or Quick/Bulk Edit interface in this admin class.
Assuming Keep migrates terms to a new taxonomy
Keep only carries over an assignment the destination already shares — a taxonomy it doesn't register stays untouched, not moved anywhere.
Expecting a redirect without Redirect Manager enabled
Redirect creation is entirely conditional on that module being active — without it, no rule is created regardless of the toggle.
Post Type Converter FAQ
These answers come directly from the verified conversion engine and its admin AJAX handlers.
Does this convert one post at a time, or in bulk?
One at a time, through a "Convert Type" button added to each row in the posts and pages list. The underlying engine is written so other interfaces could reuse the same methods, but the shipped admin UI only wires up this single-post row action.
What happens to categories or tags the destination type doesn't have?
You choose per taxonomy: Keep leaves the assignment in place even though it's inactive under the new type (and it becomes valid again if that taxonomy is later registered for it), Match rebuilds the same terms under a taxonomy the destination does have, Map applies a fixed set of terms to every converted post, and Drop clears the assignment.
Can a conversion be undone?
Yes. The exact previous type, slug, parent, menu order, taxonomy assignments and any removed meta are recorded before the conversion changes anything, and a "Convert / Restore Type" action reverses it, including deleting any redirect the conversion created.
Does converting a post create broken links to its old URL?
Not if Redirect Manager is active. When the address actually changes, a 301 or 302 redirect from the old permalink is created automatically through Redirect Manager's own save_redirect() — the same loop-detection check that module uses on its own confirms a redirect is genuinely needed first.
What happens to a slug that already exists under the destination type?
It gets resolved automatically. Slug uniqueness in WordPress is per post type, so the conversion re-runs wp_unique_post_slug() and records what changed, since a slug that was safe under the old type can collide under the new one.
Does this use wp_update_post() to change the type?
No, deliberately. wp_update_post() would re-sanitize the slug against the type being left and fire the full save pipeline mid-conversion. The engine writes the database row directly and fires WordPress's own save_post hooks itself once the row is in a coherent state.
Can any post type be converted to any other?
Only types with an admin UI, minus ones whose data wouldn't survive being reinterpreted as a post — attachments, revisions, nav menu items, and several WordPress and WooCommerce internals are excluded by default, and the exclusion list is filterable.
What does the pre-conversion analysis actually check?
Blocked posts, taxonomy terms that won't carry over automatically, slug conflicts, hierarchy the destination can't express, sticky posts, page templates, post formats, and comment counts the destination doesn't support — computed before anything is changed.
Stop losing terms when you change a type.See the impact first, then convert.
Use a post type converter WordPress content can move between types with confidence: a real report, a decision for every taxonomy, and an undo that actually works.

