【WordPress 連載企画 第4回】よく使うテンプレートタグを把握しよう
こんにちは。fukasawaです。
WordPress連載企画も4回目になりました。今回はテンプレートタグについてです。テンプレートタグとはどのようなものかという事について簡単に触れつつ、WordPressをカスタマイズするときによく使われるテンプレートタグをご紹介していきたいと思います。
テンプレートタグのチートシートとしてもご利用ください。
テンプレートタグとは
WordPressをカスタマイズするとき「ここに投稿記事のタイトルを表示したい」となった場合どのようにすればよいでしょうか。投稿記事のタイトルは記事毎に異なるので、テンプレートファイルに直接書くわけにはいきません。WordPressにはこのような「動的にデータを表示する」というを動作を簡単に実現するために「テンプレートタグ」というものが用意されています。
テンプレートタグはテンプレートファイルに記述して使用します。例えば、投稿記事のタイトルを表示したい場合は「the_title()」というテンプレートタグを個別記事ページのテンプレートファイル(single.php)に記述します。
<?php the_title(); ?>
※the_title()は投稿記事を出力するループの中で使用する必要があります。WordPressのループについてはWordPress連載企画 第3回を参照してください。
テンプレートタグを扱う際のポイント
- PHPの関数なので、PHPの開始タグと終了タグの間(< ?php ~ ?>)に記述します
- パラメータ(引数)を指定することで出力内容や動作を変更することができます
- 渡すパラメータは使用するテンプレートタグによって異なります
下記のサイトでテンプレートタグの一覧が確認できます。各テンプレートにどのようなパラメータを使用できるか、ループの中で使用する必要があるかどうか、どのバージョンのWordPressで使用できるかなどを見ることができます。
テンプレートタグの一覧を見るとわかるように、the_title()以外にも多くのテンプレートタグが存在します。以下ではWordPressをカスタマイズする際によく使用するテンプレートタグをご紹介します。
インクルードタグ
インクルードタグを使用することで、現在のテンプレートから他のテンプレートファイルを読み込むことができます。
※現在のテーマディレクトリに指定のテンプレートファイルが存在しない場合はデフォルトテーマのテンプレートファイルを読み込みます。
ヘッダテンプレートの読み込み
header.phpを読み込む。
<?php get_header(); ?>
フッタテンプレートの読み込み
footer.phpを読み込む。
<?php get_footer(); ?>
サイドバーテンプレートの読み込み
sidebar.phpを読み込む
<?php get_sidebar(); ?>
sidebar-2.phpを読み込む。
<?php get_sidebar('2'); ?>
任意のテンプレートの読み込み
nav.phpを読み込む
<?php get_template_part('nav'); ?>
nav-2.phpを読み込む(nav-2.phpがない場合はnav.phpを読み込む)
<?php get_template_part('nav','2'); ?>
検索フォームテンプレートの読み込み
searchform.phpを読み込む。
searchform.php が無い場合は、ビルトインの検索フォームを読み込む
<?php get_search_form(); ?>
WordPressのサイト情報の出力
WordPressのサイト情報の出力するにはbloginfo()を使用します。bloginfo()に渡すパラメータによって表示内容を変更することができます。
'name' ブログのタイトルを表示
<?php bloginfo('name'); ?>
'description' ブログのキャッチフレーズを表示
<?php bloginfo('description'); ?>
'charset' 設定した文字コードを表示
<meta charset="<?php bloginfo( 'charset' ); ?>"> />
※Version 3.5.0 以降は常に"UTF-8"を返します
'rss2_url' RSS 2.0のURLを表示
<?php bloginfo('rss2_url'); ?>
※bloginfo()に渡すことのできるパラメータの一覧は下記のサイトで確認することができます。
上記で紹介した以外にも、サイトアドレスを表示する'url'や現状のテーマで使われているスタイルシートのURIを表示する'stylesheet_url'というパラメータが存在しますが、これらは非推奨になっているようです。それぞれhome_url()、get_stylesheet_uri()というテンプレートタグを代わりに使用して表示します。
現在のブログのホームURLを取得する
echoを使用して、取得したホームURLを出力
<?php echo home_url(); ?>
現状のテーマで使われているスタイルシートのURIを取得する
echoを使用して、取得したスタイルシートのURI出力
<?php echo get_stylesheet_uri(); ?>
現状のテーマで使われているスタイルシートが存在するディレクトリのURIを取得する
echoを使用して、取得したディレクトリのURIを出力
<?php echo get_stylesheet_directory_uri(); ?>
現状使われているテンプレートディレクトリのURIを取得する
echoを使用して、取得したディレクトリのURIを出力
<?php echo get_template_directory_uri(); ?>
非推奨のテンプレートタグについて
WordPressには非推奨のテンプレートタグが存在します。非推奨のタグは将来的に動かなくなったり削除されたりする可能性があるため、後継のテンプレートタグが作られている場合はそちらを使用した方が良いみたいです。
アーカイブリストの出力
アーカイブリストを表示するにはwp_get_archives()というテンプレートタグを使用します。パラメータでどのような形式のアーカイブリストを表示するか指定することができます。
デフォルト(月別アーカイブのリンク、表示数の制限なし、HTMLの<li>を使用)
<ul>
<?php wp_get_archives(); ?>
</ul>
年別アーカイブ(投稿数を表示)
<ul>
<?php wp_get_archives('type=yearly&show_post_count=1'); ?>
</ul>
<ul>
<?php wp_get_archives(array('type' => 'yearly', 'show_post_count' => 1)); ?>
</ul>
※wp_get_archives()に渡すパラメータはクエリ文字列形式("名前=値"で各パラメータの値を指定し"&"で繋ぐ)、もしくはPHPの配列で指定します。
wp_get_archives()に渡すことができるパラメータの一覧は下記サイトで確認することができます。
カテゴリータグ
カテゴリーを表示するテンプレートタグには以下の様なものがあります。
現在の投稿記事が属しているカテゴリーを表示する。(リンク付き)
<?php the_category(); ?>
リンク付きのカテゴリーリストを表示する
<ul>
<?php wp_list_categories(); ?>
</ul>
デフォルトだとカテゴリーリストの上に「カテゴリー」というタイトルが表示されます。これを消す場合は以下のように書きます。
<ul>
<?php wp_list_categories('title_li='); ?>
</ul>
カテゴリーページでカテゴリー名を表示する
<?php single_cat_title(); ?>
※カテゴリーページ以外では使えません。
タグの出力
タグ情報を表示するテンプレートタグには以下の様なものがあります。
現在の投稿記事に付けられたタグを表示する。(リンク付き)
<?php the_tags(); ?>
タグアーカイブページ(タグに紐づく記事の一覧ページ)でタグ名を表示する
<?php single_tag_title(); ?>
投稿記事の内容出力
投稿記事の内容を出力するテンプレートタグです。ここでご紹介するのテンプレートタグは記事を抽出するWordPressのループの中で使用する必要があります。
WordPressのループというのは複数の投稿記事を一覧表示したりする際に使われるものです。例えば以下のように書くと投稿記事のタイトルが一覧表示されます。
<?php if (have_posts()) : ?>
<?php while (have_posts()) : ?>
<?php the_post(); ?>
<?php the_title(); ?>
<?php endwhile; ?>
<?php endif; ?>
1行目、6行目: 投稿記事が存在することを確認し、存在したら間のコードを実行
2行目、5行目: 投稿記事の件数分だけ間のコードを繰り返す(ループ)
3行目: 1件分の投稿記事を取得
4行目: 1件分の投稿記事タイトルを出力
the_title()の前にthe_post()という記述があるのですが、これは個別の投稿記事を読み込む関数です。下記のテンプレートタグを実行する際は事前にこのthe_post()を実行しておく必要があります。
条件分岐とループについては、第3回でも詳しくご紹介していますので、そちらをご覧ください。
投稿記事のIDを表示
<?php the_ID(); ?>
投稿記事のタイトルを表示
<?php the_title(); ?>
投稿記事の投稿者名を表示
<?php the_author(); ?>
記事の投稿日時を出力
<?php the_time(); ?>
投稿記事の本文を表示
<?php the_content(); ?>
投稿記事本文の抜粋文を表示
<?php the_excerpt(); ?>
※「WP Multibyte Patch」プラグインが有効になっている必要があります。
投稿記事のパーマリンクを表示
<?php <a href="<?php the_permalink(); ?>">投稿記事へのリンク</a> ?>
条件分岐タグ
テンプレートファイルで条件によって表示・非表示を切り替えたい内容がある場合、条件分岐タグを使用します。例えば、個別の投稿記事が表示されている場合のみ内容を表示したい場合は、PHPのif文と組み合わせて以下のように記述します。
<?php if(is_single()): ?>
<p>個別の記事です</p>
<?php endif; ?>
条件分岐タグには以下のようなものがあります。
メインブログページが表示されている場合 | is_home() |
フロントページが表示されている場合 | is_front_page() |
個別の投稿記事のページが表示されている場合 | is_single() |
固定ページが表示されている場合 | is_page() |
タグのアーカイブページが表示されている場合 | is_tag() |
カテゴリーのアーカイブページが表示されている場合 | is_category() |
アーカイブページが表示されている場合 | is_archive() |
投稿者のアーカイブページが表示されている場合 | is_author() |
その他
<body>にテンプレートに対応した class属性をつける
<body <?php body_class(); ?>>
ページタイトルを階層構造に応じた出力をする
「|」が区切り文字としてタイトルの右に表示されます。
<?php wp_title('|', true, 'right'); ?>
ヘッダーを出力する
プラグイン動作時に必要です。
<?php wp_head(); ?>
フッターを出力する
プラグイン動作時に必要です。
<?php wp_footer(); ?>
まとめ
テンプレートタグは便利ですが、沢山あってどれをどのように使ったらよいか迷ってしまいますね。いろいろなテーマを見て実際にどのように使われているのかを参考にするとよいかもしれません。次回は共通パーツをテンプレート化する方法についてです。