CMS・WordPress

Calculated Fields Formの使い方|複雑な料金表でも自動見積もりフォームを作る方法

Calculated Fields Form は、WordPress に「選んだ内容に応じて金額を自動で計算するフォーム」を作れるプラグインです。見積もりフォーム、料金シミュレーター、ローン計算などに使えます。

私はこのプラグインで、ペット火葬サービスの自動見積もりフォームを作りました。「プラン」と「ペットの体重」の組み合わせで金額が決まり、そこに地域ごとの出張費が加わる料金表です。単純な足し算や掛け算では金額が出せず、使い方を調べるところから苦労しました。

この記事では、その経験をもとに次の順で解説します。

  • ドロップダウンと計算式を使った、基本の見積もりフォームの作り方
  • 組み合わせで金額が決まる料金表を、IF 文で実装する方法
  • 料金表が大きくなったときに、対応表1つで書く方法(実務ではこちらをおすすめします)
  • 計算結果が表示されないときの確認ポイント

なお、記事内の料金表と金額はすべて説明用に作った架空のものです。管理画面のスクリーンショットは執筆時点のもので、最新版では表示が異なる場合があります。

足し算では作れない料金表

たとえば、次のような料金表です。

ペットの体重 立会火葬 個別火葬 合同火葬 訪問火葬
1kg以下 18,000円 15,000円 9,000円 25,000円
5kg以下 24,000円 20,000円 12,000円 32,000円
10kg以下 32,000円 27,000円 16,000円 41,000円
20kg以下 42,000円 36,000円 21,000円 52,000円
20kg超 55,000円 47,000円 28,000円 66,000円

プランごとの基本料金に体重の料金を足す、という形になっていません。行ごと・列ごとの差額がばらばらなので、「プラン◯円+体重◯円」という式では表せないのです。

こういう料金表でも、「このプランとこの体重が選ばれたら、この金額」と組み合わせを直接対応させれば、見積もりフォームは作れます。計算式を見つけようとするより、そのほうが早くて確実です。

まずは基本の使い方から見ていきます。

基本の使い方:フォームを作る

WordPress の管理画面で Calculated Fields Form のフォーム一覧を開き、New Form の欄に任意のフォーム名を入れて Create Form を押します。

Calculated Fields Formで新しいフォームを作成する画面

フォームの編集画面が開きます。右側のプレビューに最初から入っている見出しとフィールドはサンプルなので、見出しは用途に合わせて書き換え、既存のフィールドは削除して構いません。

フォームの編集画面。左にフィールドの種類、右にプレビュー

左側の Add a Field には、追加できるフィールドの種類が並んでいます。ドロップダウン、ラジオボタン、チェックボックス、日付、数値などがあり、Hidden を使えば、画面には表示しない値を計算に使うこともできます。

この記事では、料金表の組み合わせを作るのに向いている Dropdown(ドロップダウン)を使います。

選択肢と値を設定する

Add a Field から Dropdown を押すと、プレビューに fieldname1 という名前のフィールドが追加されます。

Dropdownを追加するとfieldname1が表示される

fieldname1 のあたりをクリックすると、左側にそのフィールドの設定が表示されます。Choices の欄で、利用者が選ぶ選択肢を設定します。

Dropdownの設定画面。Choicesで選択肢のTextとValueを設定する

選択肢には Text と Value の2つがあります。

  • Text:画面に表示される文字(例:スタンダード)
  • Value:計算に使われる値(例:50000)

計算に使われるのは Value のほうです。 初期状態では Value に First Choice のような文字が入っているので、必ず数値に書き換えてください。文字のままだと計算できません。

ここでは練習として、プランの Text と Value を次のように設定しました。

プランの選択肢。ビギナー10000、スタンダード50000、プレミアム100000

同じ手順でもう1つドロップダウンを追加すると、fieldname2 ができます。こちらは年代にして、シニア 2000、大人 5000、子供 3000 と設定しました。

2つ目のDropdown(fieldname2)で年代の選択肢を設定

プレビューで、2つのドロップダウンから選べるようになっていれば準備完了です。

プレビューでプランと年代を選べるようになった状態

計算フィールドで合計を表示する

合計金額を表示するには、Add a Field から Calculated Field を追加します。プレビューの一番下に、計算結果を表示する欄ができます。

Calculated Fieldを追加し、ラベルを合計見積もり金額に変更した状態

