XML-RPCを利用してWordpressに記事を投稿したい

お世話になります。

掲題の件、kintoneアプリの1レコードを1記事としてWordpressに自動で投稿したいと考えております。

 

kintoneに「名前」と「住所」のフォームがあるアプリを作成、

Wordpressのカスタムフィールドにも「名前」と「住所」を作成し、

kintoneの一覧画面でボタンをクリックすると一覧に表示されているレコードがWordpressに投稿記事として保存されるような仕組みを目指しております。

 

外部システムからWorpressに記事を投稿する場合は「XML-RPC」を利用すると良いとの情報がありましたが、

kintoneからWordpressに記事を投稿することは可能なのでしょうか?

 

kintoneで準備するものとWorpressで準備するもののイメージがついていない状況なので、

ご教示いただけると有難いです。

y-kishiさん

初めまして。ラジカルブリッジ斎藤です。

 

当方、WordPressではなくMovableTypeで似たようなことをやるプラグインを無償提供しております。

http://radical-bridge.com/product/kintone-mt-plugin.html

 

WordPress版のプラグインも出したいのですが、なかなか手が回らず。。

で、WordPressであれば「XML-RPC」ではなく「WP REST API」を使うのが今風です。

まだじっくり試せてませんが、理論上はkintoneからWordPressへの記事投稿は可能だと思います。

「WP REST API」でググるといろいろ情報が出てきますが、kintone→WordPressというピンポイントな情報は出てきていないように思うのでちょっと大変かと思いますが、ぜひその世界の第一人者になっていただければ!(笑)

投稿する前に、oAuthによる認証が必要そうで、投稿処理そのものよりもそちらの方が大変な気がしています。

 

あまり有用な情報ではありませんが、ご参考まで。

 

ラジカルブリッジ

斎藤 様

 

お世話になります。

貴重なアドバイスをいただきありがとうございます。

 

「XML-RPC」ではなく「WP REST API」を使用する方が良いとのことで、

以下の手順で実装に向け進めていきたいと思います。

 

=====================================================================

①Worpress側の準備

・「WP REST API」プラグインをインストール

⇒wordpressでAPIを使用するため

・「HamAPI Provider」プラグインをインストール

⇒OAuth認証を可能にするため(コンシューマーキーとコンシューマーシークレットを取得できる)

 

②kintone側の準備

・「kintone.proxy()」を使用し、外部APIを実行する

=====================================================================

 

イメージとしては、kintoneの一覧画面にボタンを作成し、

ボタンをクリックするとkintone.proxyを実行(外部API:WP REST API)し、

一覧に表示されているレコードを、Wordpressに記事を投稿という流れです。

 

上記で希望の機能を実装できるか不明ですが、

ひとまずやってみたいと思います。

 

大変恐縮ではございますが、また疑問点が出てきましたらご質問させていただきたいと思います。

お世話になります。

 

kintone.proxyの指定方法でご質問があります。

「GET」でWordpressの記事情報を取得できましたので、

次に記事IDを1つ指定して削除を実行したところ以下のようなエラーがコンソールに表示されました。

 

Object {code: “rest_cannot_delete”, message: “Sorry, you are not allowed to delete posts.”,data: Object}

code:“rest_cannot_delete”

 

おそらく、ヘッダー部分の認証情報が間違っているのだと思うのですが、

以下のヘッダー部分の記載の仕方は間違っておりますでしょうか?

※「dGVzdDp0ZXN0LjEyMzQ=」は「ユーザー名:パスワード」をbase64変換しております。

===================================================

kintone.proxy(
‘http://<ドメイン名>/wp-json/wp/v2/posts/299’,
‘DELETE’,
{‘Authorization’:‘Basic dGVzdDp0ZXN0LjEyMzQ=’},
{},
function(body, status, headers) {

//success
console.log(status, JSON.parse(body), headers);

}, function(error) {
//error
console.log(error); //proxy APIのレスポンスボディ(文字列)を表示
});

===================================================

 

oAuth認証は複雑でしたので、検証段階ではアプリケーション認証を使用しております。

 

以上、大変お手数ではございますがご教示いただければありがたいです。

kintone.proxy()自体の書き方は問題ないように思われますね。

WP REST APIがBasic認証経由でもアクセスできるようになっていたのを知らなかったのですが、ひとまず以下のページをちらちらと見ています。

https://code.tutsplus.com/tutorials/wp-rest-api-setting-up-and-using-basic-authentication–cms-24762

 

GETはそもそも認証不要なのでうまく動いていたと思いますが、DELETEは認証が必要なので、このBasic認証がうまくいっているのかを確認した方が良いのではないかと思います。

上記ページを見ると、Basic認証経由でWP REST APIを叩けるようにするためのプラグインがあるようなのですが、それは導入済みでしょうか?

 

たぶん、この辺りになるとkintoneの話ではなくなってくるので、更なるご質問はWP側のコミュニティの方が良いかもしれませんね。

 

ラジカルブリッジ

斎藤 様

 

ご返事が遅くなり申し訳ございません。

curlでも同様に、wordpressに記事を投稿しようとしたところ、

not allowed~というエラーが出てしまいました。

 

アドバイスいただいたプラグインは導入済みでしたが、

やはりエラーとなりました。

 

おそらく、Worpressの「.htaccess」あたりのファイルに外部ドメイン(kintoe)からの接続を許可しなければならないのだと思いますが、

これ以上はこの場で質問する内容ではなくなってしまうので、

Wordpressのフォーラムに質問してみます。

 

ご丁寧にご回答いただきありがとうございます。

大変助かりました。