キーワードなどで調べたのですがうまく見つからず、方針がたたなかったので質問させてください。
実現したいこと
RailsのWebアプリケーションにデータを登録する際に、同じ内容をワードプレスにも登録したいと考えているのですが、良い方法が思いつかず、アドバイスをいただければと思います。
上記の質問に至った経緯
これから作成するWebアプリケーションで業務管理を行い、その一部分の登録データをWebサイトのコンテンツとして公開しようと考えています。
Webサイトはすでにワードプレスで作られ稼働しており、CDNなどの負荷対策等を行っています。
そのため、そこにWP REST APIなどでデータを登録ができれば、新たにRailsで一からWebサイトも含めて開発するより工数もすくなくなって良いのではと考えました。
調べたことなど
・WP REST APIのGEMがあったのですがRead Onlyとなっており、登録などは行なえませんでした。
・Ruby上でPHPの実行ができればと思い、調べたところsystem("php スクリプトファイル名")
で実行できそうなのですが、登録される値が毎回異なるため、この方法で変数を渡すことはできないのではないかと考えています。
以上となります。
どうぞよろしくおねがいします!
2019.08.25 追記(最終的に下記のように実装しました。)
phpで実行せずにHTTPリクエストで実装。
【ワードプレス】
・Application Passwordsプラグインを有効化。
・プロフィールページのApplication Passwordsでエラーが出ている場合は、「.htaccess」にRewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
を追記する必要があるかも
・プロフィールページのApplication PasswordsでAdd Newを押してパスワードを生成・保存。
Ruby
1#テストなのでindex.html.erbファイルにそのまま記載 2uri = URI('https://your-domain.com/wp-json/wp/v2/posts') 3req = Net::HTTP::Post.new(uri) 4req.basic_auth('user_name', 'passward') 5#user_nameは、Application Passwordsで追加したユーザー名ではなく、ワードプレスのユーザー名。 6 7req.set_form_data({title: "Yey from rails", status: "publish", post_media: ['/uploads/rails.png']}) 8#Rubyなので必要に応じて変数を利用できる。 9#post_mediaは試していないが、これであっているはず。 10 11res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') { |http| 12 http.request(req) 13} 14p res.code 15#コンソールに201が表示されれば投稿完了。 16#p res.body で更新内容などが確認できる。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。