テンプレートタグとは何ですか?
テンプレートタグは、WordPressにデータベースから何かを取得するよう指示するコードの一部です。これは3つのコンポーネントに分かれています:
- PHPコードタグ
- WordPress関数
- オプションのパラメータ
テンプレートタグを使用して、別のテーマファイルやデータベースからの情報を呼び出すことができます。
例えば、テンプレートタグget_header()
は、WordPressにheader.php
ファイルを取得して現在のテーマファイルに含めるよう指示します。同様に、get_footer()
はWordPressにfooter.phpファイルを取得するよう指示します。
他にもさまざまな種類のテンプレートタグがあります:
the_title()
– WordPressにページまたは投稿のタイトルをデータベースから取得して含めるよう指示します。bloginfo( 'name' )
– WordPressにブログのタイトルをデータベースから取得してテンプレートファイルに含めるよう指示します。
最後の例をよく見ると、括弧の間にパラメータがあることがわかります。パラメータは2つのことを可能にします:
- 1. 特定の情報を要求すること
- 2. 情報を特定の方法でフォーマットすること。
パラメータについては以下で詳しく説明します。データの表示方法についてWordPressに特定の指示を送信できることを知っておくと便利です。
テンプレートタグを使用する理由
特定のコンテンツのコードをカプセル化することで、テンプレートタグはテーマファイルにさまざまなテンプレートの部分を簡単に含めることができ、テーマの維持も容易にします。
1つのheader.php
ファイルを作成し、single.php
、page.php
、front-page.php
などのすべてのテーマテンプレートがその1つのテーマファイルをget_header()
を使用して参照する方が、各テーマファイルにコードをコピー&ペーストするよりもはるかに簡単です。また、メンテナンスも容易になります。header.php
ファイルに変更を加えると、その変更は自動的に他のすべてのテーマファイルに反映されます。
テンプレートタグを使用するもう1つの理由は、動的データ、つまりデータベースからのデータを表示するためです。ヘッダーにtitle
タグを手動で含めることができますが、次のように:
<title>My Personal Website</title>
しかし、これを行うと、ウェブサイトのタイトルを変更したいときにテーマを手動で編集する必要があります。代わりに、bloginfo( 'name' )
テンプレートタグを含める方が簡単で、これによりデータベースからサイトタイトルを自動的に取得できます。これで、テーマテンプレートをハードコーディングするのではなく、WordPressでサイトのタイトルを変更できるようになります。
テンプレートタグの使用方法
テンプレートタグの使用は非常に簡単です。任意のテンプレートファイルで、テンプレートタグを呼び出すために1行のPHPコードを印刷するだけでテンプレートタグを使用できます。header.phpファイルを印刷するのは次のように簡単です:
get_header();
パラメータ
一部のテンプレートタグでは、パラメータを渡すことができます。パラメータは、データベースから取得する内容を決定する追加の情報です。
例えば、bloginfo()
テンプレートタグでは、WordPressに取得したい特定の情報を指示するパラメータを渡すことができます。ブログ名を印刷するには、「name」というパラメータを渡すだけです:
bloginfo( 'name' );
ブログが実行しているWordPressのバージョンを印刷するには、「version」というパラメータを渡します:
bloginfo( 'version' );
各テンプレートタグによってパラメータは異なります。パラメータのリストとその機能は、コードリファレンスにある特定のテンプレートタグページで確認できます。
ループ内でのテンプレートタグの使用
多くのテンプレートタグは、WordPressループ内で機能します。これは、ループ内の指示に基づいてユーザーが見るページを生成するPHPの「ループ」の一部としてテンプレートファイルに含まれることを意味します。
WordPressループは次のように始まります:
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
ループ内で機能するテンプレートタグは、以下のループの終了セクションの前の中間エリアに配置する必要があります:
endwhile;
else :
_e( 'Sorry, no posts matched your criteria.', 'devhub' );
endif;
ループ内に含める必要があるテンプレートタグのいくつかは
一部の関数がループを必要とする主な理由は、グローバル投稿オブジェクトが設定される必要があるからです。
使用したいテンプレートタグがループ内にある必要がない場合
それなら、サイドバー、ヘッダー、またはフッターテンプレートファイルなど、任意のファイルに配置できます。
これらは通常、グローバル投稿オブジェクトを必要としない関数です。