Listo で長いリストを管理する

送信者の住所を入力する項目があるコンタクトフォームを作らないといけないような状況を想像してみてください。そしてリストから国を選択させるようにしたいとします。世界にはおおよそ200もの国がありますから、そのリストは恐ろしく長いものになるとすぐに気づくでしょう。

以前でしたら、Contact Form 7 でそのような長いリストを扱うには、下に示すようにフォームタグにオプションとして全項目を入力する方法しかありませんでした。

[select your-country “Aruba” “Afghanistan” “Angola” “Albania” “Andorra” “United Arab Emirates” “Argentina” “Armenia” “American Samoa” “Antigua and Barbuda” “Australia” “Austria” “Azerbaijan” “Burundi” “Belgium” “Benin” “Burkina Faso” “Bangladesh” “Bulgaria” “Bahrain” “Bahamas” “Bosnia and Herzegovina” “Belarus” “Belize” “Bermuda” “Bolivia, Plurinational State of” “Brazil” “Barbados” “Brunei Darussalam” “Bhutan” “Botswana” “Central African Republic” “Canada” “Switzerland” “Chile” “China” “Côte d’Ivoire” “Cameroon” “Congo, the Democratic Republic of the” “Congo” “Cook Islands” “Colombia” “Comoros” “Cape Verde” “Costa Rica” “Cuba” “Cayman Islands” “Cyprus” “Czech Republic” “Germany” “Djibouti” “Dominica” “Denmark” “Dominican Republic” “Algeria” “Ecuador” “Egypt” “Eritrea” “Spain” “Estonia” “Ethiopia” “Finland” “Fiji” “France” “Micronesia, Federated States of” “Gabon” “United Kingdom” “Georgia” “Ghana” “Guinea” “Gambia” “Guinea-Bissau” “Equatorial Guinea” “Greece” “Grenada” “Guatemala” “Guam” “Guyana” “Hong Kong” “Honduras” “Croatia” “Haiti” “Hungary” “Indonesia” “India” “Ireland” “Iran, Islamic Republic of” “Iraq” “Iceland” “Israel” “Italy” “Jamaica” “Jordan” “Japan” “Kazakhstan” “Kenya” “Kyrgyzstan” “Cambodia” “Kiribati” “Saint Kitts and Nevis” “Korea, Republic of” “Kuwait” “Lao People’s Democratic Republic” “Lebanon” “Liberia” “Libya” “Saint Lucia” “Liechtenstein” “Sri Lanka” “Lesotho” “Lithuania” “Luxembourg” “Latvia” “Morocco” “Monaco” “Moldova, Republic of” “Madagascar” “Maldives” “Mexico” “Marshall Islands” “Macedonia, the former Yugoslav Republic of” “Mali” “Malta” “Myanmar” “Montenegro” “Mongolia” “Mozambique” “Mauritania” “Mauritius” “Malawi” “Malaysia” “Namibia” “Niger” “Nigeria” “Nicaragua” “Netherlands” “Norway” “Nepal” “Nauru” “New Zealand” “Oman” “Pakistan” “Panama” “Peru” “Philippines” “Palau” “Papua New Guinea” “Poland” “Puerto Rico” “Korea, Democratic People’s Republic of” “Portugal” “Paraguay” “Palestine, State of” “Qatar” “Romania” “Russian Federation” “Rwanda” “Saudi Arabia” “Sudan” “Senegal” “Singapore” “Solomon Islands” “Sierra Leone” “El Salvador” “San Marino” “Somalia” “Serbia” “Sao Tome and Principe” “Suriname” “Slovakia” “Slovenia” “Sweden” “Swaziland” “Seychelles” “Syrian Arab Republic” “Chad” “Togo” “Thailand” “Tajikistan” “Turkmenistan” “Timor-Leste” “Tonga” “Trinidad and Tobago” “Tunisia” “Turkey” “Tuvalu” “Taiwan, Province of China” “Tanzania, United Republic of” “Uganda” “Ukraine” “Uruguay” “United States” “Uzbekistan” “Saint Vincent and the Grenadines” “Venezuela, Bolivarian Republic of” “Virgin Islands, U.S.” “Viet Nam” “Vanuatu” “Samoa” “Yemen” “South Africa” “Zambia” “Zimbabwe”]

