2014/9/25

WordPressのループでカスタムフィールドでフラグを立てた投稿を除外する

なんかしばらくこの辺右往左往してたのですが、ようやく。

      $args = array(
        'post_type' => array("post"),
        'numberposts' => '-1',
        'meta_query' => array(
          array(
            'key' => 'hidden-flg',
            'value' => 1,
          )
        )
       );
      $postslist = get_posts( $args ); 

みたいにして、まず除外するフラグが立ってる記事を取得します。

      foreach($postslist as $postval){
        $result[] = $postval->ID;
      } 

そして、該当する記事のIDを配列に格納します。

     $paged = get_query_var('paged');
      query_posts( array(
          'post_type' => array('post'),
          'post__not_in' => $result,
          'paged' =>  ( $paged ) ? intval($paged) : 1
          )); 

で回す。post_typeの書き換えでカスタム投稿タイプとかでもできます。地味に引っ掛かってたのが、最初のところの「’numberposts’ => ‘-1’,」で、get_postsする時は全件見に行かないと駄目ですね。ここまで書いてみて、回すごとに除外があったら、$current_postから1引くってやり方もあるのかなあと思ったんだけど、そっちはまだ試してない。

加藤 康祐 / 企画・設計

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

加藤康祐企画設計

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

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