質問編集履歴

2 修正

no1knows

no1knows score 2954

2019/08/25 20:25  投稿

Railsで登録したデータをワードプレスにも登録したい
キーワードなどで調べたのですがうまく見つからず、方針がたたなかったので質問させてください。
### 実現したいこと
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
#テストなのでindex.html.erbファイルにそのまま記載
uri = URI('https://your-domain.com/wp-json/wp/v2/posts')
req = Net::HTTP::Post.new(uri)
req.basic_auth('user_name', 'passward')
#user_nameは、Application Passwordsで追加したユーザー名ではなく、ワードプレスのユーザー名。
req.set_form_data({title: "Yey from rails", status: "publish", post_media: ['/uploads/rails.png']})
#Rubyなので必要に応じて変数を利用できる。
#post_mediaは試していないが、これであっているはず。
res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') { |http|
 http.request(req)
}
p res.code
#コンソールに201が表示されれば投稿完了
#コンソールに201が表示されれば投稿完了。
#p res.body で更新内容などが確認できる。
```
  • PHP

    37336 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Ruby

    17338 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    18888 questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • WordPress

    15085 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • Ruby on Rails 5

    5915 questions

    Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1 追記

no1knows

no1knows score 2954

2019/08/25 20:09  投稿

Railsで登録したデータをワードプレスにも登録したい
キーワードなどで調べたのですがうまく見つからず、方針がたたなかったので質問させてください。
### 実現したいこと
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
#テストなのでindex.html.erbファイルにそのまま記載
uri = URI('https://your-domain.com/wp-json/wp/v2/posts')
req = Net::HTTP::Post.new(uri)
req.basic_auth('user_name', 'passward')
#user_nameは、Application Passwordsで追加したユーザー名ではなく、ワードプレスのユーザー名。
req.set_form_data({title: "Yey from rails", status: "publish", post_media: ['/uploads/rails.png']})
#Rubyなので必要に応じて変数を利用できる。
#post_mediaは試していないが、これであっているはず。
res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') { |http|
 http.request(req)
}
p res.code
#コンソールに201が表示されれば投稿完了
```
  • PHP

    37336 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Ruby

    17338 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    18888 questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • WordPress

    15085 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • Ruby on Rails 5

    5915 questions

    Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る