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 を押します。

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

左側の Add a Field には、追加できるフィールドの種類が並んでいます。ドロップダウン、ラジオボタン、チェックボックス、日付、数値などがあり、Hidden を使えば、画面には表示しない値を計算に使うこともできます。
この記事では、料金表の組み合わせを作るのに向いている Dropdown(ドロップダウン)を使います。
選択肢と値を設定する
Add a Field から Dropdown を押すと、プレビューに fieldname1 という名前のフィールドが追加されます。

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

選択肢には Text と Value の2つがあります。
- Text:画面に表示される文字(例:スタンダード)
- Value:計算に使われる値(例:50000)
計算に使われるのは Value のほうです。 初期状態では Value に First Choice のような文字が入っているので、必ず数値に書き換えてください。文字のままだと計算できません。
ここでは練習として、プランの Text と Value を次のように設定しました。

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

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

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

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

プランと年代の値を足すだけなら、式はこれだけです。
fieldname1 + fieldname2
保存してプレビューで選ぶと、スタンダード(50000)と大人(5000)で 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円」と表示されます。
計算結果が表示されないときのチェックポイント
計算フィールドが空欄のままのときは、次の順に確認してください。
- カッコの数が合っているか:
IFを重ねる書き方では、IF(の数と最後の)の数が一致しているか - fieldname の番号が合っているか:ラベルではなく
fieldname◯で指定しているか。フィールドを追加・削除して番号がずれていないか - Value が数値になっているか:
First Choiceのような初期値のままになっていないか。数字が全角になっていないか - 対応表の値と選択肢の Value が一致しているか:対応表のキー(
1、5、10…)と、ドロップダウンの Value が同じか - 引用符が半角か:ほかの記事やメモからコピーした式に、全角の引用符(
‘’)が混ざっていないか
式を変えたら、いきなり全部を書き換えず、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 で見積もりフォームは作れます。
