【WordPress】EventManagerで予約項目を増やす方法

EventManagerというプラグインで予約するときの項目を増やす方法です。

wp-content/plugins/events-manager/em-functions.php
テキストエディタで開いて下さい。

ここでは住所を追加したいと思います。
以下のコードを追記して下さい。

function bweb_add_custom_event_fields(){
	?>
		<p>
			<label for='user_company'><?php esc_html_e('住所', 'textdomain'); ?></label>
			<input type="text" name="user_company" id="user-company"  class="input" value="<?php if(!empty($_REQUEST['user_company'])) echo esc_attr($_REQUEST['user_company']); ?>" />
		</p>

	<?php
}
add_action('em_register_form','bweb_add_custom_event_fields');


function  bweb_save_custom_event_fields (){
	global $EM_Booking ;
	if( ! empty( $_REQUEST['user_company'] ) ){
			$EM_Booking->booking_meta['registration']['user_company'] = wp_kses( $_REQUEST['user_company'], array() );
	}
}
add_filter('em_booking_add','bweb_save_custom_event_fields');	


function bweb_table_custom_event_fields($template, $EM_Bookings_Table){
        $template['user_company'] = __('住所', 'textdomain');
        return $template;
}
add_action('em_bookings_table_cols_template', 'bweb_table_custom_event_fields',10,2);
 
 
function bweb_display_col_custom_event_fields($val, $col, $EM_Booking, $EM_Bookings_Table, $csv){
        if( $col == 'user_company' ){
                $val = $EM_Booking->get_person()->user_company;               
        }
        return $val;
}
add_filter('em_bookings_table_rows_col','bweb_display_col_custom_event_fields', 10, 5);

上記コードにある二箇所の「住所」を好きな項目に変更してください。
閉じてアップロードすれば項目が追加されたはずです。

データベースにも追加されますので、管理画面の予約管理→歯車を押せば項目をドロップすればCMSに落とす際にも追加されます。



※追記です
自動返信メールで上記で追加した項目のプレースホルダーが必要かと思います。その場合は、
wp-content/plugins/events-manager/classes/em-booking.php
1029行目あたりからメールで使えるプレースホルダーの設定がありますので

				case '#_RESCOMPANY' : //deprecated
				case '#_BOOKINGCOMPANY':
					$replace = $this->get_person()->user_company;
					break;

を追加してアップロードして下さい。
これでメール設定で#_BOOKINGCOMPANYが使えるようになります。