この記事は、備忘録です。技術的検証などは、殆ど行っていません。更にWordpressのコーダーとしてはド素人レベルです。
Polylangプラグイン導入
MTS Simple Booking-C をダウンロード(Ver.1.4.1)して導入するのと同時に、Polylangプラグインも導入する。
以降はPolylangプラグインで日本語と英語を設定済みの条件下での話。
予約カレンダー(月)
polylangプラグインを導入して、各々の言語のフロントページにショートコードを利用して月カレンダーを表示すると、何もしなくても多言語化される。
日毎の予約テーブル
月カレンダー同様、何もしなくても多言語される。
予約フォーム
スラッグ名をbooking-formにした固定画面を用意する必要があるが、日本語のみ対応のコードになっている為に改造した。
方針
言語 | スラッグ | url |
日本語 | booking-form | ドメイン名/booking-form/~ |
英語 | booking-form-en | ドメイン名/en/booking-form-en/~ |
- 日毎の予約テーブルからのリンクは上記のurlする。
- booking-form,booking-form-enどちらもmtssb-booking-form.phpをディスパッチする。
- mtssb-booking-form.php は多言語化する。
手順 (mts-simple-booking.php)
(1) 50行目付近に一行追加
// フロントページ
const PAGE_BOOKING_FORM = 'booking-form';
const PAGE_BOOKING_FORM_EN = 'booking-form-en'; /* 追加 */
(2) 関数 form_dispatcher()を変更
public function form_dispatcher($content) {
if (is_page(self::PAGE_BOOKING_FORM) || is_page(self::PAGE_BOOKING_FORM_EN)) {
$booking_form = $this->_load_module('MTSSB_Booking_Form');
$content = $booking_form->booking_form($content);
}
return $content;
}
手順 (mtssb-front.php)
(1) 関数 _reservation_of_the_article()を変更
protected function _reservation_of_the_article($article_id, &$article, $thetime, $schedule) {
global $mts_simple_booking;
// 予約ページのURL
$culUriArr = explode("/", $this->this_page); // Uriを分解
$culUriArr = array_filter($culUriArr);
if(in_array('en', $culUriArr)) {
$form_name = MTS_Simple_Booking::PAGE_BOOKING_FORM_EN;
}
else {
$form_name = MTS_Simple_Booking::PAGE_BOOKING_FORM;
}
$form_link = $mts_simple_booking->get_permalink_by_slug($form_name);
‘en’の検索がハードコーディングなのが。。。^^;
手順 (mtssb-booking-form.php)
多言語化する、ここでは一部例を記載。
(1) 488行目付近
変更前
<form method="post" action="<?php echo $url ?>">
<fieldset id="booking-reservation-fieldset">
<legend><?php echo apply_filters('booking_form_number_title', 'ご予約') ?></legend>
変更後
<form method="post" action="<?php echo $url ?>">
<fieldset id="booking-reservation-fieldset">
<legend><?php echo apply_filters('booking_form_number_title', __("Booking", $this->domain)) ?></legend>
手順(mts-simple-booking.php)
(1) 関数internal_dispatcher()を変更
public function internal_dispatcher() {
$action = isset($_POST['action']) ? $_POST['action'] : '';
if (is_page(self::PAGE_BOOKING_FORM) || is_page(self::PAGE_BOOKING_FORM_EN)) {
if ($action == 'confirm') {