データベースのデータをFullCalendarのeventsデータとしてどう反映させるか

先日から、FullCalendarを利用して予約管理システムのデータ表示に使おうと調査とテストを繰り返している。その中で、

eventsデータは、JavaScriptの<script>~</script>記述の中に書く

ことは理解できました。しかし、問題はそこからでした。json形式のデータをphpなどの外部プログラムあるいは、ファイルから指定可能なのですが、

参考:サイト
http://www.dn-web64.com/archives/web/fullcalendar/

いずれにしても、ファイル書き出しか、プログラムによるJavascriptからのデータベース接続が発生してしまうわけです。

ファイル書き出しをすることになると、やはりIOの物理的なパフォーマンスの悪化につながりますし、WordPressプラグインの開発をしているのに、別のphpからDBアクセスをおこなうphpプログラムを書くのも、DB接続情報を記述することになるので、どうにかして、WordPressのプラグイン内で自動生成できないかと考えました。

ということで、現在の回答なのですが、Eventsデータをデータベースから取得したデータで動的に作るというやり方にしています。

$('#calendar').fullCalendar({
events: ※ここの部分をデータベースデータで動的に作成する
});

作成途中のメモなので、最終回答は別途になるきますが、下記のようになりました。とサンプルスクリプトをご紹介したいところですが、表示スタイルを用意していないので、のちに準備したときに下記は修正させてください。

add_action( ‘wp_print_footer_scripts’, ‘out_fullcalendar_script’ ); //アクションフック指定は調整要
function out_fullcalendar_script(){

//動的部分以外のスクリプト前半の読み込み
readfile(‘wp-content/plugins/chigyo-reservation/a.js’);

global $wpdb;
$table_name = $wpdb->prefix . ‘table_a’;
$table_name_code = $wpdb->prefix . ‘table_b’;

$query = “select a.room_id,a.ymd,a.start_time,a.end_time,b.name
from {$table_name} a, {$table_name_code} b “;

$rows = $wpdb->get_results($query);

$output_arrays = array();

if($rows){
foreach ($rows as $row) {
$output_arrays[] = array(
‘id’ => ‘1’,
‘resourceId’ => ‘a’,
‘title’ => $row->title,
‘start’ => $row->ymd
);
}
}

echo json_encode($output_arrays);

//動的部分以外のスクリプト後半の読み込み
readfile(‘wp-content/plugins/chigyo-reservation/b.js’);

}

あくまで現時点のやり方です。もっと良い方法が見つかりましたら、改めたいと思います。また、もっと良い方法をお持ちの方がおりましたら、コメントいただけると幸いです。

コメントを残す