コマンドラインで WordPress に投稿する

環境:macOS Catalina Version 10.15.6(英語環境)、MAMP 6.3 上の WordPress 5.7.1(英語)

(1)「WordPress REST API (Version 2)」プラグインのインストール。

WordPress REST API (Version 2) – WordPress プラグイン | WordPress.org 日本語
https://ja.wordpress.org/plugins/rest-api/

(2)WordPress のルートディレクトリにある wp-config.php を編集。以下を追記。

add_filter(‘wp_is_application_passwords_available’, ‘__return_true’);

これで「管理画面>Users>[ユーザー名]」に「Application Passwords」という項目が追加される。「New Application Password Name」に適当な名前を入力し、「Add New Application Password」をクリック。表示されたアプリケーション・パスワードを別途メモしておく。アプリケーション・パスワードは4文字ごとにスペースが入っているが、以降スペースを削除して使う。

Terminal で以下のコマンドを実行し実験してみる。

$ curl -Iu [ユーザー名]:[アプリケーション・パスワード] [ホストのアドレス]/wp-json/wp/v2/posts

これで、HTTP/1.1 200 OK で始まる文字列が返ってくるはずだ。失敗すると HTTP/1.1 401 Unauthorized と表示される。

(3)以下のコマンドで投稿できる。

$ curl -X POST --user [ユーザー名]:[アプリケーション・パスワード] -H "Content-Type: Application/json" -d '{"title":"テスト","content":"1行目
2行目","status":"publish"}' [ホストのアドレス]/wp-json/wp/v2/posts

スラッグを指定したければ、-d の { } 内に以下のように追記すればいい。

“slug”:“this-is-a-test-post”

カテゴリーやタグの指定はやや手間だ。一旦、カテゴリーやタグを作成しておく。そのうえで、「管理画面>Categories>Name>[該当カテゴリー]」あるいは「管理画面>Tags>Name>[該当タグ]」にマウスオーバーする。するとブラウザの下に表示される URL で tag_id= に続いて表示される数字が、カテゴリー ID やタグ ID となる。この数字を -d の { } 内に記入すればいい。

“categories”:"[カテゴリー ID]"

“tags”:"[タグ ID]"

参考:
WordPress 5.6以降から実装されるアプリケーションパスワード | きいちログ
https://wptech.kiichiro.work/post-13/

WordPress5.5で追加されたwp_get_environment_type()関数 – ネコでもわかるWebのメモ帳
https://wp.go-sign.info/wp_get_environment_type-function-that-was-added-with-wordpress5-5/

WordPress REST APIで投稿の取得から新規投稿を行う | Tips Note by TAM
https://www.tam-tam.co.jp/tipsnote/cms/post10274.html

[WordPress] REST APIで外部システムから投稿するには(2/2) | Ninton
https://www.ninton.co.jp/archives/5424

WordPressで「カテゴリーID」を調べる方法 | OPENCAGE
https://open-cage.com/wp-category_id-investigate/