WordPressテーマ〜(4)テンプレートに記事を表示

lecture

テンプレートpage.phpに固定ページの記事を表示させる方法を説明します。
page.phpは固定ページの表示を担当するテンプレートです。
固定記事の内容をpage.php表示できれば、single.phpで投稿ページの内容を表示する方法も同様にすればよいわけです。

スポンサーリンク

WordPressの記事を表示させる方法

WordPressに記事を表示させるにはWordPressループとWordPressタグを利用します。

<?php 
if(have_posts()):
	while(have_posts()):the_post();
		//ここに繰り返し表示のコード
	endwhile;
else:
		//表示する記事がない場合のコード
endif;
?>

この書き方が記事表示の基本的な書き方になります。
ポイントはhave_posts()とthe_post()です。

have_posts()の戻り値はBoolean型でtrueかfalseです。
WordPress クエリにループできる結果があるかどうかをチェックしてtrueかfalseを返します。
これをif文やwhile文の条件判定に使用する仕組みになっています。

the_post()は投稿データをグローバル変数$postにロードしていきます。わかりやすく言うと、ループ文で必須の終了条件まで記事をカウントする役目を担っています。

記事表示のテンプレートタグ
*記事のループ内で使用するのがポイント!

タグ

意味

the_content();

投稿内容を表示させる

the_excerpt();

記事の抜粋110文字

the_title();

記事のタイトル

the_permalink();

記事のURL

the_date();

記事の投稿日時(投稿日が重複してる場合は最初の1記事のみ)

the_time();

記事の投稿日時

the_author();

記事の投稿者名

the_author_posts_link();

記事の投稿者名とリンクを出力

the_category();

記事のカテゴリー名とリンクを出力

the_tags();

記事に付けたタグ

投稿の表示を確認の上、必要なデザインを施します。
特に、the_title()にはhtmlタグが付かないのでh1などを付けます。
固定ページの表示に成功したら投稿ページのsingle.phpも同様に編集します。

少し複雑な作りに対応させる

WordPressループの中身を別ファイルにすることで拡張性があがります。

content.phpの作成

while文の中身だけを別ファイルしてcontent.phpとします。

<article>
          <header class="page-header">
            <h1 class="page-title"><?php the_title(); ?></h1>
          </header>
          <section class="entry-content">
            <?php the_content(); ?>
	</section>
 </article>

content.phpの読み込み方法

<section>
    <?php
   if (have_posts()):
    	while(have_posts()):
        the_post();
      	get_template_part('content'); 
      endwhile;
     endif; ?>
  </section>

content.phpファイルを作成して拡張性をあげるのに便利なphp関数があります。
get template part($slug, $name);
これを使用することで投稿フォーマットごとにファイルを分けるのも簡単になります。

<?php get_template_part( 'content','aside' ); ?>

投稿記事の投稿フォーマットを簡単に取得する方法

<?php get_template_part( 'content', get_post_format() ); ?>

get_post_format() で投稿記事の投稿フォーマットを取得します。
取得したフォーマット値は文字として帰ってくるので引数を指定しない場合には aside, chat ,gallery, link ,image, quote, status, video ,audioのいずれかの投稿フォーマットが第2引数として入ります。
例えば投稿フォーマットが「アサイド」だった場合には、

<?php get_template_part( 'content','aside' ); ?>

を指定していることと同義なので、content-aside.phpが読み込まれます。

タイトルとURLをコピーしました