お問い合わせはコチラから

Ultimate memberのプルダウン絞り込みVer2.1以降

サイト運営

WordPressで会員サイトを作るのに使われるUltimate MemberというWordpressのプラグインがあります。

そのUltimate Memberプラグインは登録フォームが無料とは思えないぐらいとても使いやすいです。Ultimate Memberの登録フォームにはプルダウンメニューの絞り込み機能や条件分岐などとても多機能です。

この記事では、Ultimate Memberの登録フォームにはプルダウンメニューの絞り込み機能の実現方法について説明します。この機能はネットに転がっている情報が古かったり、function.phpをいじらないといけなかったり、わかりにくいところがあったので、自分でやったときに分かりにくかった点をメモとして残しておきます。

Ultimate memberプラグイン

Ultimate member公式サイト

Ultimate member特徴

  • フロントエンド・ユーザープロフィール
  • フロントエンド・ユーザー登録
  • フロントエンド・ユーザーログイン
  • Custom form fields
  • Conditional logic for form fields
  • Drag and drop form builder
  • ユーザーアカウントページ
  • ユーザー権限グループのカスタム
  • メンバーディレクトリ
  • User emails
  • コンテンツの制限
  • Conditional nav menus
  • Show author posts & comments on user profiles
  • Developer friendly with dozens of actions and filters

Ultimate memberダウンロード

Ultimate memberのプルダウンメニューの絞り込み

Ultimate memberのプルダウンメニューの絞り込み機能については、公式サイトに説明があります。

Ultimate Member Ver2.1から仕様が変わっている

Ultimate Member Ver2.1以降とそれ以前でプルダウンメニューの絞り込みの実現方法の記載が分かれておりますので、最近UltimateMemberをインストールした人はVer2.1以降の説明を見る必要があります。

ネットに転がっている情報は、Ver2.1以前の情報が多く、公式サイトを見た方が安全です。

プルダウンメニューの絞り込みとは?

プルダウンメニューの絞り込みというのは、2つのプルダウンメニューに、親子関係を持たせ、親の選択結果から子供のプルダウンメニューの中身を連動させるというものです。

よく見かける例として、日本の都道府県を選ぶときに親メニューとして地方を選択してもらい、子メニューはその地方に属する県だけ表示させるというものです。

プルダウンメニューの絞り込みの実現手順

登録フォームで、プルダウンメニューを選ぶと、プルダウンメニューの親(parent)を指定する項目があります。

まず、絞り込みの親となるメニューを作ります。

次に、同じように、プルダウンメニューを選び、絞り込みの子となるメニューを作ります。その時にparentに先ほど作成した親のプルダウンメニューの名前を指定します。これで親子関係が紐づきます。

さらに、絞り込みのロジックは、callback関数が入力できるので、そこに絞り込みのロジックが書かれた関数名を記載します。

通常、callback関数は、function.phpにphp関数として定義します。

callback関数は何をする?

一言で言えば、プルダウンの内容を定義することです。

callback関数を登録すると、本来手動で入力していたプルダウンメニュー欄にcallback関数の出力が表示されるようになります。

つまり、callback関数の出力はプルダウンメニューの定義リストになります。

callback関数の例:プルダウンメニューのリストを定義

callback関数の役割からすれば、親メニューからの絞り込みの時だけでなく、通常のプルダウンメニューの登録時にもcallback関数でプルダウンメニューの内容を定義することもできるのです。

つまり、親メニューのプルダウンメニューを定義する関数をfunction.phpに記述して、callback関数として呼び出せば、プルダウンメニューをフォームに直書きしないで、callback関数内部で定義することができます。

次のコードは、都道府県の親プルダウンメニューの定義ですが、関数として定義しています。

callback関数にこの関数を指定すれば、プルダウンメニューの定義リストが自動的に出力されます。

