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日生まれ。フリーランス歴15年。プランナー、デザイナー。加藤康祐企画設計代表。学生時代にデザイン会社でWebデザインを経験。2005年よりフリーランスとしてキャリアスタート。これまでに個人から上場企業まで、100以上のクライアントとのプロジェクトを経験。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの編集・運営、社会的養護の子どもたちの自立を支援するNPOのサポート等。趣味はラグビーと料理。Keep the head up, Bind tight & Stay low.

加藤康祐企画設計

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