Well, it uses 3 tables. The fourth one (wp_termmeta
) is just a way of allowing you to store some meta values for terms (icons, additional descriptions and so on).
Citing from Codex:
- wp_terms – The categories for both posts and links and the tags for posts are found within the wp_terms table.
- wp_termmeta – Each term features information called the meta data and it is stored in wp_termmeta.
- wp_term_relationships – Posts are associated with categories and tags from the wp_terms table and this association is maintained in
the wp_term_relationships table. The association of links to their
respective categories are also kept in this table.- wp_term_taxonomy – This table describes the taxonomy (category, link, or tag) for the entries in the wp_terms table.
So the only part that may be confusing is that there are separate tables for terms and term_taxonomy… And it can be confusing, because it has lost its meaning nowadays.
But before WP 4.2.2 (I guess) the approach to terms was a little bit different – terms were unique across wp_terms
table.
So if you had “books” as category and “books” as tag, then there was only one record with “books” in wp_terms
and obviously 2 records in wp_term_taxonomy
.
But when the wp_termmeta
table was introduced it would make it confusing – so such terms were split. And today, for the example above, you’ll have two separate rows in wp_terms
table.