- 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
テンプレートタグ入門
あなたのWordPressテーマに入っているheader.phpテンプレートファイルの中に突入してみると、自分のWordPressサイトを見た時に私のブログです(なんでもいいのですが)と表示しているはずのところが、テンプレートファイルの中では、私のブログですとなっていないことに気づくでしょう。実際、そこには妙な矢印とカッコ、ほとんど意味をなさない単語があるばかりです。
これこそがテンプレートタグの一例です。
一歩踏み出して、それがなんであり、どのように動くのかを学びましょう。
目次
テンプレートタグとはなにか
テンプレートタグはWordPressに何かを実行あるいは取得するように指示するものです。header.phpの場合、WordPressのサイト名を示すテンプレートタグは、こんな風になっています:
<h1><?php bloginfo('name'); ?></h1>
テンプレートタグはH1見出しタグに囲まれた<?php bloginfo(); ?>です。bloginfo()タグは管理パネルのあなたのユーザープロフィールと設定 > 一般設定から情報を取得します。この例では、タグの中のクオーテーション・マークでくくられたnameという単語が、タグにブログのサイト名を取得しなさいと指示しています。これはパラメータと呼ばれます。
テンプレートタグのパラメータ
<?php bloginfo(); ?>テンプレートタグにはnameパラメータの他にも表示できる情報があります。これらパラメータを見てみましょう。bloginfo()のCodexページでより詳しい情報を得ることもできます。
- name
<?php bloginfo('name'); ?>
- すでに述べたように、デフォルトでは設定 > 一般設定サブパネルで設定されているサイト名を表示します。
- description
<?php bloginfo('description'); ?>
- これはブログのタグラインと呼ばれ、普通は私のブログは....について語っていますという類の要約です。これは管理者によって設定 > 一般設定サブパネルで設定されています。
- url
<?php bloginfo('url'); ?>
- WordPressサイトにURLやサイトのアドレスを表示したければ、urlを使えば表示できます。これも設定 > 一般設定サブパネルで設定されています。
- admin_email
<?php bloginfo('admin_email'); ?>
- 管理者のEメールアドレスを表示したい場合、それをテンプレートファイルに入力する必要はありません。そうしてしまうと、よくできたソフトウェアでアドレスを回収して、スパムのために使用するスパマー/en の攻撃にさらされることになります。bloginfo('admin_email')を使うことで、Eメールアドレスは閲覧者にだけ表示されますが、攻撃者には見つかりません。ふう、安心しましたか? 管理者のEメールアドレスは設定 > 一般設定サブパネルで設定されています。
- version
<?php bloginfo('version'); ?>
- どのバージョンのWordPressが使用されているか、表示しておきたいことがあるかもしれません。WordPressに同梱されているテーマはこの上表をフッターテンプレートに含んでいます。これは単にあなたのブログが使用しているWordPressのバージョンを表示するだけです。
WordPressのバージョンを表示するには、このようなテンプレートタグになります:
<p>Powered by WordPress version <?php bloginfo('version'); ?></p>
versionパラメータによって生成されるのはバージョン番号だけであり、"Powered by WordPress version"ではないということに注意してください。タグの前に書かれているものは、そのままWebページに表示されます。
テンプレートタグのパラメータについてもっと学びたければ、テンプレートタグ解剖とタグパラメータの渡し方を見てください。
どうやってテンプレートタグを使うのか?
Codexのテンプレートタグメニューにある様々なテンプレートタグを見てみると、bloginfo()テンプレートタグのようにとてもシンプルなものがある一方で、使い方が難しそうなものも沢山あることに気づくでしょう。テンプレートタグ・コードの言語を理解するために、幾つかの実例を見てみましょう。
bloginfo()テンプレートタグで見たように、タグの出力を変更するのはたった一つの単語だけでした。この単語はパラメータと呼ばれ、これがテンプレートタグに対して何かを実行あるいは取得するよう指示するのです。この場合〔訳注:パラメータにnameを指定した場合〕では、サイトの名前を表示するために名前を取得せよという指示になります。
テンプレートタグthe_title()は投稿のタイトルを表示するもので、通常は投稿のトップに使われます。このタグはデフォルトのままで投稿のタイトルを取得して、表示します。しかし、パラメータに実行の指示を含めることもできるため、投稿タイトルの見映えを変更することができます。
デフォルトだと、タグはこのようになります:
<?php the_title(); ?>
出力結果はこうなります:
矢印や中黒を示す画像や文字実体/en のよう、なにかタイトルを目立たせる記号のようなものが欲しいですよね。タイトルの前に日本円を示す円マーク¥を表示してみましょう。
the_title()タグの説明を注意深く見ていれば、パラメータがこうなることに気づくはずです:
<?php the_title('before', 'after', display); ?>
円マークをタイトルの前(before)に半角スペースつきで欲しいのですから、このようにパラメータを付け加えましょう:
<?php the_title('¥ '); ?>
こうすると、ページが生成されたときにこうなります:
それでは、もう少し先に進んで、投稿タイトルの後になにかを付け加えて見ましょう。読者には読んでもらいたいわけですから、読む気にさせるために小さな矢印( » )をつけてみましょう。
<?php the_title('¥ ', ' »'); ?>
表示用にページが出力されるときに、タイトルと矢印が分かれるように半角スペースを入れていることに注意してください。
様々な方法でタイトル見出しをスタイリングすることもできます。以下は見出しタグを用いた別の例です。
<h2><?php the_title('Post Title: '); ?></h2>
これで投稿タイトルは完全にH2見出し/en の中に納まっていて、投稿タイトルの最初には"Post Title"というフレーズも付け加わっています。
注意: すべてのテンプレートタグがbeforeとafterをパラメータに取るわけではなく、the_titleが取るのです。使おうとしている特定のタグがどんなパラメータを持つのかをCodexページで確認しましょう。
ブーリアン・テンプレートタグ
上に挙げたテンプレートの例では、クオーテーションマークとカンマで区切られたシンプルなパラメータを使用しました。それでは、複数のパラメータを一度に取ることができるブーリアン〔訳注:真偽値〕という数学的な技術を使う、ブーリアンテンプレートタグについて見てみましょう。よくあるブーリアン表現では、パラメータをつなぐために"and (&)"記法を用います。
テンプレートタグwp_list_cats()はWordPressのサイドバーやメニューテンプレートファイルによく見られます。これはサイトのCategoriesリストを表示するものです。
<?php wp_list_cats(); ?>
デフォルトでは、テンプレートタグのパラメータは以下のようになっています:
- all - すべてのカテゴリーを表示
- sort_column - カテゴリーIDで並び替え
- sort_order - 昇順で並び替え
- list - カテゴリーを番号なしリスト(<ul><li>)で表示
- optioncount - それぞれのカテゴリー内の投稿数を表示しない
- hide_empty - 2つのパラメータのどちらかに基づき、投稿のないカテゴリーを非表示
- use_desc_for_title - リンクのタイトルとして、カテゴリー概要を使用
- children - すべてのカテゴリーに子階層(サブカテゴリー)を表示
このカテゴリーリストは以下のようになるでしょう:
- Stories About My Life
- Stories About My Family
- Things I Want To Share
- About WordPress
- About Writing
- About Story Telling
- Facts and Fiction About Life
インデントのついたリスト"About WordPress"、"About Writing"、"About Story Telling"は親カテゴリー"Things I Want To Share"の子供、つまりサブカテゴリーです。デフォルトだと、これらのタイトルは、カテゴリータイトルそのものではなく、管理パネル > 管理 > カテゴリー/enで設定したカテゴリーの概要です。
カテゴリーの概要の代わりに、カテゴリー名そのものをタイトルに表示したかったら、テンプレートタグを以下のように変更してください:
<?php wp_list_cats('use_desc_for_title=0'); ?>
ゼロはパラメータをfalseに設定し、タイトルに概要を使わなくなります。こうして、カテゴリーのタイトルは以下のようになります:
- My Life Stories
- My Family
- Sharing
- WordPress
- Writing
- Story Telling
- Facts and Fiction
Sharingのサブカテゴリーをリスト内に表示したくないとしましょう。概要ではなくタイトルを表示するパラメータに、ブーリアンandを意味するアンパサンド( & )を用い、子カテゴリーを表示しないようにするパラメータを付け加えましょう。
<?php wp_list_cats('use_desc_for_title=0&children=0'); ?>
アンパサンドの前後にはスペースがないことに注意してください。すべてのパラメータを同時に渡すためには、パラメータ全体をクオーテーションマークでくくり、中には空白やクオーテーションマークがあってはいけません。これで、カテゴリータイトルは以下のようになります:
- My Life Stories
- My Family
- Sharing
- Facts and Fiction
その他の例として、カテゴリーリンクをカテゴリータイトルで表示し、カテゴリー名をアルファベット順に並び替え、各カテゴリー内の投稿数を表示し、カテゴリーID3(Sharing)の子(サブカテゴリー)だけを表示したいとしましょう。テンプレートタグは以下のようになります:
<?php wp_list_cats('sort_column=name&sort_order=asc&optioncount=1&use_desc_for_title=0&child_of=3'); ?>
- Story Telling (21)
- WordPress (23)
- Writing (10)
テンプレートタグとループ
WordPressテンプレートタグの多くは、WordPressループの中で動きます。つまり、ループ内の情報に従って閲覧者にページを表示するphpループのテンプレートファイル内に含まれていなければならないということです。
WordPressループは以下のように始まります:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
ループ内収まっていなければならないテンプレートタグは、、以下のループセクションよりも前になくてはなりません:
<?php endwhile; else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?>
ループ内になくてはならないテンプレートタグには、the_content()、the_excerpt()、next_post()、previous_post()などがあります。wp_list_cats()やwp_list_pages()のように、ループ内になくてもよいテンプレートタグを使いたければ、例えば、サイドバー、ヘッダー、フッターなどのテンプレートファイルのどこでも好きなところに使用できます。
テンプレートタグについてもっと知る
これはWordPressがWebサイトを生成するときに利用する様々なテンプレートタグについてのはじめの一歩です。次のリソースを参照することで、WordPressが使うテンプレートタグについて詳しく学ぶことができます。
テンプレートタグをスタイリング
- Styling Lists with CSS /en
- Lessons: Next and Previous Links /en
- Lessons: Separating Categories /en
- Lessons: Styling Page-Links /en
- Lessons: Good Navigation Links /en
- Formatting Date and Time
最新英語版: WordPress Codex » Stepping Into Template Tags (最新版との差分)