WordPressのフォームに入力された情報をもとに、backlogの課題を作成したい


こんにちは、GMOアドマーケティングのkayです。
フロントエンドエンジニアをしています。

表題にある開発について、ChatGPTと喧嘩しながらもなんとか実装したので備忘録として残しておきたいと思います。





やりたいこと

WordPressで作ったサイトのフォームに入力された情報をもとに、backlogの課題を自動的に作成する。

ことによって業務効率化を図る。

用意するもの

  • WordPress(編集するのはfunction.php)
  • フォーム用のプラグイン:MW WP Form
  • backlogアカウント

つまずいた箇所

詳細を解説する前に、特にここで引っかかった!という場所書いておきます。
ここでつまずいていたせいで体感2年ぐらいかけて実装したので、皆さんはつまずかないようにお気をつけください…


★ functionの名前は固有のものにしよう
 ほかにもフォームがいくつかあり、同様の指定をしていたので混在してしまっていた。そりゃそうだ

★ $マークが必要なところ、要らないところのコピペミスに気をつけよう
 $hoge {$hoge} (‘hoge’) など、同じ変数が違う型で出てくるので、コピペする際は気をつけましょう。

★ 課題の登録者
 登録者IDを指す「createdUserId」というパラメータもありますが、functions.phpでは指定できない。
 → 「APIキーを取得したユーザー」が登録者となります。

★ 課題の必須項目
 最後に悩んだのがここ。
 プロジェクトごとに、課題を立てるときの必須項目を決められるんですが、この必須項目が足りてないと課題を作ってくれません。世知辛。


つまずいた箇所② :ChatGPTに質問するとき

★ コードをまるっとコピペして添削してもらいたいとき
 「どこが間違ってるかわからない!!!」と投げやりモードになってしまったわたし。
 コードをそのままコピペして「これのどこが間違ってるか教えて」と怠惰な質問をしたところ、


英語で返事が返ってきてしまいました。

色々と試してみたところ、
 ・こういうコードがあるんだ
 ・「コード」
 ・どこが間違ってるか教えてほしい
の順番(日本語でコードを挟む)で質問を投げかけると、日本語で返してくれました。


★ 情報が古いことがある
 無料版のChatGPTを使っているので仕方ないのですが、たまに古い情報をくれます。



 ここでもらった回答の「現在のバージョン」も古く(項目が見つからず)、URLはリンク切れしていました。
 アップデートが頻繁に行われるサービスだと参考にならない場合もあるかもしれません。



実装したコード詳細:フォーム

MW WP Formを使い、フォームを作成します。中身はこんな感じになると思います。
※MW WP Form を使ったフォームの作成方法はもっと詳しい記事探してみて!たぶんあります
このフォームをサイト上で見ると、こんな感じになります。




実装したコード詳細:functions.php

今回の主な課題は、functions.phpと仲良くなることです。

実装したコードを細かく解説しますので、そんなことより結論を!!という方は飛ばしてくださいね。


① API送信&送信完了へのリダイレクトfunction宣言 ⚠️ここの名前は固有にする


② フォームに入力する項目をそれぞれ定義する ※MW WP Formに指定しているnameを定義します


③ backlogのURL定義


④ APIキー定義
backlogログイン > 個人設定 > API から発行できます。
⚠️このとき、「課題作成者にしたいアカウント」でAPIキーを作成すること。

APIキー作り方参考:
APIの設定 – Backlog ヘルプセンター



⑤ 作成する課題の本文
※ちなみに、下記のようにして名前をまとめたり、 ※単位をつけたりもできます。


⑥ 登録する課題の詳細
※ 他にも指定できるパラメータはこちら
課題情報の更新 | Backlog Developer API | Nulab



⑦ フォームとbacklogをAPI連携する
※ここの処理いまいちわからなかったので、ChatGPTに解説してもらいました。



入力された情報をパラメータに乗せて渡すことで、API連携ができる、ということみたい。教えてくれてありがと。



⑧ 完了ページへのリダイレクト処理を行う



⑨ フォーム送信完了後、メールを送るfunction


⑩ MW WP FormのID


⑪ フォームの中身を変数「$Data」に格納


⑫ ①のデータを呼び出す


⑬ ↑で指定した固有のfunction「form_after_send」と、フォームのID「xxxx」を呼び出す



すべて設定できたら、フォームが送信されたときに自動でbacklogの課題を作ってくれます!




実装したコードまとめ



おかげで仲良くなれました。



まとめ

ググったらわかるやろ!と思いながら、今回やりたかったことをまとめている記事がなかったので、この機会にまとめられてよかったです。



最後に、「どうしても距離が縮まらない」をどうぞ。





さいごまでお読みいただきありがとうございました!