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 で取得できます。何が取得できるかはこちらで確認できます。