LoginSignup
5
3

More than 3 years have passed since last update.

WordPress REST APIで更新や削除を試す

Posted at

アプリケーションパスワードの設定をして権限が有る前提です。
これにより、APIで投稿の作成、更新、削除が可能になります。
今回は更新と削除もやってみましょう。

更新

リファレンス

公式を見ると以下のように書かれています。
ほとんど作成と一緒で違うのはエンドポイント。更新したい投稿のidを入れるとこでしょう。

POST /wp/v2/posts/<id>

引数 説明
id Unique identifier for the object.
date The date the object was published, in the site's timezone.
date_gmt The date the object was published, as GMT.
slug An alphanumeric identifier for the object unique to its type.
status A named status for the object.
次のいずれか: publish, future, draft, pending, private
password A password to protect access to the content and excerpt.
title The title for the object.
content The content for the object.
author The ID for the author of the object.
excerpt The excerpt for the object.
featured_media The ID of the featured media for the object.
comment_status Whether or not comments are open on the object.
次のいずれか: open, closed
ping_status Whether or not the object can be pinged.
次のいずれか: open, closed
format The format for the object.
次のいずれか: standard, aside, chat, gallery, link, image, quote, status, video, audio
meta Meta fields.
sticky Whether or not the object should be treated as sticky.
template The theme file to use to display the object.
categories The terms assigned to the object in the category taxonomy.
tags The terms assigned to the object in the post_tag taxonomy.

APIを叩く

アプリケーションパスワードで認証をヘッダーに付与することを忘れずに。
エンドポイントはhttp://localhost:8000/wp-json/wp/v2/posts/8 (idは適宜変更)
リクエストボディのJSONは

リクエストボディ
{
    "title": "Update Title",
    "status": "publish"
}

これで投稿が更新されタイトルが変更され、statusがpublishとなり「下書き」状態が、「公開済み」になります。
ちなみにPOSTメソッドとなっていますが、PUTPATCHメソッドでも更新が反映されました。

削除

リファレンス

DELETE /wp/v2/posts/<id>

引数 説明
id Unique identifier for the object.
force Whether to bypass trash and force deletion.

APIを叩く

こちらもアプリケーションパスワードで認証をヘッダーに付与することを忘れずに。
エンドポイントはhttp://localhost:8000/wp-json/wp/v2/posts/8 (idは適宜変更)
リクエストボディはなくてもOK。DELETEメソッドなのを忘れずに!
これでstatustrashとなりゴミ箱に移動することが確認できます。

もう一度同じAPIを叩くと410のステータスでエラーが返ってきます。

レスポンス
{
    "code": "rest_already_trashed",
    "message": "その投稿はすでに削除されています。",
    "data": {
        "status": 410
    }
}

以下をリクエストボディに入れてAPIを叩くとゴミ箱にも残らず完全消去となります。

リクエストボディ
{
    "force": true
}

完全消去した後に同じAPIを叩くと404のエラーでレスポンスが返ってきます。
WordPress REST APIはエラー作り込んでますね!好感持てます!

レスポンス
{
    "code": "rest_post_invalid_id",
    "message": "無効な投稿 ID です。",
    "data": {
        "status": 404
    }
}

まとめ

WordPress REST APIで投稿の更新、削除をしてみました。
わりと簡単で、一回やれば覚えられそうですね!

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3