It is funny, but depending on who you ask, reorganizing a website's taxonomy in WordPress can seem like a huge job or a minor task. Especially if they have never done it.
And if the website is small, it is fairly simple, even if you go post by post.
However, if the website has a good number of posts, things get complicated, because the impact is significant:
- Categories (new and old).
- Tags (ditto).
- Subcategories (same thing).
- Slugs.
- Old or unpublished articles.
- Import plugins.
- Export plugins.
- Fear of breaking half your blog.
- Or SEO…
Of course, the manual post-by-post option should be the last resort, both because of the time involved and the possibility of error.
That is why it is essential to have the path clear before you start touching anything. And that is what I am going to explain here, now that I have just done it for this website.
In my case, I wanted to do something very specific: improve the site's editorial organization by touching only what was necessary, without changing the main category or tag structure unless there was a clear justification.
In other words, no rebuilding everything from scratch, no deleting taxonomies in bulk, and no inventing new tags just because. Everything with the idea of building on top, not rebuilding from the foundations.
In this article I tell you the full process in case you want to do something similar on your website.
Let's get into it.
Índice de Contenidos del Artículo
- Before touching anything, the goal: what I wanted to achieve
- Step-by-step tutorial
- Step 1: export WordPress posts
- Step 2: work on the table
- Step 3: manually review the changes
- Step 4: create the new tags before importing
- Step 5: prepare the import file
- Step 6: import with WP All Import
- Step 7: configure matching by ID
- Step 8: update only taxonomies
- Step 9: add, not replace
- Step 10: test with a single record
- Step 11: import all records
- Step 12: check the counters
- Summary configuration of WP All Import
- Tips about the process
- Conclusion
- Frequently asked questions
- Can I recategorize many WordPress posts without doing it one by one?
- What fields should I export before reorganizing categories and tags?
- Why is using the WordPress ID so important?
- Is it a good idea to create new tags automatically when importing?
- Is it better to add categories and tags or replace the existing ones?
- How do I prevent WP All Import from modifying titles, slugs or content?
- What separator can I use to import several tags?
- Do I have to do a test before importing all records?
- Can recategorizing posts affect SEO?
- When does it make sense to create a new tag?
Before touching anything, the goal: what I wanted to achieve
The initial idea was simple: to have a better organized website so posts would be easier to classify, browse and reuse.
In my case, the overall structure was already clear and I did not want to change it. The website is organized into three main blocks:
- Technology.
- Leisure.
- Business.
And yes, in the future it may grow and add at least one more pillar, but now was not the time.
What I wanted now was to analyze the existing taxonomy and clean up what was unnecessary or add what was missing. In that sense, the main rule was this:
Do not create new categories or tags if they have no real use in already published articles.
In other words, this was not a theoretical exercise about “the topics I should write about on the blog”, but “how to better organize what is already written”.
This matters because one of the usual mistakes in WordPress is creating tags on impulse.
One day you write about a tool and create a tag. Another day you talk about a film and create another. Then you publish a review, a guide, a tutorial, a comparison… and you end up with dozens of tags with one or two articles.
That does not help. It just dirties up UX and SEO.
Step-by-step tutorial
So let's start with the step-by-step process I followed. I explain each point so you understand it properly.
Step 1: export WordPress posts
The first thing was to get a list of posts with their basic data.
For this I used the plugin WP All Export.
You install it and activate it as usual.
Once installed, you create a post export:
All Export > New Export
And you select:
Specific Post Type > Posts
The important fields to export in my case were:
ID
Title
Permalink
Categories
Tags
The key field is the ID.
You can work with titles, but you should not import bulk changes using only the title as a reference because there may be similar titles, future changes or duplicates. The WordPress ID is much safer.
Step 2: work on the table
This is the most important step if you want results. It is the moment to think through this recategorization and retagging.
In my case, I took the exported CSV and passed it to three AI tools (Claude, NotebookLM and ChatGPT) so they could evaluate it and suggest changes.
In the first interaction, with the same prompts, the results were similar: the three AI tools suggested changes to the category tree and a good handful of new tags.
That was not what I was looking for.
As I said before, what I wanted was a practical exercise — improving the categorization and tags of current content — not an editorial map about the topics I should write about.
Things changed quite a bit when I explained this to the AI tools and, above all, added one nuance:
Every new category, subcategory or tag they suggested had to have at least four current pieces of content.
That changed things, and although one AI still insisted on recategorization, the number of new tags went down.
In this first phase I decided not to delete anything, because my current taxonomy fit me better than the proposals. But I did add some subcategories to some articles and, above all, created three new tags that did make sense:
Tutorial
Productivity
Privacy
The final working table I asked ChatGPT for had these three columns:
Title
Categories to add
Tags to add
Step 3: manually review the changes
Obviously, when you ask an AI for something, you have to review it.
I did it with the new tags and the added subcategories. For example, it made sense to add Productivity to posts about Trello, organization, work tools or processes.
It also made sense to add Tutorial to clearly practical posts: setting up GA4, installing tools, using Gmail with your own domain, setting up Stable Diffusion, etc.
And Privacy only in cases where there really was an approach related to increasing our privacy on the internet, browsing, cookies or VPN. I removed it from all the Google Analytics articles, where the AI insisted on putting it. I understand its logic, but it is not the one I share for this section.
Before importing, I manually created the new tags in WordPress:
The plugin we will use to import the worked Excel file, WP All Import can create new tags during import, but I prefer to do it manually beforehand to avoid errors.
Why?
Because if there is a typo in the CSV, WordPress may end up creating junk tags such as:
“Productivty”
“Tutorials”
“Privacy”
“Privacy|”
And then you have to clean up.
Better to create the good tags manually and tell the importer not to create new terms.
Step 5: prepare the import file
To import the changes safely, I asked ChatGPT to prepare a file with this format:
ID
Title
URL
categorias_a_anadir
etiquetas_a_anadir
The format for multiple tags used a vertical separator:
Tutorial | Productivity
I use “|” because it is cleaner than a comma when working with CSVs or Excels.
Simplified example:
| ID | Title | categorias_a_anadir | etiquetas_a_anadir |
| 225 | Can a microwave take down a company's Wi-Fi? | Productivity | |
| 972 | GCLID: what it is and how to test it | Tutorial | |
| 2272 | Trello Tutorial | Tutorial | Productivity |
This file did not include content, excerpt, slug or date.
Only what was needed to add taxonomies.
Step 6: import with WP All Import
For the import I used the plugin I mentioned, WP All Import, which is the sibling of the one we used for exporting (WP All Export).
The steps are:
All Import > New Import
Upload the file prepared by ChatGPT and select:
Existing Items > Posts
I did not want to create new posts. Only update existing posts.
Then, in the taxonomy mapping, I wanted to configure the fields like this:
Categories (WP) => categorias_a_anadir (Excel)
Tags (WP) => etiquetas_a_anadir (Excel)
To do this, you have to select the variable that appears in the box at the top right, which makes the field fill in between braces like this:
Categories => {categorias_a_anadir[1]}
Tags => {etiquetas_a_anadir[1]}
For categories, I kept the hierarchical separator:
>
So I could use values like:
Business > Marketing
For tags, I configured the separator:
|
This was essential, because the file was prepared like this:
Tutorial | Productivity
If I had left the comma as the separator, the importer would not have separated the tags properly.
Step 7: configure matching by ID
This is a fundamental.
On the import configuration screen, you choose:
Attempt to match existing Posts before creating new ones
And then:
Post ID
There you drag the dynamic field from the CSV, just like with the categories and tags before:
{id[1]}
The correct configuration was:
Match by Post ID: {id[1]}
This way WordPress knows exactly which post it has to update.
Step 8: update only taxonomies
On the same screen, you choose:
Choose information to update
And you check only:
Taxonomies (incl. Categories and Tags)
You therefore leave unchecked:
Title
Content
Slug
Date
Status
Author
Images
Custom fields
Excerpt
I do not want surprises, so this way I prevent the importer from changing absolutely any of these fields.
In fact, WP All Import displayed a warning that the title was blank. But it did not matter, because the title was not going to be updated.
If I had checked “Update all information”, that would have been ugly.
Step 9: add, not replace
Another important option within taxonomies is:
Only add new
This means WordPress adds the new categories and tags, but does not remove the ones each post already had.
I did not use:
Replace existing terms
or anything similar.
The intention was clear: add taxonomy, not replace it.
I also left enabled what I mentioned earlier:
Do not create new terms
This prevents the importer from creating new categories or tags by mistake.
Step 10: test with a single record
Before importing the full 102 records, the proper thing is to test with a single post.
To do this, in advanced settings you check:
Import only specific records
And you enter:
1
The first post in my case was:
Can a microwave take down a company's Wi-Fi?
The goal was to check that it added the tag:
Productivity
Without touching anything else.
The log you get at the end of the import confirmed that:
· Found the existing post.
· Kept the title.
· Kept the slug.
· Kept the content.
· Kept the date.
· Kept the author.
· Imported the post_tag taxonomy.
· Added the Productivity tag.
With that I had enough confidence to run the full import.
Step 11: import all records
Then I removed the specific-record limit and ran the full import.
The file had 102 records.
After the import, the log confirmed that the process worked as I wanted. But it still had to be checked visually.
Step 12: check the counters
When I finished, I reviewed a section in WordPress that I created with tag and category counters. The expected results were:
| Tag | Expected posts |
| Tutorial | 90 |
| Productivity | 20 |
| Privacy | 4 |
This matched the plugin reports, so the file had imported correctly.
Summary configuration of WP All Import
The final configuration is this:
Tipo de importación:
Existing Items > Entradas
Match:
Post ID = {id[1]}
Actualizar:
Solo taxonomías
Categorías:
Campo = {categorias_a_anadir[1]}
Separador jerárquico = >
Etiquetas:
Campo = {etiquetas_a_anadir[1]}
Separador = |
Modo:
Solamente agregar nuevo
Términos nuevos:
Do not create new terms
Tips about the process
I will repeat some of the most important parts of the process if you want everything to go well.
First: do not mix editorial review and technical import.
First you decide the taxonomy. Alone or with help from AI.
Then you prepare the file.
Then you import.
Step by step. If you try to do everything at once, it is easy to make mistakes.
Second: the WordPress ID is mandatory for working safely. The title is useful for reviewing, but not for matching posts.
Third: it is advisable to test with one post before launching the full import. A badly separated CSV or the wrong option can create quite a mess.
Fourth: disabling automatic term creation reduces errors. If the term does not exist, I prefer it not to import rather than have WordPress create misspelled tags.
Conclusion
Recategorizing and retagging a WordPress website is not difficult, but it does require method.
I do not recommend doing it from the post editor one by one unless you have very few articles. If you have a website with years of content, the most reasonable thing is to work with an export, review it in Excel and perform a controlled import.
Although the 12-step flow may seem long, it is very comfortable. And working on categories and tags outside WordPress, in Excel or similar, is essential for medium or large sites.
Knowing this process is one of those invisible jobs that make a website easier to manage, browse and improve as it scales by creating content.
And above all, you can do it yourself without a developer and without breaking anything. Step by step and without touching code.
Did you know this process? Do you do it another way? I will read you in the comments.

Leave a Reply