2012/6/8

WordPressでプラグインのテーブルをループに組み込む

最近、All in One Event Calendarと格闘しているのですが、All in One Event Calendarはカスタム投稿タイプとして記事情報を保持すると同時に、記事とは別のテーブルにイベントの開始時間とかもろもろの情報を持ってます。そういう状況で並び替えとかやろうと思うと、WordPressのデフォルトのクエリでは対応できません。というわけでSQL文使って、ゴニョゴニョ。

例えば未来のイベントとか取るのざっくりこんな感じです。

global $wpdb;
  $events = $wpdb->get_results("
  SELECT $wpdb->posts.*
  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' AND {$wpdb->prefix}ai1ec_events.start > $today
  ORDER BY {$wpdb->prefix}ai1ec_events.start ASC
");
  foreach($events as $event) {
  ループ処理
  }
}

本当はもっと条件色々作ってやらないと駄目ですが、基本的にはWordPressの記事テーブルとAll in One Event Calendarのメタテーブル結合した上で、並び替えてあげてる感じですね。

これは大分良いことを学んだ気がする。色々応用が効きそう。

ひとり仕事: フリーランスという働き方
(2012-10-5)
売り上げランキング: 14,705
100円
WordPressデザインレシピ集
狩野 祐東
技術評論社
売り上げランキング: 197,569
WordPress 高速化&スマート運用必携ガイド
こもりまさあき 岡本渉
エムディエヌコーポレーション
売り上げランキング: 435,263

加藤 康祐 / 企画・設計

1980年1月12日生まれ。1998年よりデザイン会社のパートタイムアシスタントとしてWeb制作を経験。2005年に独立、フリーランスとして、企業、個人、NPO、独立行政法人など、様々な領域でのITやデザインによるサポート業務に携わる。2018年、加藤康祐企画設計を開業。これまでの経験を活かし、より広い視野でクライアントの問題解決に取り組み、クライアントと一緒になって新しい価値創出をし、平静な社会の実現を目指す。

加藤康祐企画設計

是非、フォローしてください!
Twitter / Instagram