Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@gungungggun

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

More than 1 year has passed since last update.

アプリケーションパスワードの設定をして権限が有る前提です。
これにより、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で投稿の更新、削除をしてみました。
わりと簡単で、一回やれば覚えられそうですね!

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
gungungggun
僕はゴリゴリのプログラマーになりたいわけじゃない。 働きたくない、めんどくさい、だからプログラム組んで楽しようって思っただけなんだ。 そしたら楽になるどころか、いつのまにか、つまんねぇ開発ばっかりさせられてたんだ。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?