【WordPress】Ajax Event Calendar、直近イベント表示ショートコード
WordPressでのカレンダープラグインは色々ありますが、
悩んだ末にAjax Event Calendarを利用しています。
サイドバーにカレンダーの直近イベントを表示したかったのですが、
残念ながらそんなウィジェットが無かったので自作する事にしました。
サンプルプログラム
functions.php
define('AEC_EVENT_TABLE', 'aec_event');
add_shortcode('ace-recent-event', 'aceReccentEventFunc');
function aceReccentEventFunc() {
global $wpdb;
$today = date('Y-m-d');
$afterDay = date('Y-m-d', strtotime("+2 day")); //2日後迄
$limit = 5; //5件表示
$limit = ($limit) ? " LIMIT {$limit}" : "";
$sql = "SELECT title, date_format(start, '%Y年%m月%d日') start FROM " .$wpdb->prefix . AEC_EVENT_TABLE .
" WHERE (start >= '" . $today . "' AND end <= '" . $afterDay . "') " .
" ORDER BY start " . $limit . "; ";
$out .= "<div class=\"\">\n";
$result = $wpdb->get_results($sql);
if (count($result)) {
$out .= "<dl id=\"\">\n";
foreach ($result as $value) {
$out .= "<dt class=\"\">" .$value->title ."</dt><dd>" .$value->start ."</dd>\n";
}
$out .= "</dl>\n";
} else {
$out .= "イベント予定はありません。\n";
}
$out .= "</div>\n";
return $out;
}
上記プログラムを実装後、
直近イベントを表示したい箇所に以下記述
[ace-recent-event]
やってる事
Ajax Event Calendarでのイベントデータは
テーブル「aec_event」で管理されているようなので、
そのテーブルを対象に今日~2日後までのイベントを検索して最大5件表示。
表示情報はイベントタイトルとイベント日時(開始日)
無ければ「イベント予定はありません。」と表示しています。