WordPressのテンプレートを作っていると、ループの構造で混乱してくる人がいます。
ですので、不要なHTMLを除いた、単純な構造を書いておこうと思います。
解説はコメントに書いています。
<?php // ヘッダーやサイドバーを表示する(今回は割愛) // get_header(); // get_sidebar(); // ----------------------------------------------------------------------------- // メインループ // (たとえ記事が一つだけ出るテンプレートでもループを作ることを推奨している) // ----------------------------------------------------------------------------- if ( have_posts() ) : while ( have_posts() ) : the_post(); // ループを次に進める。 // そして、グローバル変数の$postに投稿をセットする。 // 今後のループ内で使うテンプレート関数は、この$postを利用する。 the_title(); // $postから投稿のタイトルを表示する。 the_content(); // $postから投稿の本文を表示する。 endwhile; else : // 通常index.phpか404テンプレートが設定されていれば、ここには来ないはず。 echo "投稿が見つかりません。"; endif; // ----------------------------------------------------------------------------- // サブループ // ----------------------------------------------------------------------------- // 条件を配列に格納 $args = array( 'category_name' => 'news', 'posts_per_page' => 3 ); // 上記の配列に基づいて、WP_Queryオブジェクトを作成 $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); // サブループを次に進める。 // そして、グローバル変数の$postに投稿をセットする。 the_time('Y.m.j'); // $postから投稿の公開日時をフォーマットして表示する。 the_permalink(); // $postから投稿のパーマリンクのURLを表示する。 the_title(); // $postから投稿のタイトルを表示する。 endwhile; wp_reset_postdata(); // サブループを終了し、グローバル変数の$postを // メインループ用に戻す。 endif; // フッターを表示する(今回は割愛) // get_footer();
WordPressの「the
」が付くテンプレート関数は、$post
を元にして、内容を表示したり、取得したりします。