200 以上ものオプションを管理するのはほとんど不可能ですし、このフォームタグをパースすること自体もサーバーのメモリーと処理時間の浪費になるでしょう。コンタクトフォームで国名リストを扱うというのはそんなにまれな状況とも思えません。もっと簡単に実現できた方がよさそうです。そういう理由から、Listo というもう一つのプラグインが開発されました。

Listo は Contact Form 7 のような他のプラグインによく使われそうな数種類のリストを提供するシンプルなプラグインです。Listo が現在提供するのは、世界の国名、アメリカ合衆国の地方行政区画、世界の通貨のリストであり(このページの末尾に提示)、今後さらに追加される予定です。

Contact Form 7 は Listo との連携をサポートしており、そのドロップダウンメニュー、チェックボックス、およびラジオボタンのオプションに Listo が提供するリストを使うことができます。もう長ったらしいリストを手作業で管理する必要はありません。

コンタクトフォームで長いリストを管理する方法

リストから国名を選択するドロップダウンメニューを作ってみましょう。オプションの値を Listo から取得するので、まだ有効になっていないならまず Listo を有効化します。

典型的なドロップダウンメニューのフォームタグを作ることから始めましょう。[select] フォームタグを使います。

[select your-country]

このタグにはまだ値がありませんから、空のメニューしか表示されない状態です。次に値として国名リストを追加します。Listo が提供する値を追加するには、次のようにフォームタグに ‘data’ オプションを追加します。

[select your-country data:countries]

‘data:countries’ を追加するだけでメニューに 200 個もの国名オプションを与えることができます。簡単でしょ?

メニューの項目を見ていくとおかしなことに気がつくかもしれません。たとえば、”Antarctica” (南極) が国名リストにあります。南極って人が住んでいる国でしたっけ? このリストに南極が含まれる理由はデータ元が ISO 3166 標準の国名リストだからです。そこにはいくつかの国ではない特別地域が含まれます。

このように、国の定義は従う標準により異なることがあります。こうした定義の差異に対応するため、Listo はまたグループ化機能も提供しています。世界の国名リストに対しては、Listo は “un” と “olympic” の二つのサブグループを提供します。”un” サブグループが国際連合加盟国のみを含むのに対し、”olympic” サブグループは2012年のロンドン夏季オリンピックの参加国のみを含みます。このページの下部にリストとサブグループの一覧があります。

サブグループ付きの data オプションを指定するには、オプションにピリオド (.) とサブグループの名前を追加します。

[select your-country data:countries.olympic]

このメニューはオリンピック参加国のみ含むようになるので、南極を目にすることはなくなるでしょう。

Listo が提供する完全なリスト

国名 [countries]

ISO 3166 標準に基づいた国と属領のリスト。

使用例:
[select your-country data:countries.olympic]

