先日から、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’);}
あくまで現時点のやり方です。もっと良い方法が見つかりましたら、改めたいと思います。また、もっと良い方法をお持ちの方がおりましたら、コメントいただけると幸いです。