ただし、追加しただけでは何も表示されません。計算フィールドの設定にある Set Equation に、計算式を書く必要があります。

Set Equationにfieldname1 + fieldname2と入力

プランと年代の値を足すだけなら、式はこれだけです。

fieldname1 + fieldname2

保存してプレビューで選ぶと、スタンダード(50000)と大人(5000)で 55000 と表示されました。

スタンダードと大人を選ぶと合計見積もり金額が55000と表示される

式では、フォーム上のラベル(「プラン」など)ではなく、fieldname1 のような名前でフィールドを指定する点に注意してください。名前はフィールドを追加した順に振られるので、あとからフィールドを削除・追加すると番号が飛びます。

スポンサーリンク

組み合わせで金額が決まる料金表は IF 文で書く

冒頭の料金表のように、組み合わせごとに金額が決まっている場合は、式の中で IF と AND を使います。

まず、選択肢の Value を次のように決めておきます。

  • ペットの体重(fieldname11):1kg以下 → 1、5kg以下 → 5、10kg以下 → 10、20kg以下 → 20、20kg超 → 99
  • プラン(fieldname12):立会火葬 → 0、個別火葬 → 1、合同火葬 → 2、訪問火葬 → 3

体重は「◯kg以下」の数字をそのまま Value にしておくと、あとで式を読むときに迷いません。

基本の書き方はこうです。

IF(AND(fieldname11==1, fieldname12==0), 18000)

「体重が1kg以下、かつプランが立会火葬なら 18000」という意味です。組み合わせが複数あるときは、IF の3つ目の引数(条件に当てはまらなかったときの値)に、次の IF を入れていきます。

IF(AND(fieldname11==1, fieldname12==0), 18000,
IF(AND(fieldname11==1, fieldname12==1), 15000,
IF(AND(fieldname11==1, fieldname12==2), 9000,
IF(AND(fieldname11==1, fieldname12==3), 25000,
IF(AND(fieldname11==5, fieldname12==0), 24000,
/* …残りの組み合わせも同じように続ける… */
0)))))

いちばん最後の 0 は、どの組み合わせにも当てはまらなかったときの値です。そして、IF を1つ増やすごとに、最後の閉じカッコも1つ増えます。 この料金表なら 5×4 で20個の IF が並び、最後に ) が20個続きます。

実際の案件の料金表は、体重が11段階、プランが4つで、組み合わせは44通りありました。閉じカッコも44個です。1つ数え間違えるだけで計算結果が表示されなくなるので、ここで何度もつまずきました。

料金表が大きいときは「対応表」で書く

組み合わせが多い料金表は、IF を重ねるより、料金表をそのまま式の中に書き写すほうが確実です。Calculated Fields Form の式には JavaScript を書けるので、次のように書けます。

(function(){
  /* 体重の値 → [立会火葬, 個別火葬, 合同火葬, 訪問火葬] */
  var price = {
    1:  [18000, 15000,  9000, 25000],
    5:  [24000, 20000, 12000, 32000],
    10: [32000, 27000, 16000, 41000],
    20: [42000, 36000, 21000, 52000],
    99: [55000, 47000, 28000, 66000]
  };
  var row = price[fieldname11];
  if (!row || row[fieldname12] === undefined) return '';
  return row[fieldname12];
})()

price の1行が料金表の1行にそのまま対応しています。体重の値で行を選び、プランの値(0〜3)で列を選ぶ、という仕組みです。

この書き方には、IF を重ねる書き方にない利点があります。

  • 閉じカッコを数える必要がない
  • 料金改定のときは数字を書き換えるだけ。どの IF を直せばいいか探さなくて済む
  • 料金表と見比べて確認できる。行と列の並びが料金表と同じなので、転記ミスに気づきやすい

if (!row …) return ''; の行は、選択肢の値と対応表が食い違っていたときに、でたらめな数字ではなく空欄を表示するための保険です。

出張費などを足す

地域によって出張費が変わる場合は、出張費のドロップダウン(ここでは fieldname10)を追加し、Value に出張費の金額を入れておきます。

  • エリアA → 0、エリアB → 3000、エリアC → 5000、エリアD → 8000

出張費は組み合わせではなく単純な加算なので、最後に足すだけです。対応表の書き方なら、return の行をこう変えます。

  return row[fieldname12] + fieldname10;

