navigationテンプレートループWordPressループWordPressには様々な機能が用意されていますが、その中でも「投稿」の機能を用いて作成した記事をページに出力することは、もっとも重要な操作であるといえます。トップページで記事の一覧を表示し、記事を選択したらその内容を表示する、といったことはよくあります。この投稿を出力する一連の処理をWordPressループと呼びます。記事をたくさん出力する、1つ出力するにかかわらず、WordPressループを利用します。用例index.phpやcategory.phpなどのアーカイブページで記事一覧を表示するsingle.phpなどの個別ページで記事を表示するCodexループ一般的なWordPressループよく使われるWordPressループは次のような形をしています。)で、記事が存在するかどうかを確認しています。have_posts()はクエリした結果記事を取得できたかどうかを判定する関数です。)で、投稿が存在する限り繰り返し処理を行っていきます。the_post()は記事をグローバル変数$postにセットし、次の記事へと進める処理を行う関数です。記事が複数ある場合でも、the_post()が実行されるたびに記事の数が減っていくため、やがてhave_posts()がfalseになり、while文を抜けるわけですね。起こりませんが、記事が見つからない、というケースも発生し得ます。そのようなときのために、記事が見つからなかった場合の処理も追加しておいた方がユーザフレンドリーでしょう。else文の後に、たとえば「お探しの記事は見つかりませんでした」などと出力します。上で示したコードは概念でしたが、実際には記事のタイトルや内容、投稿日時などを表示することになると思います。そこで、以下に簡単なコードの例を示してみます。<p>お探しの記事は見つかりませんでした。?>HTMLとして機能するよう、タグも入れてみました。the_title()は記事のタイトルを出力する関数、the_content()は記事の本文を出力する関数です。これをアーカイブ系のページで実行すると、例えば次のような出力を得ることができます(index.phpで試すのが簡単です)。「続きを読む」タグが記事に挿入されていれば、the_content()は文章をそこで区切り、記事へのリンクを自動的に挿入してくれます。このタグが挿入されていない場合は、本文すべてが表示されます。この、the_content()やthe_title()はテンプレートタグと呼ばれる、WordPressに処理を実行、出力してもらうための関数で、他にも日付を表示するthe_date()やカテゴリ一覧を表示するthe_category()など、様々な種類が用意されています。このテンプレートタグのおかげで、テーマ作成者はありとあらゆる情報を簡単に出力することができます。個別ページでこの処理を実行すると、該当記事を表示します。この場合は「続きを読む」リンクは表示されず、本文すべてが出力されます。WordPressループの中でしか使えないテンプレートタグテンプレートタグの中には、WordPressループの中でしか使えない(厳密には$postが正しくセットされている状態でしか使えない)ものがあります。これは、関数名の先頭に”the”がついているかどうかで見分けることができます。theが頭についている場合はループ内でしか正しく機能しません。したがって、上述のthe_title()やthe_content()はループ内でしか使えないことになります。上の例ではコロン構文を用いてif文やwhile文を分割し、HTMLとの親和性を良くしていました。HTMLよりもプログラム的な処理がメインの場合は、コロン構文を使わなくても記述することができます。上の例をコロン構文なしで書くと、次のようになります(いくつかタグを省略しています)。'お探しの記事は見つかりませんでした。}?>いちいちタグをechoするのはあまり美しくありませんが、このような書き方ができることを知っておいて損はありません。次のように途中でPHPモードを抜ける書き方もできます。<p>お探しの記事は見つかりませんでした。}?>テンプレートファイルではコロン構文を使用することをおすすめしますが、少し発展的な処理を行う場合は、記述する内容がPHP主体か、あるいはHTML主体かによって使い分けるとよいでしょう。このような書き方は特にプラグインやウィジットを作成する際に役に立ちます。