【覚書】WordPressにC# WindowsForm から投稿
NuGet で WordPressPCL をインストール。
WordPress には、JWT Authentication for WP-API プラグインをインストール。ユーザー → 対象ユーザ → パスワードの設定。
認証
CWPData wp = getSelectSite();
if( wp != null )
{
string strUrl = wp.siteUrl;
try
{
var client = new WordPressClient(strUrl + "wp-json");
client.AuthMethod = AuthMethod.JWT;
client.RequestJWToken(txtUserName.Text, txtPasswd.Text).Wait();
//
var isValidToken = client.IsValidJWToken().Result;
//
if (isValidToken == true)
{
wp.siteToken = client.GetToken();
lblAuth.Visible = true;
//
int iPos = cbWPData.SelectedIndex;
_mWPData[iPos].siteToken = wp.siteToken;
}
else
{
lblAuth.Visible = false;
}
}
catch (AggregateException ae)
{
ae.Handle((ex) =>
{
Console.WriteLine(ex.GetType().Name);
Console.WriteLine(" " + ex.Message);
if (ex is WPException)
{
lblAuth.Visible = false;
errorMesseage(ex.Message);
return true;
}
else
{
return false;
}
});
}
catch (Exception ex)
{
lblAuth.Visible = false;
errorMesseage(ex.Message);
}
}
認証が成功したら、次は投稿
string strUrl = wp.siteUrl;
var client = new WordPressClient(strUrl + "wp-json");
try
{
client.AuthMethod = AuthMethod.JWT;
client.SetJWToken(wp.siteToken);
//
Post entry = new Post();
//
entry.Categories = getInts(txtCategory.Text);
entry.Tags = getInts(txtTag.Text);
entry.Title = new Title(txtTitle.Text);
entry.Content = new Content(txtBody.Text);
//
if (txtMedia.Text != "")
{
try
{
int iMedia = int.Parse(txtMedia.Text);
entry.FeaturedMedia = iMedia;
}
catch
{
}
}
//
var post = client.Posts.Create(entry);
post.Wait();
//
var result = post.Result;
//
txtWPUrl.Text = result.Link;
//
wp.lastCategory = txtCategory.Text;
wp.lastTag = txtTag.Text;
wp.lastMedia = txtMedia.Text;
saveWPData(wp);
}
catch (AggregateException ae)
{
ae.Handle((ex) =>
{
if (ex is WPException)
{
errorMesseage(ex.Message);
return true;
}
else
{
return false;
}
});
}
catch (Exception ex)
{
errorMesseage(ex.Message);
}
いろいろ余計なソースがあるけど、こんな感じで任意のWordpressに投稿が可能。
認証のTokenは永続的に使える物ではないので、都度取得するくらいのUIが良いと思います。
F1&雑談
小説
開発
静岡
小説やプログラムの宣伝
積読本や購入予定の書籍の情報を投稿しています
小説/開発/F1&雑談アカウントは、フォロバを返す可能性が高いアカウントです
積読本や購入予定の書籍の情報を投稿しています
小説/開発/F1&雑談アカウントは、フォロバを返す可能性が高いアカウントです
