Efficient way on updating multiple tags or categories
Usage?

You have not listed what kind of queries will hit this table.  You can't really design a table, much less optimize it, until the SELECTs are tentatively written.  More later.

First, some simplification

Get rid of id; make PRIMARY KEY(post_id, meta_key, meta_value).  After all, that has to be unique.  The id is clutter and slows things down for the normal operations which involve WHERE post_id = constant AND meta_key = constant.

Because of the 3 tags vs 4 tags you mentioned, the only reasonable way to do it is

DELETE FROM meta WHERE post_id = ? AND meta_key = ?;
INSERT INTO meta (post_id, ... )
    VALUES
    (...), (...), (...), (...);


Then some more simplification

The EAV schema (which you have) sucks.  You may as well have a table called Tags.  Now you can get rid of meta_key, and everything gets simpler and shorter.

You may choose to keep the EAV stuff for where there is only one value for a meta_key.  That is a separate discussion.  I'm arguing that it is wrong to fit multi-valued "tags" into that mold.

Further

Do you really need those timestamps?  WP may be omnipresent, but it is not necessarily 'right'.

Ordering?

When you fetch everything for some tag, don't you want to put them is some order?  And might you paginate it?  So, maybe you need one of those timestamps for this?

Bottom line

CREATE TABLE `tags` (
    post_id ... NOT NULL,
    tag varchar(55) NOT NULL,
    sort_order ... NOT NULL,
  PRIMARY KEY (tag, sort_order, post_id),  -- for the main select, plus dedup
  INDEX(post_id)  -- for maintenance
) ENGINE=InnoDB;


Further discussion