function state_dropdown(){
$state = array(
"北海道"=>"北海道",
"関東"=>"関東",
"甲信越・北陸"=>"甲信越・北陸",
"東海"=>"東海",
"関西"=>"関西",
"中国"=>"中国",
"四国"=>"四国",
"九州"=>"九州",
"沖縄"=>"沖縄"
);
return $state;
}

親子関係のある絞り込みプルダウンメニューの実装

Ultimate member でプルダウンメニューの親子関係を定義し、親の選択結果を受け取って子のプルダウンメニューの表示を変更する時の手順を説明しいます。

今回、親のプルダウンメニューをcallback関数で指定する方法をご紹介しましたが、子のプルダウンメニューの関数内でその関数は出てきません。選択結果が渡されるだけです。

all_optionsの部分だけ変更すれば、他にも応用できると思います。

function todoufuken($has_parent = false){
$parent_options = isset( $_POST['parent_option'] ) ? $_POST['parent_option'] : false;

$all_options = array(
"北海道" => array(
"北海道"=>"北海道"
),
"関東"=> array(
"茨城県"=>"茨城県",
"栃木県"=>"栃木県",
"群馬県"=>"群馬県",
"埼玉県"=>"埼玉県",
"千葉県"=>"千葉県",
"東京都"=>"東京都",
"神奈川県"=>"神奈川県"
),
"甲信越・北陸"=> array(
"新潟県"=>"新潟県",
"富山県"=>"富山県",
"石川県"=>"石川県",
"福井県"=>"福井県",
"山梨県"=>"山梨県",
"長野県"=>"長野県"
),
"東海"=> array(
"岐阜県"=>"岐阜県",
"静岡県"=>"静岡県",
"愛知県"=>"愛知県",
"三重県"=>"三重県"
),
"関西"=> array(
"滋賀県"=>"滋賀県",
"京都府"=>"京都府",
"大阪府"=>"大阪府",
"兵庫県"=>"兵庫県",
"奈良県"=>"奈良県",
"和歌山県"=>"和歌山県"
),
"中国"=> array(
"鳥取県"=>"鳥取県",
"島根県"=>"島根県",
"岡山県"=>"岡山県",
"広島県"=>"広島県",
"山口県"=>"山口県"
),
"四国"=> array(
"徳島県"=>"徳島県",
"香川県"=>"香川県",
"愛媛県"=>"愛媛県",
"高知県"=>"高知県"
),
"九州"=> array(
"福岡県"=>"福岡県",
"佐賀県"=>"佐賀県",
"長崎県"=>"長崎県",
"熊本県"=>"熊本県",
"大分県"=>"大分県",
"宮崎県"=>"宮崎県",
"鹿児島県"=>"鹿児島県"
),
"沖縄"=> array(
"沖縄"=>"沖縄"
),
);

$arr_options = array();

if ( ! is_array( $parent_options ) ) {
$parent_options = array( $parent_options );
}

foreach ( $parent_options as $parent_option ) {
if ( isset( $all_options[ $parent_option ] ) ) {
$arr_options = array_merge( $arr_options, $all_options[ $parent_option ] );
} elseif ( ! isset( $_POST['parent_option'] ) ) {
foreach ( $all_options as $k => $opts ) {
$arr_options = array_merge( $opts, $arr_options );
}
}
}

//code to do something if other options are not selected or empty match
if ( empty( $arr_options ) ) {
$arr_options[ ] = "no states";
} else {
$arr_options = array_unique( $arr_options );
}

return $arr_options;
}

まとめ

Ultimate memberは会員サイトを作る時に便利なのですが、有料のアドオンが必要になると、サブスクリプションタイプなので、無限にお金がかかります。

無料で使える範囲で目的が達成できるのであれば、とても便利なプラグインだと思いますが、それだとwordpressのユーザー登録と機能的にあまり変わらないので、導入する時は無料で自分のやりたいことができるのかどうかよく考えた方が良いと思います。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました