###前提・実現したいこと
現在WordPressプラグイン「EventManager」を利用した予約サイトを作っています。
プラグイン公式サイト:http://wp-events-plugin.com/
通常の仕様として、作成した予約枠は、SELECTタグを使って出力されていますが、
製作中のサイトの運用方法を考えると、ラジオボタンでの出力が望ましく、
カスタマイズを試みています。
HTMLを変更する事で、ラジオボタンとして表示させる事は出来ましたが、
システム的に理想の挙動を実装できません。
プログラムの知識が乏しく、そもそも実装が不可能であるのかも判断ができません。
何卒ご教授くださいますようお願いいたします。
###発生している問題・エラーメッセージ
INPUTタグ内のNAME属性にプラグインでの予約状況を変更するための数値が出力されます。
その為、ラジオボタンがグループ化せず、意図する機能が実装できません。
この出力内容を変更すれば、グループ化しますが、
そうすると、予約状況の変更ができない状況です。
システムで出力しているソースが下記になります。
<table class="em-tickets" cellspacing="0" cellpadding="0"> <tr> <th class="em-bookings-ticket-table-type">チケットの種類</th> <th class="em-bookings-ticket-table-spaces">定員</th> </tr> <tr class="em-ticket" id="em-ticket-1"> <td class="em-bookings-ticket-table-type">第1部</td> <td class="em-bookings-ticket-table-spaces"><input type="radio" name="em_tickets[1][spaces]" class="em-ticket-select" id="em-ticket-spaces-1" value="1"></td> </tr> <tr class="em-ticket" id="em-ticket-2"> <td class="em-bookings-ticket-table-type">第2部</td> <td class="em-bookings-ticket-table-spaces"><input type="radio" name="em_tickets[2][spaces]" class="em-ticket-select" id="em-ticket-spaces-2" value="1"></td> </tr> <tr class="em-ticket" id="em-ticket-3"> <td class="em-bookings-ticket-table-type">第3部</td> <td class="em-bookings-ticket-table-spaces"><input type="radio" name="em_tickets[3][spaces]" class="em-ticket-select" id="em-ticket-spaces-3" value="1"></td> </tr> </table>
###該当箇所と思しきソースコード [em-ticket.php]
function get_spaces_options($zero_value = true, $default_value = 0){ $available_spaces = $this->get_available_spaces(); if( $this->is_available() ) { $min_spaces = $this->get_spaces_minimum(); if( $default_value > 0 ){ $default_value = $min_spaces > $default_value ? $min_spaces:$default_value; }else{ $default_value = $this->is_required() ? $min_spaces:0; } ob_start(); ?> <input type="radio" name="em_tickets[<?php echo $this->ticket_id ?>][spaces]" class="em-ticket-select" id="em-ticket-spaces-<?php echo $this->ticket_id ?>" value="1"> <?php return apply_filters('em_ticket_get_spaces_options', ob_get_clean(), $zero_value, $default_value, $this); }else{ return false; } }
###該当箇所と思しきソースコード [em-booking.php]
function get_post( $override_availability = false ){ $this->tickets_bookings = new EM_Tickets_Bookings($this->booking_id); do_action('em_booking_get_post_pre',$this); $result = array(); $this->event_id = $_REQUEST['event_id']; if( isset($_REQUEST['em_tickets']) && is_array($_REQUEST['em_tickets']) && ($_REQUEST['em_tickets'] || $override_availability) ){ foreach( $_REQUEST['em_tickets'] as $ticket_id => $values){ //make sure ticket exists if( !empty($values['spaces']) || $override_availability ){ $args = array('ticket_id'=>$ticket_id, 'ticket_booking_spaces'=>$values['spaces'], 'booking_id'=>$this->booking_id); if($this->get_event()->get_bookings()->ticket_exists($ticket_id)){ $EM_Ticket_Booking = new EM_Ticket_Booking($args); $EM_Ticket_Booking->booking = $this; if( !$this->tickets_bookings->add( $EM_Ticket_Booking, $override_availability ) ){ $this->add_error($this->tickets_bookings->get_errors()); } }else{ $this->errors[]=__('You are trying to book a non-existent ticket for this event.','events-manager'); } } } $this->booking_comment = (!empty($_REQUEST['booking_comment'])) ? wp_kses_data(stripslashes($_REQUEST['booking_comment'])):''; //allow editing of tax rate if( !empty($this->booking_id) && $this->can_manage() ){ $this->booking_tax_rate = (!empty($_REQUEST['booking_tax_rate']) && is_numeric($_REQUEST['booking_tax_rate'])) ? $_REQUEST['booking_tax_rate']:$this->booking_tax_rate; } //recalculate spaces/price $this->get_spaces(true); $this->calculate_price(); //get person $this->get_person(); //re-run compatiblity keys function $this->compat_keys(); //depricating in 6.0 } return apply_filters('em_booking_get_post',count($this->errors) == 0,$this); }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/28 07:09
2016/08/28 07:33
退会済みユーザー
2016/08/28 07:51
2016/08/28 08:00
退会済みユーザー
2016/10/02 07:49
2016/10/03 08:00
退会済みユーザー
2016/10/04 06:33