Add tags/categories to a WordPress post from WP-CLI
bash, command-line-interface, wordpress
Solution
As you may know, post tags are a WordPress taxonomy (like categories) called `post_tag`.
You need a set of subcommands of `wp post`, specifically `wp post term`, to edit them.
You also need WP-CLI v0.18.0 or above – older versions don't have it.
In all these examples, 1 indicates the post ID.
Add one or more tags to any existing tags
Separate multiple tags with spaces (not commas.)
wp post term add 1 post_tag foo
Success: Added term.
"Set" one or more tags
This will replace (overwrite) any existing tags for the post. You'd use this instead of `remove` followed by `add` (one fewer command necessary.)
Separate multiple tags with spaces.
wp post term set 1 post_tag bar baz
Success: Set terms.
List current tags
wp post term list 1 post_tag
+---------+------+------+----------+
| term_id | name | slug | taxonomy |
+---------+------+------+----------+
| 7 | bar | bar | post_tag |
| 5 | baz | baz | post_tag |
+---------+------+------+----------+
Remove tag(s)
wp post term remove 1316 post_tag baz
You can also use this for categories or any other taxonomy.
Problem
I have a bash script that posts to WordPress. It does this fine, but I want to have it add tags to the posts. It uses WP-CLI and there doesn't seem to be a way to add tags to a post from it. To clarify, I'm talking about post tags, not HTML tags. Also, this bash script is being run on the same server that is hosting the WordPress site. I also found blogpost.py, however it doesn't seem to have a tag feature either. From what I've read, I think I would be able to accomplish what I want using XML-RPC in some way, but I know almost nothing about it. Here's the WP-CLI command I've been using. Which works, but doesn't add tags. ``` wp post create --post_title="This is the title" --post_content="This is the post" --post_status=future --porcelain ``` In desperation, I tried adding `--post_tags="these are tags"`, but it didn't work. I've been searching for the answer for days now. I just want to be able to make a WordPress post, with tags and a category, from a cronjob. I'm familiar with bash, so that would be best, but if you know of any solutions using other languages, that's welcome also. Thanks.