WordPress に API が備わっていることはこれまでも記事で紹介していますが、今回は具体的に使う場合のコードのメモになります。
API では JSON でデータをやり取りしますので、DynamicJsonを使用することにします。NuGet でインストールするかソースコードを取り込んで、 DynamicJson を使用できるようにします。
コードです。まず、送信するデータのもととなる匿名オブジェクトを作成します。
var postContent = new
{
title = <記事タイトル>,
content = <記事本文>,
status = "publish", // 公開は"publish" 下書きは"draft"
categories = "1,2,3", // カテゴリのIDをカンマ区切り
tags = "4,5" // タグのIDをカンマ区切り
}
content には、普通に HTML タグを含む投稿の本文を文字列で指定します。
categories や tags などは不要であれば指定しなくてかまいません。
status も指定しなければデフォルトで公開状態になります。これらの他にもパラメタを指定でき、それは こちらで確認できます。
この匿名オブジェクトを JSON 形式の文字列に変換するのに、DynamicJson を使用します。
var serialized = DynamicJson.Serialize(postContent);
あとは送信するだけです。
var postData = Encoding.UTF8.GetBytes(serialized);
var req = HttpWebRequest.Create("<サイトのURL>/wp-json/wp/v2/posts") as HttpWebRequest;
req.Method = "POST";
req.ContentLength = postData.Length;
req.ContentType = "application/json"; // 送信するコンテントタイプを application/json にするのを忘れないこと
using (var reqs = req.GetRequestStream())
{
reqs.Write(postData, 0, postData.Length);
}
using (var resp = req.GetResponse() as HttpWebResponse)
using (var reader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8))
{
var s = reader.ReadToEnd();
}
最後の変数 s には、API のレスポンスが JSON 形式の文字列で格納されています。
これをまた DynamicJson で扱うなら、
var post = DynamicJson.Parse(s);
こうすればOKです。こうすると、例えば投稿IDは post.id で取得できます。何が取得できるかはこちらで確認できます。
