*

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作る(11)空室管理画面 B

公開日: : 最終更新日:2013/07/04 WordPress ,

空室管理画面の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 などを設定しています。

スクリーンショット 2013-06-27 3.04.00

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

スクリーンショット 2013-06-28 2.02.41

ここで不具合を発見。最初に空室管理のページを開いた段階では、日付等が設定されていないので上図のように日付欄がおかしなことになっています。

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 プラグインを作る(4)データベース基礎

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

記事を読む

WordPressのプラグインで独自のページを作る方法がわからない

Wordpressのプラグインを開発していて疑問がでてきました。プラグイン独自のページはどうすればい

記事を読む

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

前回の物を若干変更しながら、どんどん進んでいきたいと思います。今回は管理画面の表示内容について行って

記事を読む

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

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

記事を読む

WordPressのオリジナルプラグインにショートコード機能を持たせる

ペンション・民宿・プチホテル用 宿泊予約 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 ↑