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テンプレートタグとは