###前提・実現したいこと
WordPressにて、「MTS simple booking C」というプラグインを使用しております。予約システムのプラグインで、こちらで予約ページを作成しています。予約ページは、【月間カレンダー】→【当日の受付時間】→【連絡先入力】というページ遷移になっております。
今回お聞きしたいのは、【当日の受付時間】につきましてです。
クラス名「day-left」と「day-right」があり、day-leftは当日の受付時間を表示(リンクなし)、day-rightは当日の空きを示し、予約の空きがあれば○や△マークが出て連絡先入力画面へ移れるリンクが貼られ、空きなしであれば×が出てリンクが貼られないようになっているかと思います。(これも捉え方が間違っているかもしれません・・・。)美容院や病院の予約サイトのようなイメージです。
【当日の受付時間】ページの空き状況の表示が不要な為、
●1列にして時間の表示のみにしたい
●かつ、時間をクリックして連絡先入力画面に移るようにしたい
と考えております。
しかし、どの部分を変えれば良いのかわからず、行き詰まっております。
以下が該当のコードと考えています。
###該当のソースコード
* $daytime unix time * $params ショートコードパラメータ */ private function _daily_schedule($daytime, $params) { // スケジュールキー名 $key_name = MTS_Simple_Booking::SCHEDULE_NAME . date_i18n('Ym', $daytime); // 対象日付の予約カウントデータを読込む $this->reserved = $this->get_reserved_day_count($daytime); ob_start(); ?> <?php foreach ($this->articles as $article_id => &$article) : $this->schedule[$article_id] = get_post_meta($article_id, $key_name, true); // 予約クローズなら何も表示しない if (!$this->schedule[$article_id][date('d', $daytime)]['open']) continue; ?><div class="day-calendar"> <?php echo apply_filters('mtssb_day_title', "<h3>{$article['name']}</h3>", $article['name']) ?> <?php echo apply_filters('mtssb_day_caption', '<p>' . date(__('F j, Y', $this->domain), $daytime) . ' (' . __(date('D', $daytime)) . ')' . '</p>', $daytime) ?> <table> <tr> <th class="day-left"><?php echo apply_filters('mtssb_daily_time_title', __('Time', $this->domain)) ?></th> <th class="day-right"><?php echo apply_filters('mtssb_daily_booking_title', __('Booking', $this->domain)) ?></th> </tr> <?php foreach ($article['timetable'] as $time) : ?> <tr> <th class="day-left"><?php echo apply_filters('mtssb_time_header', date('H:i', $time), $time) ?></th> <td class="day-right"><?php $this->_reservation_of_the_article($article_id, $article, $daytime + $time, $this->schedule[$article_id][date_i18n('d', $daytime)]) ?></td> </tr><?php endforeach; ?> </table> </div><?php endforeach; ?> <?php echo apply_filters('mtssb_daily_message_after', '', $params['type']) ?> <?php return ob_get_clean(); } /** * 予約の詳細表示 * */ protected function _reservation_of_the_article($article_id, &$article, $thetime, $schedule) { global $mts_simple_booking; // 予約ページのURL $form_link = $mts_simple_booking->get_permalink_by_slug(MTS_Simple_Booking::PAGE_BOOKING_FORM); $rsvd_number = $rsvd_count = 0; // 予約受付開始時刻の確認 $mark = 'disable'; if ($this->today_time != $this->start_day_time || $this->start_time < $thetime) { if (isset($this->reserved[$thetime][$article_id])) { $rsvd_number = $this->reserved[$thetime][$article_id]['number']; $rsvd_count = $this->reserved[$thetime][$article_id]['count']; } if ($article['restriction'] == 'capacity') { $capacity = $article['capacity'] + intval($schedule['delta']); $capacity_rate = ($capacity - $rsvd_number) * 100 / ($capacity ? $capacity : 1); //echo sprintf("%d/%d人 残:%d%\n", $rsvd_number, $capacity, $capacity_rate); } else { $quantity = $article['quantity'] + intval($schedule['delta']); $quantity_rate = ($quantity - $rsvd_count) * 100 / ($quantity ? $quantity : 1); //echo sprintf("%d/%d件 残:%d%\n", $rsvd_count, $article['quantity'] + intval($schedule['delta']), $quantity_rate); } if ($article['restriction'] == 'capacity') { if ($this->controls['vacant_rate'] < $capacity_rate) { $mark = 'vacant'; } else if ($capacity_rate <= 0) { $mark = 'full'; } else { $mark = 'low'; } // 席数(人数)残数 $disp_number = $capacity - $rsvd_number; } else { if ($this->controls['vacant_rate'] < $quantity_rate) { $mark = 'vacant'; } else if ($quantity_rate <= 0) { $mark = 'full'; } else { $mark = 'low'; } // 予約件数残数 $disp_number = $quantity - $rsvd_count; } } // リンク表示(記号または残数) echo "<div class=\"calendar-mark $mark" . (empty($class) ? '' : " $class") . '">'; if ($mark == 'vacant' || $mark == 'low') { if (((1440 <= $this->controls['start_accepting'] && $this->start_day_time <= $thetime) || $this->start_time < $thetime) && $this->controls['available']) { echo '<a class="booking-timelink" href="' . esc_url(add_query_arg(array('aid' => $article_id, 'utm' => $thetime), $form_link)) . '">'; echo $this->_daily_mark($disp_number, $mark) . '</a>'; } else { echo $this->_daily_mark($disp_number, $mark); } } else if ($mark == 'full') { echo $this->controls['full_mark']; } else { echo $this->controls['disable']; } echo '</div>'; } /** * 予約当日の時間割マーク表示 * */ protected function _daily_mark($number, $mark) { $output = empty($this->controls[$mark . '_mark']) ? $number : $this->controls[$mark . '_mark']; return apply_filters('mtssb_daily_mark', $output, $number); } }
###試したこと
ソースをベタ貼りしてしまい申し訳ありません。
時間割マーク表示の部分を削除して、リンクを貼らせる部分をday-leftの部分に移動させる?など考えて、何度も読み返し試そうとしましたが、試す→ページが表示されなくなるのを繰り返しています。PHP初心者なもので調べてもさっぱり分からなく、こちらのサイトにたどり着きました。
長文失礼いたしました。
どなたかお分かりでいらっしゃれば教えて頂ければと存じます。
よろしくお願い申し上げます。
###補足情報(言語/FW/ツール等のバージョンなど)
PHP5.6
回答1件
あなたの回答
tips
プレビュー