2015/6/25

post__inで指定した配列に含まれる記事を重複して表示させたい場合

WordPressのquery_postsでpost__inって便利なのですよね。特定のIDを配列を指定すると、そのIDの記事だけを表示させられるという。例えばarray(1, 2, 4, 5)みたいなのを指定すると、それらだけを表示してくれます。

今回、僕がやってるのはカスタムフィールドでカスタム投稿タイプに商品コードを事前に登録しておいて、該当するカスタムフィールドの商品コードをWelcartのフィルタで変換して商品情報表示させるみたいな処理だったのですが、post__in、困ったことがありまして。array(1, 2, 4, 2, 5)みたいなのだと、1, 2, 4, 5って表示されてしまうんですね。つまり重複は無視される。これ困って調べたんだけど、なかなか回答がなく。

ああでも待てよと思って、原始的的なのだけどpで対応することにしました。p=1みたいな感じで1記事だけを表示できるので、WordPressループ自体を配列作る時のfor文で囲って、都度query_postsを実行させるイメージ(そんなにカスタムフィールド何個もないし)。これにて解決しました。

post__inを諦めるところまでなんだかとても時間がかかったのですが、WordPressループって普通にSQLだと思うと、まあそうなるわな、という。これからも困る気配があるので備忘録。

ひとり仕事: フリーランスという働き方
(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

関連する記事