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のメタテーブル結合した上で、並び替えてあげてる感じですね。

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

加藤 康祐 / 企画・設計

プランナー、デザイナー。加藤康祐企画設計代表。Webデザインを入り口に、2005年よりフリーランスとしてのキャリアスタート。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの運営、社会的養護の子どもたちの自立を支援するNPOのサポート。ラグビーと料理、最近イラスト。

加藤康祐企画設計

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

(2012-10-5)
売り上げランキング: 14,705
100円