*

ワードプレス用宿泊予約プラグイン開発「空室情報読み込み」

公開日: : WordPress ,

前回までに作ったカレンダーに空室状況を表示させます。最初に表示欄を作って確認してからデータベースの読み込み関数を組み込みます。

まずは前回までのカレンダー部分を確認しておきます。

function get_booking_calendar($year = "", $month = "") {
    if(empty($year) && empty($month)) {
        $year = date("Y");
        $month = date("n");
    }
    //月末の取得
    $l_day = date("j", mktime(0, 0, 0, $month + 1, 0, $year));
    //初期出力
    $tmp = <<<EOM
<table class="calendar">
    <caption>{$year}年{$month}月</caption>
    <tr>
        <th class="sun">日</th>
        <th>月</th>
        <th>火</th>
        <th>水</th>
        <th>木</th>
        <th>金</th>
        <th class="sat">土</th>
    </tr>\n
EOM;
    $lc = 0;
    //月末分繰り返す
    for ($i = 1; $i < $l_day + 1;$i++) {
        //曜日の取得
        // 0=日曜日 1=月曜日 2=火曜日....6=土曜日
        $week = date("w", mktime(0, 0, 0, $month, $i, $year));
        //曜日が日曜日の場合
        if ($week == 0) {
            $tmp .= "\t<tr>\n";
            $lc++;
        }
        //1日の場合
        if ($i == 1) {
            if($week != 0) { // 日曜日じゃない場合
                $tmp .= "\t<tr>\n";
                $lc++;
            }
            $tmp .= repeat($week);
            // 空枠を$week個挿入する
            // 例:火曜日は$week=2 なので日曜・月曜の分(2個)空き枠を入れる
        }
        if ($i == date("j") && $year == date("Y") && $month == date("n")) {
            //現在の日付の場合 date("j")は今日の日付(頭にゼロなし)
            $tmp .= "\t\t<td class=\"today\">{$i}</td>\n";
        } else {
            //現在の日付ではない場合
            $tmp .= "\t\t<td>{$i}</td>\n";
        }
        //月末の場合
        if ($i == $l_day) {
            $tmp .= repeat(6 - $week);
        }
        //土曜日の場合 ここで次の行に移動する
        if($week == 6) {
            $tmp .= "\t</tr>\n";
        }
    }
    if($lc < 6) {
    // 仕上がりが6行無い場合は1行追加する
        $tmp .= "\t<tr>\n";
        $tmp .= repeat(7);
        $tmp .= "\t</tr>\n";
    }
    if($lc == 4) {
    // 仕上がりが4行だった場合は上と合わせて2行追加で合計6行
        $tmp .= "\t<tr>\n";
        $tmp .= repeat(7);
        $tmp .= "\t</tr>\n";
    }
    $tmp .= "</table>\n";
    return $tmp;
}
 
function repeat($n) {
    return str_repeat("\t\t<td> </td>\n", $n);
}
?>

上のソースの「$tmp」変数に「$tmp2」を追加して空室状況表示の行を足していきます。

.....
        <th>金</th>
        <th class="sat">土</th>
    </tr>\n
EOM;
    $tmp2 = "";
    $lc = 0;
    //月末分繰り返す
....
//曜日が日曜日の場合
        if ($week == 0) {
            $tmp .= "\t<tr>\n";
            $tmp2 .= "\t<tr>\n";
....

という感じです。ポイントは「月末の場合」や「土曜日の場合」に以下のように$tmpへ追加し$tmp2の内容をクリアしておくことです。

//土曜日の場合 ここで次の行に移動する
        if($week == 6) {
		$tmp .= "\t</tr>\n";
		$tmp2 .= "\t</tr>\n";
		$tmp .= $tmp2;
		$tmp2 = "";
        }

また、最終部分の行数を調整する部分も同様の処理を加えます。

 if($lc < 12) {
    // 仕上がりが6行無い場合は1行追加する
        $tmp .= "\t<tr>\n";
        $tmp .= repeat(7);
        $tmp .= "\t</tr>\n";
	$tmp2 .= "\t<tr>\n";
        $tmp2 .= repeat(7);
        $tmp2 .= "\t</tr>\n";
	$tmp .= $tmp2;
	$tmp2 = "";
    }

以上で表示を確認すると下図のように2行表示させることに成功します。

スクリーンショット 2013-08-01 2.10.35 2

部屋タイプの取得

最初に部屋タイプを読み込んでおきます。読み込み専用の関数を用意します。

function load_type() {
	$array_data = array();
	$op_data = get_option( 'DrTE_option' );
	$array_data[0] = $op_data['DrTE_rooms'];
	$array_data[1] = $op_data['DrTE_type1'];
	$array_data[2] = $op_data['DrTE_type2'];
	$array_data[3] = $op_data['DrTE_type3'];
	return $array_data;
}

そしてカレンダーのメイン関数get_booking_calendar に引数の部屋タイプを追加します。

function get_booking_calendar($year = "", $month = "", $type = 1) {
....

本題の空室情報の読み込み

そして改造すべき部分は次の処理です。

if ($i == date("j") && $year == date("Y") && $month == date("n")) {
            //現在の日付の場合 date("j")は今日の日付(頭にゼロなし)
            $tmp .= "\t\t<td class=\"today\">{$i}</td>\n";
            $tmp2 .= "\t\t<td class=\"today\">{$i}</td>\n";
} else {
            //現在の日付ではない場合
            $tmp .= "\t\t<td>{$i}</td>\n";
            $tmp2 .= "\t\t<td>{$i}</td>\n";
        }

$tmp2 の行を以下の内容に書換えます。

$tmp2 .= "\t\t<td class=\"today\">" . load_aki_data($year, $month, $i, $type) . "</td>\n";

以上の処理で空き部屋数が表示されます。

スクリーンショット 2013-08-06 0.54.53

次回はこれを設定に従って○×▲表示にします。


Sponsored Link


 
 

関連記事

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(5)メニュー階層化

今回はオリジナルプラグインの管理画面でのメニュー作成について。かなりすんなりと出来てしまったので短め

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(7)セキュリティ対策

ここでセキュリティ対策についてまとめて復習してみます。ネットを検索すると、さまざまな対策が紹介されて

記事を読む

ワードプレス用宿泊予約プラグイン開発「空室カレンダー表示」

前回ネットで検索して見つけた calendar($year = "", $month = "") 関

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(4)データベース基礎

今回はWordPressのプラグイン開発で必要になるデータベースに関する知識ついて調べました。この辺

記事を読む

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(1)

初心者が、あらためて WordPress のプラグインを一から作る経過報告。たぶん連載記事ですね。途

記事を読む

ご質問は掲示板へお願いいたします。

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


Optionally add an image (JPEG only)

Sponsored Link

エレコム GRAPH GEAR NEO カメラバッグDGB-P01BKにジンバルを入れる

やっぱり高いけどEndurance (エンデュランス) カメラバッグの

エレコム GRAPH GEAR NEO カメラバッグDGB-P01BKが北の国から

一年中GWの美少女です。 Lowepro カメラリュック フリッ

MOZA Mini-S スマホ用スタビライザーが届いた!

1万円弱で買えるスマホ用ブラシレスジンバルの新型 MOZA Mini-

GoPro Hero7 Black用 保護ケース アルミ合金保護フレームがいいよって話

別に大した話ではありません。 最近書くことが少ないのでたまには書

期待の新製品 MOZA Mini-S スマホ用スタビライザーが発売されたみたい

教えてもらった新製品のホームページで MOZA Mini-Sが紹介され

→もっと見る




  •  

PAGE TOP ↑