WordPressで予約サイトを作るときはMTS Simple Bookingを利用させて頂いております。
非常によくできたプラグインだと思います。
スタートアップのサービスに使用するのに、ちょうど良い感じだと思います。
運用しているとカスタマイズがしたくなります。
モバイルだとカレンダー表示がきついので表示をかえたり、予約済みデータを期間指定で取得したい場合などなど。
以下はイベントデータを抽出し、サイトマップのデータを生成しています。
/** * シンプルブッキングプラグインからイベントデータの抽出 * * @return array $sitemap_data * @author tuti */ function get_simple_booking_events() { global $wpdb; // 期間指定 $month_first_day = '1496242800'; // 開始日:2017/06/01 00:00:00 $next_month_end_day = mktime(0, 0, 0, date('n') + 2, 1, date('Y')); // 翌月末 $query = " SELECT (booking_time - booking_time % 86400) AS booking_daytime,article_id FROM wp_mtssb_booking WHERE booking_time>=$month_first_day AND booking_time<$next_month_end_day GROUP BY booking_daytime,article_id ORDER BY booking_daytime,article_id "; $rows = $wpdb->get_results($query); // 除外するページID $no_publish_aids = array(0); $sitemap_data = ''; foreach($rows as $row) { $query =" SELECT ID AS article_id,post_title AS name,post_type,post_status,post_modified FROM wp_posts WHERE ID=$row->article_id AND post_type='mtssb_article' AND post_status in ('publish') "; $event = $wpdb->get_results($query); //echo date("Y年m月d日", $row->booking_daytime); //echo $event[0]->name; // 除外adi if ( in_array($event[0]->article_id, $no_publish_aids) ) { continue; } $permalink = sprintf('http://xxxxx.com/schedule/?aid=%d&ymd=%d', $event[0]->article_id, $row->booking_daytime); $postdate = explode(" ", $event[0]->post_modified); $sitemap_data .= '<url>'."\n". '<loc>'. _h($permalink) .'</loc>'."\n". '<lastmod>'. $postdate[0] .'</lastmod>'."\n". '<changefreq>monthly</changefreq>'."\n". '</url>'."\n"; } return $sitemap_data; } /** * エスケープ処理 * XMLの値の中に&が入ってるとエラーで落ちるので * * @param string * @return string */ function _h($value) { return htmlspecialchars($value, ENT_QUOTES); }
クエリが重そうなのでキャッシュを使うことをオススメします 😆