ワードプレスの他者様作成のプラグインを改造しております。
使用しているプラグインはmts-simple-booking-cと言うものですが、既に開発者の方のWebは閉じられており、配布も行われておりません。
http://www.amagistudio.com/reservedemonstration/
上記サイトよりmts-simple-booking-cを改造されたものをダウンロードし、さらに改造しております。
現在、下記の処理の流れの中で、「予約フォーム内のデータを引用して確認メール送信」の箇所でエラーが発生しております。
予約フォームにデータ入力>>各種チェック>>データベースへ登録>>予約フォーム内のデータを引用して確認メール送信
表示エラー
Notice: Undefined property: MTSSSB_Simple_Booking::$booking_form in /Applications/MAMP/htdocs/test/wp-content/plugins/mts-simple-booking-guy_006/mtsssb-mail.php on line 47 Fatal error: Call to a member function getBooking() on null in /Applications/MAMP/htdocs/test/wp-content/plugins/mts-simple-booking-guy_006/mtsssb-mail.php on line 47
該当すると思われるファイル
/mts-simple-booking-guy_006/
┣mtsssb-simple-booking.php
┣mtsssb-booking-form.php
┗mtsssb-mail.php
mtsssb-simple-booking.php
下記、エラーが起きている箇所の処理の抜粋になります。
$mail = $this->_load_module('MTSSSB_Mail');の処理でエラーが発生しております。
$mtsssb_simple_booking = new MTSSSB_Simple_Booking(); class MTSSSB_Simple_Booking { /** * 予約登録・メール送信処理内部ディスパッチャー * */ public function internal_dispatcher() { $action = isset($_POST['action']) ? $_POST['action'] : ''; if (is_page(self::PAGE_BOOKING_FORM)) { if ($action == 'confirm') { $booking_form = $this->_load_module('MTSSSB_Booking_Form'); if ($booking_form->front_booking()) { $mail = $this->_load_module('MTSSSB_Mail'); …
mtsssb-mail.php
下記、エラーが起きている箇所の処理抜粋になります。
$booking = $mtsssb_simple_booking->booking_form->getBooking();の行でエラーが出ております。
<?php class MTSSSB_Mail { /** * 予約登録のメール * */ public function booking_mail() { global $mtsssb_simple_booking; $booking = $mtsssb_simple_booking->booking_form->getBooking(); // 予約IDの生成 $reserve_id = date('ymd', $booking['booking_time']) . substr("00{$booking['booking_id']}", -3); // 予約者情報 $adda = array($booking['client']['name'], $reserve_id); // メールテンプレートの読込み $template = get_option($this->domain . '_reserve'); // メール文生成 $body = $this->_booking_content($booking, $template); // クライアント $subject = $template['title']; $client_content = $this->_replace_variable($template['header'], $adda) . $body . $this->_replace_variable($template['footer'], $adda); $client_to = $booking['client']['email']; if (!empty($client_to)) { $client_ret = wp_mail($client_to, $subject, $client_content, $this->fromshop); } } }
mtsssb-simple-booking.php
下記、今回のエラーで該当するであろう部分を抜粋しております。
少し長くなり申し訳ございません。
<?php if (!class_exists('MTSSSB_Booking')) { require_once(dirname(__FILE__) . '/mtsssb-booking.php'); } class MTSSSB_Booking_Form extends MTSSSB_Booking { const PAGE_NAME = 'mtsssb_booking-form'; /** * フォーム入力予約登録処理 * */ 中略 // 予約データを正規化し、登録データを取得する $this->booking = $this->normalize_booking($_POST['booking'], $this->article['count']); 中略 // 予約を新規登録する $booking_id = $this->add_booking(); if (!$booking_id) { $this->err_message = $this->_err_message('ERROR_ADD_BOOKING'); return false; } $this->booking['booking_id'] = $booking_id; return $booking_id; } /** * ステータス別予約フォーム処理 * */ public function booking_form($content) { // 予約登録処理実行の後処理 $action = isset($_POST['action']) ? $_POST['action'] : ''; if ($action == 'confirm') { if (empty($this->err_message)) { echo 'ご予約ありがとうございました。'; } return $this->_out_errorbox(); } 中略 // 予約データを正規化し、登録データを取得する $this->booking = $this->normalize_booking($_POST['booking'], $this->article['count']); 中略 /** * お客様入力フォームの表示 * */ protected function _input_form() { global $current_user; $url = get_permalink(); $client = $this->booking['client']; 中略 // ログイン中であればログインユーザー情報をセットする if (is_user_logged_in() && empty($client['name']) && empty($client['email'])) { get_currentuserinfo(); 中略 $client['name'] = $current_user->last_name . ' ' . $current_user->first_name; $client['email'] = $email2 = $current_user->user_email; 中略 } ob_start(); ?> <?php /** * 予約入力確認フォームの表示 * */ protected function _confirming_form() { $url = get_permalink(); $client = $this->booking['client']; // オプション追加選択の処理 if ($this->article['addition'] == 1) { $options = get_option($this->domain . '_option'); } ob_start(); ?> <div id="mtsssb_booking-form" class="content-form"> <form method="post" action="<?php echo $url ?>"> <fieldset id="booking-confirm-fieldset"> <legend><?php echo apply_filters('booking_form_confirm_title', 'ご予約内容の確認') ?></legend> <table> <tr> <th>ご宿泊日</th> <td><?php echo esc_html($this->article['name']) ?><br /> <?php echo apply_filters('booking_form_date', date('Y年n月j日 ', $this->booking['booking_time']), $this->booking['booking_time']) ?><br /><?php echo apply_filters('booking_form_date', date('H時 i分', $this->thetime), $this->thetime) ?> チェクイン可 </td> </tr> 中略 <?php echo nl2br(esc_html($this->booking['note'])) ?> <input type="hidden" name="booking[note]" value="<?php echo esc_textarea($this->booking['note']) ?>" /> </td> </tr> </table> </fieldset> <div id="action-button" style="text-align: center"> <?php echo apply_filters('booking_form_submit_button', '<button type="submit" name="reserve_action" value="validate">予約する</button>'); ?> </div> <input type="hidden" name="nonce" value="<?php echo wp_create_nonce("{$this->domain}_" . self::PAGE_NAME) ?>" /> <input type="hidden" name="booking[article_id]" value="<?php echo $this->article_id ?>" /> <input type="hidden" name="booking[booking_time]" value="<?php echo $this->thetime ?>" /> <input type="hidden" name="action" value="confirm" /> <input type="hidden" name="booking[user_id]" value="<?php echo esc_html($this->booking['user_id']) ?>" /> </form> </div> <?php return ob_get_clean(); } /** * 対象予約品目の参照を戻す * */ public function getArticle() { return $this->article; } /** * 各種条件設定パラメータの参照を戻す * */ public function getControls() { return $this->controls; } }
$booking_formやgetBookingの記載がないことが原因かと思われます。
クラスや関数を用いたコードの記載がほとんどないため、どの部分にどのように追記すれば良いのか、
または、$booking = $mtsssb_simple_booking->booking_form->getBooking();の記載方法が正しいのか、
四苦八苦しております。
アドバイスをいただけないでしょうか、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/10 23:37