WordPressの基本はなんていっても「WordPressループ」
これを極めれば「なんでもこい!」なんですが、
意外と苦労するのですよ。
今回のお仕事でも結構苦労しました。
備忘録的にWordPressループをメモしておきます。
複雑な制御については、また改めて…
基本のループ
WordPressを普通のブログとして使うときなどは、
この基本形を使う場合がほとんどです。
この基本形を叩き込んでおきましょう。
1 2 3 4 5 6 7 8 | <?php if ( have_posts() ) : ?> // 記事の有無 <?php while ( have_posts() ) : the_post(); ?> // 投稿記事分繰り返し処理と読み込み <h2><?php the_title(); ?> // タイトル <?php the_content(); ?> // 本文 <?php endwhile; ?> // 繰り返し処理終了 <?php else : ?> // 記事がなかった場合 <p>記事がありませんでした</p> <?php endif; ?> // 記事があるかどうかの判定終了 |
主にブログなどの、カテゴリーやアーカイブのリストなどを表示するときに
使う場合が多いですね。
メインループ
表示結果を強制的に
好きな条件で設定したい場合は
「メインループ」である「query_posts」を使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $args = array( 'category_name' => 'cat-1', 'posts_per_page' => 5 ); ?> // ループの表示条件を書く <?php query_posts( $args ); ?> // ループの条件をセットする ?> <?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> <h2><?php the_title(); ?></h2> <?php the_content(); ?> <?php endwhile; ?> <?php else : ?> <p>記事がありませんでした</p> <?php endif; ?> <?php wp_reset_query(); ?> // ループの条件をリセットする |
配列「array」に条件を複数入れて、
$argsに入れて、query_posts( $args )で実行すれば
お望み通りの結果が表示されます。
ただし、このメインループは
1ページに1回しか使えません。
最後は
wp_reset_query
で必ずリセットを行ってください。
サブループ
表示したい条件が2つ以上ある場合や、
ループを入れ子にしたい場合は
サブループを使いましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $args = array( 'category_name' => 'cat-1', 'posts_per_page' => 5 ); ?> // ループの表示条件を書く <?php $my_query = new WP_Query( $args ); ?> // クエリーを新規作成 <?php if ( $my_query->have_posts() ) : ?> <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?> // global変数の$postを上書き <h2><?php the_title(); ?></h2> <?php the_content(); ?> <?php endwhile; ?> <?php else : ?> <p>記事がありませんでした</p> <?php endif; ?> <?php wp_reset_postdata(); ?> // ループの条件をリセットする |
メインループと若干ちがいますが、基本は同じです。
あと、get_queryでも、同じことができるようです。
次の機会に複雑なループについて説明しますね。
基礎からのWordPress (BASIC LESSON For Web Engineers) 新品価格 |
この本でWordPressループを理解できました。
けっこう助かっています。