WordPressでイベント予約の管理機能を実現するプラグイン『Events Manager』を使っています。このプラグインでは非常に充実した設定項目で予約機能を作ることができます。また、ユーザー登録・管理のために『WP-Members』というプラグインも使っています。
この記事では、『Events Manager』の「#_ATTENDEESLIST」(イベント予約者をリスト表示するためのタグ)をカスタマイズして、『WP-Members』で追加した会員情報のフィールドを表示する方法を紹介しています。(自分用の備忘用でもあるため余計な情報もメモってます)
自分が管理している個人参加フットサルのサイトで、参加予約を受け付けるために『Events Manager』を利用しています。参加予約の前には会員登録を必須としており、『WP-Members』も利用しています。
目次
目的:Events Managerの#_ATTENDEESLISTタグの修正方法について
Events Managerをインストールすると、WodPress管理画面の左メニューの「イベント」→「ヘルプ」で利用できるタグを見ることができます。
#_ATTENDEESLIST Shows the list of people attending the event.
この#_ATTENDEESLISTのタグを使えば、該当のイベントを予約している人の名前をずらーっと並べてリスト表示することができます。
が、表示される名前はデフォルトでは「名前+苗字」という表示になっており、日本語圏では特に使い勝手が悪いです。
この#_ATTENDEESLISTで表示する項目を
「名前+苗字」
↓
「WP-Membersで追加登録したニックネーム|性別|WP-Membersで追加登録したコース」にしようというのが今回の目的です。
僕の環境:WP-Membesrで追加登録しているフィールド
『WP-Members』でユーザー情報のフィールド(項目)を変更することができます。僕は以下のフィールドを追加しています。
- 個サルで呼ばれるニックネーム(nickname)
- 普段よく参加しているコース(course)
▼管理画面でのフィールドはこんな感じになってます。
実際の修正内容
修正したphpファイルは以下の2ファイルです。
- classes/em-person.php
- templates/placeholders/attendeeslist.php
それぞれ修正内容をメモしておきます。(②については自分用のメモです。)
①em-person.phpの修正内容
classes/em-person.phpの108行目あたりの記述を修正します。
function get_name(){ $full_name = $this->first_name . " " . $this->last_name ; $full_name = wp_kses_data(trim($full_name)); $name = !empty($full_name) ? $full_name : $this->display_name; return apply_filters('em_person_get_name', $name, $this); }
↓
function get_name(){ $full_name = $this->nickname . " | " . $this->sex . " | " . $this->course ; $full_name = wp_kses_data(trim($full_name)); $name = !empty($full_name) ? $full_name : $this->display_name; return apply_filters('em_person_get_name', $name, $this); }
分かりますでしょうか?2行目が変更されており、
$full_name = $this->nickname . ” | ” . $this->sex . ” | ” . $this->course ;
となりました。
このnickname、sex、courseという部分に『WP-Members』でメタキーとして登録されているものを指定すればOKです。
②attendeeslist.phpの修正
こちらの修正は今回の目的には直接的には関係ないので必要な場合のみでOKです。
僕はulタグにEvents Managerのクラスが当たっているのが使いにくかったのでWordPress全体で設定しているCSSが適用されるようにクラスを除去しました。(自分の作業メモ用です)
<?php /* @var $EM_Event EM_Event */ $people = array(); $EM_Bookings = $EM_Event->get_bookings(); if( count($EM_Bookings->bookings) > 0 ){ ?> <ul class="event-attendees"> <?php foreach( $EM_Bookings as $EM_Booking){ /* @var $EM_Booking EM_Booking */ if($EM_Booking->booking_status == 1 && !in_array($EM_Booking->get_person()->ID, $people) ){ $people[] = $EM_Booking->get_person()->ID; echo '<li>'. $EM_Booking->get_person()->get_name() .'</li>'; }elseif($EM_Booking->booking_status == 1 && $EM_Booking->is_no_user() ){ echo '<li>'. $EM_Booking->get_person()->get_name() .'</li>'; } } ?> </ul> <?php }
↓
<?php /* @var $EM_Event EM_Event */ $people = array(); $EM_Bookings = $EM_Event->get_bookings(); if( count($EM_Bookings->bookings) > 0 ){ ?> <ul> <?php foreach( $EM_Bookings as $EM_Booking){ /* @var $EM_Booking EM_Booking */ if($EM_Booking->booking_status == 1 && !in_array($EM_Booking->get_person()->ID, $people) ){ $people[] = $EM_Booking->get_person()->ID; echo '<li>'. $EM_Booking->get_person()->get_name() .'</li>'; }elseif($EM_Booking->booking_status == 1 && $EM_Booking->is_no_user() ){ echo '<li>'. $EM_Booking->get_person()->get_name() .'</li>'; } } ?> </ul> <?php }
これは単純に7行目の<ul>に適用されていたクラスを除外したのみです。
まとめのヒトコト
以前のEvents Managerカスタマイズについての別記事でも文末に書きましたが、アップデートの際は修正が飛ぶのでご注意ください。(当記事はバージョン5.9.2でのものです。今後の修正のためブックマーク推奨。)