ボールを蹴りたいシステムエンジニア

ボール蹴りが大好きなシステムエンジニア、ボールを蹴る時間確保の為に時間がある時には勉強する。

【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件表示。
表示情報はイベントタイトルとイベント日時(開始日)
無ければ「イベント予定はありません。」と表示しています。

最後に

実際の表示例が無くて申し訳ありませんが、
これでAjax Event Calendarでの直近イベント表示が実現できました。
コード内のタグは例となりますので、
お好みのデザインに合わせて調整が必要です。

はじめて自作ショートコードを作成しましたが、
PHPは初めてだったので調べながらの実装でした。
何とか望み通りの動作が実現できて良かったです