このように、組み合わせで決まる部分は対応表、単純に足す部分は足し算と分けておくと、式が読みやすくなります。

金額の表示を整える

以前の私は、金額の後ろに「円」を付けるために、式の最後に + '円' と書いていました。これでも表示はできますが、式が文字列を返すことになるので、その金額を別の計算に使うときに扱いにくくなります。

式は数値だけを返し、単位や桁区切りは計算フィールドの表示設定で付けると扱いやすくなります。計算フィールドの設定には、次の欄があります。

設定欄 入力例
Symbol to display at beginning of calculated field ¥
Symbol to display at the end of calculated field 円
Symbol for grouping thousands ,

末尾の欄に「円」、桁区切りの欄に「,」を入れれば、式が返す 20000 が「20,000円」と表示されます。

計算結果が表示されないときのチェックポイント

計算フィールドが空欄のままのときは、次の順に確認してください。

  1. カッコの数が合っているか:IF を重ねる書き方では、IF( の数と最後の ) の数が一致しているか
  2. fieldname の番号が合っているか:ラベルではなく fieldname◯ で指定しているか。フィールドを追加・削除して番号がずれていないか
  3. Value が数値になっているか:First Choice のような初期値のままになっていないか。数字が全角になっていないか
  4. 対応表の値と選択肢の Value が一致しているか:対応表のキー(1、5、10 …)と、ドロップダウンの Value が同じか
  5. 引用符が半角か:ほかの記事やメモからコピーした式に、全角の引用符(‘ ’)が混ざっていないか

式を変えたら、いきなり全部を書き換えず、1つ変えるごとに保存してプレビューで確かめると、どこで壊れたかがすぐにわかります。

見積もりフォームの作成を代行します

「料金表が複雑で、どう式を組めばいいかわからない」「組み合わせが多すぎて、手作業で書くのが不安」という場合は、作成を代行します。

この記事で紹介したように、プラン4種×体重11段階+地域別の出張費という組み合わせ44通りの見積もりフォームを実装した経験があります。

既存の WordPress サイトへの設置までお任せいただくことも、計算式の作成だけをご依頼いただくこともできます。料金表(画像や PDF で構いません)と、どのサイトに設置したいかをお送りいただければ、お見積もりします。

よくある質問

Q. 無料版でも見積もりフォームは作れますか?

A. 作れます。現在の無料版(2026年9月時点の 5.5.1.4)では、見積もりの計算と結果の表示に加えて、送信内容の保存と、管理者宛の通知メールにも対応しています。利用者へ見積もり内容を自動で返信する機能は、有料版(Professional 以上)が必要です。

送信を有効にするときは、フォームの設定で次の3つを確認します。

  • Display submit button?:送信ボタンを表示する
  • Form Processing / Email Settings:送信元・宛先・件名・本文を設定する
  • Destination emails:通知を受け取る管理者のメールアドレスを入れる

なお、この記事のスクリーンショットを撮った2023年当時の管理画面には、「サーバー側で処理するには有料版が必要」という案内が表示されていました。古い解説でこの案内を見かけても、現在の無料版では管理者宛の通知メールまでは送れます。

Q. IF 文と対応表、どちらで書けばいいですか?

A. 組み合わせが10通り程度までなら IF 文でも十分です。それを超える場合や、料金改定が定期的にある場合は、対応表で書くほうが間違いが起きにくく、あとから直すのも簡単です。

Q. 選択肢の Value には何を入れればいいですか?

A. 単純に足し算するだけの項目なら、金額そのものを入れます。組み合わせで金額が決まる項目なら、「5kg以下なら 5」のように、選択肢を区別できる番号を入れます。どちらの場合も、あとで式を読んだときに意味がわかる値にしておくのがコツです。

まとめ

  • 計算に使われるのは選択肢の Value。初期値の文字のままでは計算できない
  • 式では、ラベルではなく fieldname◯ でフィールドを指定する
  • 組み合わせで金額が決まる料金表は、IF(AND()) で書ける。ただし閉じカッコの数に注意
  • 組み合わせが多いときは、料金表をそのまま対応表として書き写すと、確実で直しやすい
  • 金額の「円」は式で付けず、表示の設定で付ける

料金表が複雑でも、「計算式を見つける」のではなく「組み合わせを直接対応させる」と考えれば、Calculated Fields Form で見積もりフォームは作れます。

スポンサーリンク