WP REST APIを使いGASで画像を更新する方法
WP REST APIを使いGASで画像を更新する
ちょっとWordPressのwprestapiで画像の更新をしたいことがあり、いろいろ調べていたらできるようになったのでその方法を紹介したいと思います。というのもwprestapiを使って記事の投稿や画像の投稿を行うことはできたのですが画像を記事に紐づけすることができずにこまっていました。
紐づけとはつまりattachmentですよね。まあ別に記事に紐づけなくてもアップロードされた画像のurlなどがわかれば画像は使えるのですが、どうしても記事に画像を紐づけ(添付)したいって人もなかにはいるかもしれません。自分みたいに。
WP REST APIの画像更新で画像を記事に紐づけすることができる
まず知識として知っておかなければならないのは以下のリファレンスですね。
メディア | REST API ハンドブック | WordPress 開発者リソース
それで上記の画像更新の引数に「post」という引数があります。postという引数は記事のIDを整数でというようになっていますので、記事のIDと画像のIDがわかればあとはコードを書けばこれで画像を記事に紐づけすることができるようになります。
WP REST APIで画像を記事に紐づけするサンプルコード
function test(){
let siteUrl = 'サイトurl';
let apiUrl = siteUrl + 'wp-json/wp/v2/media/画像のid';
let user = 'ユーザー名';
let pass = 'アプリケーションパスワード';
let headers = {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + Utilities.base64Encode(user + ":" + pass)
};
let arguments = {
'post': 記事のID(整数)
};
let options = {
'method': 'POST',
'muteHttpExceptions': true,
'headers': headers,
'payload': JSON.stringify(arguments)
};
let response = UrlFetchApp.fetch(apiUrl, options);
let responseJson = JSON.parse(response.getContentText());
console.log(responseJson)
return responseJson;
}
上記のコードで画像の更新を行うことができます。ただこのサンプルをどのようにして応用させていくかは自分で考える必要があると思います。ポイントはとくにありませんがargumentsのpost引数の値は整数でなければならないということです(整数じゃなくてもいけるかもしれません。ためしてないのでわかりません)
画像のidや記事のidはwordpress管理画面で記事や画像を開くとわかりますが、wp rest apiをつかって画像や記事を投稿したときのresponseとしてidを取得することができます。
ちなみに今回はwp rest apiを使った画像の更新でしたが、画像を普通に投稿するときもpost引数が使えます。つまりあらかじめ記事があれば画像投稿のapiで紐づけをすることができるということになりますが、このあたりは自分のやりたいことにコードの設計をする必要があると思います。
Discussion