名前グループ
1アルバolympic
2アフガニスタンun, olympic
3アンゴラun, olympic
4アンギラ
5オーランド諸島
6アルバニアun, olympic
7アンドラun, olympic
8アラブ首長国連邦un, olympic
9アルゼンチンun, olympic
10アルメニアun, olympic
11アメリカ領サモアolympic
12南極
13フランス南部領
14アンティグア・バーブーダun, olympic
15オーストラリアun, olympic
16オーストリアun, olympic
17アゼルバイジャンun, olympic
18ブルンジun, olympic
19ベルギーun, olympic
20ベナンun, olympic
21ボネール、セント・ユースタティウス、サバ
22ブルキナファソun, olympic
23バングラデシュun, olympic
24ブルガリアun, olympic
25バーレーンun, olympic
26バハマun, olympic
27ボスニア・ヘルツェゴビナun, olympic
28サン・バルテルミー
29ベラルーシun, olympic
30ベリーズun, olympic
31バミューダolympic
32ボリビア多民族国un, olympic
33ブラジルun, olympic
34バルバドスun, olympic
35ブルネイ・ダルサラムun, olympic
36ブータンun, olympic
37ブーベ島
38ボツワナun, olympic
39中央アフリカ共和国un, olympic
40カナダun, olympic
41ココス (キーリング) 諸島
42スイスun, olympic
43チリun, olympic
44中国un, olympic
45コートジボワールun, olympic
46カメルーンun, olympic
47コンゴ民主共和国un, olympic
48コンゴ共和国un, olympic
49クック諸島olympic
50コロンビアun, olympic
51コモロun, olympic
52カーボベルデun, olympic
53コスタリカun, olympic
54キューバun, olympic
55キュラソー島
56クリスマス島
57ケイマン諸島olympic
58キプロスun, olympic
59チェコ共和国un, olympic
60ドイツun, olympic
61ジブチun, olympic
62ドミニカun, olympic
63デンマークun, olympic
64ドミニカ共和国un, olympic
65アルジェリアun, olympic
66エクアドルun, olympic
67エジプトun, olympic
68エリトリアun, olympic
69西サハラ
70スペインun, olympic
71エストニアun, olympic
72エチオピアun, olympic
73フィンランドun, olympic
74フィジーun, olympic
75フォークランド諸島 (マルビナス諸島)
76フランスun, olympic
77フェロー諸島
78ミクロネシア連邦un, olympic
79ガボンun, olympic
80イギリスun, olympic
81ジョージアun, olympic
82ガーンジー
83ガーナun, olympic
84ジブラルタル
85ギニアun, olympic
86グアドループ
87ガンビアun, olympic
88ギニアビサウun, olympic
89赤道ギニア共和国un, olympic
90ギリシャun, olympic
91グレナダun, olympic
92グリーンランド
93グアテマラun, olympic
94仏領ギアナ
95グアムolympic
96ガイアナun, olympic
97香港olympic
98ハード島とマクドナルド諸島
99ホンジュラスun, olympic
100クロアチアun, olympic
101ハイチun, olympic
102ハンガリーun, olympic
103インドネシアun, olympic
104マン島
105インドun, olympic
106イギリス領インド洋地域
107アイルランドun, olympic
108イラン・イスラム共和国un, olympic
109イラクun, olympic
110アイスランドun, olympic
111イスラエルun, olympic
112イタリアun, olympic
113ジャマイカun, olympic
114ジャージー
115ヨルダンun, olympic
116日本un, olympic
117カザフスタンun, olympic
118ケニアun, olympic
119キルギスタンun, olympic
120コロンビアun, olympic
121キリバスun, olympic
122セントクリストファー・ネイビスun, olympic
123韓国 (大韓民国)un, olympic
124クウェートun, olympic
125ラオス人民民主共和国un, olympic
126レバノンun, olympic
127リベリアun, olympic
128リビアun, olympic
129セントルシアun, olympic
130リヒテンシュタインun, olympic
131スリランカun, olympic
132レソトun, olympic
133リトアニアun, olympic
134ルクセンブルクun, olympic
135ラトビアun, olympic
136マカオ
137サン・マルタン (フランス領)
138モロッコun, olympic
139モナコun, olympic
140モルドバ共和国un, olympic
141マダガスカルun, olympic
142モルディブun, olympic
143メキシコun, olympic
144マーシャル諸島un, olympic
145マケドニア旧ユーゴスラビア共和国un, olympic
146マリun, olympic
147マルタun, olympic
148ミャンマーun, olympic
149モンテネグロun, olympic
150モンゴルun, olympic
151北マリアナ諸島連邦
152モザンビークun, olympic
153モーリタニアun, olympic
154モントセラト
155マルティニーク
156モーリシャスun, olympic
157マラウィun, olympic
158マレーシアun, olympic
159マヨット
160ナミビアun, olympic
161ニューカレドニア
162ニジェールun, olympic
163ノーフォーク島
164ナイジェリアun, olympic
165ニカラグアun, olympic
166ニウエ
167オランダun, olympic
168ノルウェーun, olympic
169ネパールun, olympic
170ナウルun, olympic
171ニュージーランドun, olympic
172オマーンun, olympic
173パキスタンun, olympic
174パナマun, olympic
175ピトケアン
176ペルーun, olympic
177フィリピンun, olympic
178パラオun, olympic
179パプアニューギニアun, olympic
180ポーランドun, olympic
181プエルトリコolympic
182朝鮮民主主義人民共和国un, olympic
183ポルトガルun, olympic
184パラグアイun, olympic
185パレスチナ自治政府olympic
186仏領ポリネシア
187カタールun, olympic
188レユニオン
189ルーマニアun, olympic
190ロシア連邦un, olympic
191ルワンダun, olympic
192サウジアラビアun, olympic
193スーダンun, olympic
194セネガルun, olympic
195シンガポールun, olympic
196サウスジョージア・サウスサンドウィッチ諸島
197セントヘレナ・アセンションおよびトリスタンダクーニャ
198スバールバル諸島ヤンマイエン島
199ソロモン諸島un, olympic
200シエラレオネun, olympic
201エルサルバドルun, olympic
202サンマリノun, olympic
203ソマリアun, olympic
204サンピエール島・ミクロン島
205セルビアun, olympic
206南スーダンun, olympic
207サントメ・プリンシペ民主共和国un, olympic
208スリナムun, olympic
209スロバキアun, olympic
210スロベニアun, olympic
211スウェーデンun, olympic
212スワジランドun, olympic
213シント・マールテン (オランダ領)
214セーシェルun, olympic
215シリアアラブ共和国un, olympic
216タークス・カイコス諸島
217チャドun, olympic
218トーゴun, olympic
219タイun, olympic
220タジキスタンun, olympic
221トケラウ
222トルクメニスタンun, olympic
223東ティモールun, olympic
224トンガun, olympic
225トリニダードトバゴun, olympic
226チュニジアun, olympic
227トルコun, olympic
228ツバルun, olympic
229台湾olympic
230タンザニア連合共和国un, olympic
231ウガンダun, olympic
232ウクライナun, olympic
233合衆国領有小離島
234ウルグアイun, olympic
235アメリカun, olympic
236ウズベキスタンun, olympic
237バチカン市国
238セントビンセント・グレナディーンun, olympic
239ベネズエラ・ボリバル共和国un, olympic
240イギリス領ヴァージン諸島olympic
241アメリカ領ヴァージン諸島olympic
242ベトナムun, olympic
243バヌアツun, olympic
244ウォリス・フツナ
245サモアun, olympic
246イエメンun, olympic
247南アフリカun, olympic
248ザンビアun, olympic
249ジンバブエun, olympic
アメリカ合衆国の地方行政区画 [us_subdivisions]

