WordPressテンプレートタグの使い方

WordPressのテンプレートタグについて勉強した。テンプレートタグの使い方について,簡単にメモを残しておく。

テンプレートタグとは

テンプレートタグとは,WordPressにおいて,ブログのデータを動的に表示したり,ブログをカスタマイズしたりするときに,テンプレートの中で使われるPHPのコードである。

テンプレートタグの種類

テンプレートタグは,大きく以下の2つに分かれる。

  • ループので使うテンプレートタグ
  • ループので使うテンプレートタグ

WordPressにおいて記事や固定ページの取得など特定の操作を行うためにはループを行う必要がある。WordPressはループによって繰り返し,記事や固定ページを走査し,指定した条件に合致するページが見つかった場合はHTMLとして出力する。

テンプレートタグの使い方

上記でテンプレートタグの種類について言及したが,まず初めに「ループの外で使うテンプレートタグ」について説明する。

ループの外で使うテンプレートタグ

「ループの外で使うテンプレートタグ」には,使用頻度の高いものとして,bloginfo()というテンプレートタグがある。これは,WordPressで作成されたサイトの基本的な情報を取得するためのテンプレートタグである。

以下にbloginfo()の使用方法を示す。

ブログのURLを出力する。

<?php bloginfo(‘url’); ?>

ブログの名前を出力する。

<?php bloginfo(‘name’); ?>

ブログのキャッチフレーズを出力する。

<?php bloginfo(‘description’); ?>

ループの中で使うテンプレートタグ

続いて,「ループの中で使うテンプレートタグ」について説明する。
以下に,WordPressにおけるループのサンプルコードを示す。

<?php
    if( have_posts() ){ //投稿があるか調べる
        //投稿がある場合の処理
        while( have_posts() ){ //投稿された記事の数だけ繰り返す
            the_post(); //投稿情報を読み込む
            the_title(); //タイトルを表示する
            the_content(); //本文を表示する
        }
    } else {
        //投稿が無い場合の処理
        echo '記事がありませんでした。';
    }
?>

上記はWordPressにおける最も基本的なループの記述方法である。このサンプルコードではWordPressに投稿された記事をwhile文によって走査し,記事が存在する場合に限り,投稿情報・タイトル・本文を出力する。

以下は,上記のサンプルコードを適切に分割し,扱いやすくしたコードである。可読性は落ちるが,このように記述することで使用面で様々な応用が利くようになる。

<?php if( have_posts() ) : ?>
    <?php while( have_posts() ) : the_posts(); ?>
        <?php the_post(); ?>
        <?php the_title(); ?>
        <?php the_content(); ?>
    <?php endwhile; ?>
<?php else : ?>
    <p>記事がありませんでした。</p>
<?php endif; ?>

これはWordPressに倣った書式である。このように記述することで複数人でテンプレートを編集した場合でも一定以上の可読性を保つことができる。

ループに条件を設定する

ここで,ループに条件を設定する方法を説明する。記事や固定ページを取得する際に,最新の投稿から2番目の記事のみを取得したい,という場合があるとする。そのような場合はループに条件を設定することで出力を操作することができる。
ループに条件を設定するための基本的なテンプレートタグとして,query_posts()がある。ループを行う直前にquery_posts()を記述することで,query_posts()に渡された引数をループの条件として設定することができる。

以下のコードでは,query_posts()を使用し,ループに条件を設定している。

<?php query_posts( array( 'post_type' => 'post', 'posts_per_page' => 1, 'offset' => 1 ) ); ?>
<?php if( have_posts() ) : ?>
    <?php while( have_posts() ) : the_posts(); ?>
        <?php the_post(); ?>
        <?php the_title(); ?>
        <?php the_content(); ?>
    <?php endwhile; ?>
<?php else : ?>
    <p>記事がありませんでした。</p>
<?php endif; ?>

post_typeには,取得したい投稿のタイプを指定し,posts_per_pageには,記事の取得数を指定している。offsetには,最新の記事から何個目の記事を取得するかを指定している。このサンプルコードでは通常の記事のうち,最新のものから2件目のみを取得している。

これ以上のテンプレートタグの詳細情報についてはWordPress Codex 日本語版を参考にしてほしい。

参考
WordPressで投稿記事情報の取得方法
テンプレートタグ/query posts – WordPress Codex 日本語版
WordPressテンプレートタグとは