All-in-One Event Calendarからクエリを取得する関数

だいぶ長い間忘れていたが、一度、All-in-One Event Calendarの情報を必要な分だけ出したかったときがあった。

当時、このプラグインがなんのテーブル作ってるかとかわかんないから、phpMyAdmin内を見て、SQL叩いて、試しにSELECTして、ってのをやってた記憶がある。

 

思えば、MySQLでのSQL直打ちはこのとき初めてだった気がする。

もともとOracleを少しだけやっていたこともあってその中途半端な知識で、なんやかんやしたものの・・・Oracleのような方式での外部結合がなく、四苦八苦。

ISO方式のSQLって書きづらいし見づらいのね・・・。

 

まぁ、とりあえず単純に情報を拾うだけなら、必要なテーブルは以下ということがわかった。

  • 「[プリフィックス]_posts」
  • 「[プリフィックス]_ai1ec_events」

 

こいつを元に以下を作成。

/*****************************************************************/
/* func名:getAi1ecQuerys()                                      */
/* 目的:AllInOneEventCalendarのイベントデータ配列を作成         */
/* 引数:なし                                                    */
/*****************************************************************/
function getAi1ecQuerys(){
	global $wpdb;
	$sql = "
		SELECT
			$wpdb->posts.*,{$wpdb->prefix}ai1ec_events.*
		FROM
			$wpdb->posts
			LEFT JOIN
				{$wpdb->prefix}ai1ec_events ON ($wpdb->posts.ID = {$wpdb->prefix}ai1ec_events.post_id)
		WHERE
		   $wpdb->posts.post_type = 'ai1ec_event'
		AND $wpdb->posts.post_status = 'publish'
		ORDER BY
		{$wpdb->prefix}ai1ec_events.start ASC
	";
	$ret = $wpdb->get_results($sql);
	return $ret;
}

上記はSQLで限定したイベントカレンダーのデータを配列に格納するだけの単純なコード。

 

funcitions側に定義しておいて、

 

テンプレート側では、以上のように呼び出して配列へ格納させる。

<?php $cal_table = getAi1ecQuerys(); ?>

 

2つのテーブルは共にワイルドカードでカラムを全部取得してるから、多分効率は悪い。

まか、そのため全データを把握しているわけではないが、ざっくりと使う分には多分問題はない・・・と思う。

カテゴリ

この記事のコメント

コメントはないです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です