ISO 3166-2:US 標準に基づいたアメリカ合衆国地方行政区画のリスト。

使用例:
[select your-state data:us_subdivisions.states data:us_subdivisions.districts]

名前グループ
1アラスカstates
2アラバマstates
3アーカンソーstates
4アメリカ領サモアoutlying_areas
5アリゾナstates
6カリフォルニアstates
7コロラドstates
8コネチカットstates
9コロンビア特別区districts
10デラウェアstates
11フロリダstates
12ジョージアstates
13グアムoutlying_areas
14ハワイstates
15アイオワstates
16アイダホstates
17イリノイstates
18インディアナstates
19カンザスstates
20ケンタッキーstates
21ルイジアナstates
22マサチューセッツstates
23メリーランドstates
24メインstates
25ミシガンstates
26ミネソタstates
27ミズーリstates
28北マリアナ諸島outlying_areas
29ミシシッピーstates
30モンタナstates
31ノースカロライナstates
32ノースダコタstates
33ネブラスカstates
34ニューハンプシャーstates
35ニュージャージーstates
36ニューメキシコstates
37ネバダstates
38ニューヨークstates
39オハイオstates
40オクラホマstates
41オレゴンstates
42ペンシルベニアstates
43プエルトリコoutlying_areas
44ロードアイランドstates
45サウスカロライナstates
46サウスダコタstates
47テネシーstates
48テキサスstates
49合衆国領有小離島outlying_areas
50ユタstates
51バージニアstates
52アメリカ領ヴァージン諸島outlying_areas
53バーモントstates
54ワシントンstates
55ウィスコンシンstates
56ウェストバージニアstates
57ワイオミングstates
通貨 [currencies]

ISO 4217 標準に基づいた通貨のリスト。

使用例:
[select your-currency data:currencies]

