ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(11)空室管理画面 B
空室管理画面の2回目。今回は空室状況の入力欄と月が変わった時の処理を加えてみます。今回は一覧表示なのでまだいいほうかもしれませんが、カレンダーとか面倒なんですよね。
まずは表示用HTMLをループで生成する関数をROOMクラスに加えます。
wp-contents/plugins/drtehotel/class/rooms.php
function create_calendar() {
$yy = mb_substr($this->rdate,0,4); // 年の取り出し
$mm = mb_substr($this->rdate,5,2); // 月の取り出し
$last = date('t', mktime(0,0,0, $mm, 1, $yy)); // 末日
$week = array( '日', '月', '火', '水', '木', '金', '土' );
$tmp = "";
for ($i=0; $i<$last; $i++) {
if( $i<9 ) $dd = "0" . strval($i+1);
else $dd = $i + 1;
$youbi = date('w', mktime(0,0,0, $mm, $dd, $yy));
$tmp .= '<tr>';
$tmp .= '<td>' . $yy . "年" . $mm . "月" . $dd . "日</td>";
if( $youbi==0 ) $tmp .= '<td class="sun">' . $week[$youbi] . "曜日</td>";
else if( $youbi==6 ) $tmp .= '<td class="sat">' . $week[$youbi] . "曜日</td>";
else $tmp .= '<td class="week">' . $week[$youbi] . "曜日</td>";
$tmp .= '<td>'. $this->rtype . '</td>';
$tmp .= '<td><input type="text" name="ma' . $i . '" value="' . $this->name . '"></td>';
$tmp .= '</tr>';
}
return $tmp;
}
日付と曜日の処理をしています。曜日は配列で表示させて、土日はclassを変えてCSSで色分けします。CSSの設定は良くわからなかったのでHTMLでを出力する部分で無理やり書きだすようにしました。
function show_screen() {
echo '<link rel="stylesheet" href="' . WP_PLUGIN_URL . '/'.
str_replace(basename(__FILE__),"",plugin_basename(__FILE__))
.'defoStyle.css" />';
echo '<div class="wrap">';
echo '<div id="icon-options-general" class="icon32">
<br /></div><h2>空室管理</h2>';
「class/defoStyle.css」ファイルを作成し .sun などを設定しています。

同じようにテーブルデザインなどをCSSでデザインできるようになりました。

ここで不具合を発見。最初に空室管理のページを開いた段階では、日付等が設定されていないので上図のように日付欄がおかしなことになっています。
function create_calendar() の中で$this->rdateが設定されているかどうか確認する方法を考えました。しかし、別途テーブルからデータを読み込む際も確認が必要となるため、確認(設定されていない場合は今月を設定)処理を別途関数で用意することにしました。
wp-contents/plugins/drtehotel/class/rooms.php
function check_rdata() {
$yy = mb_substr($this->rdate,0,4); // 年の取り出し
$mm = mb_substr($this->rdate,5,2); // 月の取り出し
if (!checkdate($mm, 10, $yy)) { // yy年mm月10日は異常な場合
$this->rdate = date("Y年m月");
$op_data = get_option( 'DrTE_option' );
// テーブルから初期設定を読み込む
$this->rtype = $op_data['DrTE_type1'];
// 部屋タイプ1を設定
}
}
メインのプラグインファイル側で form の action 値がない場合には上記関数を実行させるように修正します。
wp-contents/plugins/drtehotel/drtehotel.php
if ($_POST['action']=='change') {
$rm->rtype = $_POST['rtype'];
$rm->rdate = $_POST['rdate'];
} else if ($_POST['action']=='update') {
check_admin_referer('example');
$rm->comments = '<div id="message" class="updated">
<p>更新しました。</p></div>';
} else {
$rm->check_rdata();
}
//画面表示
$rm->show_screen();
テーブルからの読み込み・更新処理は次回に!
Sponsored Link
関連記事
-
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(3)
前回のソースがイマイチだったので若干書き直しました。しかし、これで正しいのかも疑問なんですが、取り敢
-
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(1)
初心者が、あらためて WordPress のプラグインを一から作る経過報告。たぶん連載記事ですね。途
-
-
WordPressのプラグインで独自のページを作る方法がわからない
Wordpressのプラグインを開発していて疑問がでてきました。プラグイン独自のページはどうすればい
-
-
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(10)空室管理画面 A
さっそく空室管理画面を作っていきます。今回は画面設計中心です。部屋タイプの選択と、空き情報を更新する
-
-
WordPressのオリジナルプラグインにショートコード機能を持たせる
ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る連載で、ショートコード





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