*

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

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

記事を読む

WordPress用プラグインで使う宿泊予約用カレンダーをPHPで書くぜ

ペンション・民宿・プチホテル用 宿泊予約 WordPress プラグインを作るシリーズで使う、空き部

記事を読む

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

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

記事を読む

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

前回までで基本的なプラグインの制作方法を簡単に学びました。今回からは空室管理の画面を作ってみます。柔

記事を読む

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

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

記事を読む

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

Message

メールアドレスが公開されることはありません。

CAPTCHA


Optionally add an image (JPEG only)

Sponsored Link

GoPro HERO7 Black 〜 インフルの熱で異常行動か?

何故か記憶に無いのですが GoPro HERO7 Blackが届きまし

軽量レバーロック式三脚を物色する美少女

旅行用三脚として活躍しているのは GITZO GT1542T と KT

激安中華な Bluetooth 5.0 イヤホンを買ってみたけど便利ね

前から気になっていた Bluetooth 5.0 イヤホン。 耳

2018年に購入したもので最も良かったものはミニスライダー

あけまして おめでとうございます 2019年 第一発目にご紹介す

Final Cut Pro X 用の無料 Calloutsプラグイン13種&12種がいい感じ

すっかり Final Cut ネタが続きますが皆様いかがお過ごしでしょ

→もっと見る




  •  

PAGE TOP ↑