名前グループ
1アラブ首長国連邦 ディルハム
2アフガン・アフガニ
3アルバニア・レク
4アルメニア ドラム
5オランダ・アンティギルダー
6アンゴラ・クワンザ
7アルゼンチン・ペソ
8豪ドル
9アルバ・フロリン
10アゼルバイジャン・マナト
11ボスニア・ヘルツェゴビナ兌換マルク
12バルバドス・ドル
13バングラデシュ タカ
14ブルガリア・レフ
15バーレーン・ディナール
16ブルンジ・フラン
17バミューダ・ドル
18ブルネイ・ドル
19ボリビア
20ブラジル・レアル
21バハマ・ドル
22ブータン王国ニュルタム
23ボツワナ・プラ
24ベラルーシ・ルーブル
25ベリーズ・ドル
26カナダドル
27コンゴ・フラン
28スイス・フラン
29チリ・ペソ
30中国元
31コロンビア・ペソ
32コスタリカ・コロン
33キューバ・ペソ
34カーボベルデ・エスクード
35チェコ・コルナ
36ジブチ・フラン
37デンマーク・クローネ
38ドミニカ共和国ペソ
39アルジェリア ディナール
40エジプト ポンド
41エリトリア・ナクファ
42エチオピア・ブル
43ユーロ
44フィジー諸島ドル
45フォークランド諸島ポンド
46ポンド
47グルジア・ラリ
48ガーナ・セディ
49ジブラルタル・ポンド
50ガンビア・ダラシ
51ギニア・フラン
52グアテマラ・ケツァル
53ガイアナ・ドル
54香港ドル
55ホンジュラス・レンピラ
56クロアチア・クーナ
57ハイチ・グールド
58ハンガリー・フォリント
59インドネシア・ルピア
60イスラエル新シェケル
61インド・ルピー
62イラク・ディナール
63イラン・リアル
64アイスランド・クローナ
65ジャマイカ・ドル
66ヨルダン・ディナール
67日本円
68ケニア・シリング
69キルギス・ソム
70カンボジア・リエル
71コモロ・フラン
72北朝鮮ウォン
73韓国ウォン
74クウェート・ディナール
75ケイマン諸島ドル
76カザフスタン・テンゲ
77ラオス・キップ
78レバノン・ポンド
79スリランカ・ルピー
80リベリア・ドル
81レソト・ロティ
82リトアニア・リタス
83リビア・ディナール
84モロッコ・ディルハム
85モルドバ・レイ
86マダガスカル・アリアリ
87マケドニア・ディナール
88ミャンマー・チャット
89モンゴル・トゥグルグ
90マカオ・パタカ
91モーリタニア・ウギア
92モーリシャス・ルピー
93モルディブ・ルフィヤ
94マラウイ・クワチャ
95メキシコ・ペソ
96マレーシア・リンギット
97モザンビーク・メティカル
98ナミビア・ドル
99ナイジェリア・ナイラ
100ニカラグア・コルドバ
101ノルウェー・クローネ
102ネパール・ルピー
103ニュージーランド・ドル
104オマーン・リアル
105パナマ・バルボア
106ペルー・ヌエボソル
107パプアニューギニア・キナ
108フィリピン・ペソ
109パキスタン・ルピー
110ポーランド・ズウォティ
111パラグアイ・グアラニー
112カタール・リヤル
113ルーマニア・新レウ
114セルビア・ディナール
115ロシア・ルーブル
116ルワンダ・フラン
117サウジ・リアル
118ソロモン諸島ドル
119セイシェル・ルピー
120スーダン・ポンド
121スウェーデン・クローナ/クローネ
122シンガポール・ドル
123セントヘレナ・ポンド
124シエラレオネ・レオーネ
125ソマリア・シリング
126スリナム・ドル
127南スーダン・ポンド
128サントメ・プリンシペ・ドブラー
129シリア・ポンド
130スワジ・リランジェニ
131タイ・バーツ
132タジギスタン・ソモニ
133トルクメニスタン・マナト
134チュニジア・ディナール
135トンガ・パアンガ
136トルコ・リラ
137トリニダード・トバゴ・ドル
138新台湾ドル
139タンザニア・シリング
140ウクライナ・フリヴニャ
141ウガンダ・シリング
142米ドル
143ウルグアイ・ペソ
144ウズベキスタン・ソム
145ベネズエラ・ボリバル
146ベトナム・ドン
147バヌアツ・バツ
148サモア・タラ
149CFA フラン BEAC
150東カリブ・ドル
151CFA フラン BCEAO
152CFP フラン (太平洋フラン)
153イエメン・リアル
154南アフリカ・ランド
155ザンビア・クワチャ
156ジンバブエ・ドル

WordPress のお問い合わせフォームプラグイン。シンプル、でも柔軟。