条件分岐タグを使ってパンくずリストを作成するパンくずリストとは?Wikipediaによれば、パンくずリストは、ウェブサイト内におけるウェブページの位置をツリー構造を持ったハイパーリンクの一覧として示すもの。このサイトでも利用しており、ページの上下に表示させるようにしています。パンくずリストを設計するパンくずリストを設計します。最初に、自分のサイト構造を確認しておきます。ここでは、次のような前提条件の元でサイト構築されているとします。前提条件フロントページ(トップページ)は、「最新の投稿」表示を選択する個別投稿ページは、階層的な複数のカテゴリを利用しており、パンくずリストのツリー構造に反映させるページ毎のパンくずリスト出力形式を決める各ページの種類のパンくずリストの出力形式を決めます。今回は、下記表のような形式でパンくずリストを出力することにします。ちなみに青字は、ページの内容に応じて表示タイトルが変わる部分です。(例えば、”親カテゴリ”には、実際のカテゴリ名が入るようにする)条件分岐タグを確認するどのような順番で種類分けしていくか、使用する条件分岐タグを確認します。このコードはサイトのどのページを開いても実行することになるので、アクセス数が多いページがなるべく上に来るようにすると良いと思います。ここでは、下表の上から下に向かって条件分岐させることにします。上から順に、意図通りに分岐されるかどうかを確かめておきます。2つに依存しています。上手く行かない具体例として、フロントページに「固定ページ」を選択した場合を考えます(前提条件の1に反する)。この場合は、フロントページをis_home()でヒットさせることが出来なくなります。テーマをカスタマイズする前項の表で示したパンくずリストを出力するコードを実装します。breadcrumb.php(ファイル名は自由)パンくずリストのHTMLコードを作成するパーツ。今回のメインファイル。functions.phpbreadcrumb.php内で使用する関数を定義する。index.phpパンくずリストを出力する箇所に、breadcrumb.phpのインクルードタグを挿入する。style.cssパンくずリストのスタイルを指定する。breadcrumb.phpを作成するパンくずリストを出力するコードです。wp_reset_query();様々な関数が登場していますよね。パンくずリスト実装には、主に次のような種類のWordPressタグ&PHP関数が必要になります。条件分岐タグページの名前を取得するタグURLを取得するタグ文字列操作に関するPHP関数またパンくずリスト出力プログラムには、似たようなコードが繰り返されることが多いです。そこで、適宜関数や無名関数を使って重複する処理をまとめます。>>無名関数についてはこちらに記事をかきましたそれでは、いくつかのポイントについて説明したいと思います。コード全体の流れパンくずリストの処理に入る前に、クエリをリセットしておきます。wp_reset_query();パンくずリスト作成で頻出する、リンクタグを生成するコードを無名関数として定義しておきます。href="'.$url.'">'.$title.'</a>';};区切り文字を、後々のメンテナンス性を考えて、変数に入れておきます。";パンくずリスト出力文字列を格納する変数$outを定義します。>”から始まっているので、初期値として与えておきます。$del_str;条件分岐タグを使って、ページの種類毎に分岐させて、$outに結果を格納します。{}$outを画面に出力します。$out;クエリを再度リセットしておきます。wp_reset_query();個別投稿ページのパンくずリスト個別投稿ページのパンくずリストが少々複雑なので取り上げます。アウトプットを確認しておきます。記事タイトルこのように、記事に紐づいたカテゴリを階層順に並べて、それぞれのカテゴリページを階層順に表示したいのです。カテゴリを階層順に並べるのは、少々面倒な作業になります。そこで、カテゴリIDを階層順に並べる処理を切り出したものを、functions.phpに関数として定義することにしました。get_categories_tree();関数の戻り値はarray()です。関数の具体的な中身はfunctions.phpの項で紹介します。次にget_categories_tree()を使って得られた、階層順に並んだカテゴリIDの配列を、親カテゴリ→子カテゴリの順にループ処理します。カテゴリページのURLと名前を、それぞれget_category_link()とget_cat_name()のWordPress関数で取得してリンクを生成し、区切り文字を添えて$outに連結させます。$del_str;}最後に、投稿記事へのリンクを$outに連結させます。$del_str;カテゴリページのパンくずリストまず、カテゴリのオブジェクトを入手します。get_queried_object();get_queried_object()は、現在のクエリに関連したオブジェクトを返すWordPress関数です。個別投稿ページなら、投稿オブジェクトが返ってきます。カテゴリページなら、カテゴリオブジェクトが返ってきます。タクソノミーページなら、タクソノミーオブジェクトが返ってきます。この例では、条件分岐タグでカテゴリページで実行しているので、返り値はカテゴリオブジェクトになります。次に、カテゴリを階層順に並べたリンクを連結します。$del_str);第1引数でカテゴリIDを指定します。IDは、先ほど入手したカテゴリオブジェクトのプロパティ”term_id”で参照できます。第2引数はその場でHTML出力するかどうか、第3引数では区切り文字を指定します。functions.phpに定義します。これは、記事に紐づいたカテゴリIDを、階層順に並べ替える処理です。以前に公開しましたので、具体的なコードはこちらの記事(カテゴリIDを階層順に並べた配列をつくる)を参照してください。index.phpを編集するパンくずリストの出力場所に対応したところに、インクルードタグを挿入します。今回はサイト上部に設置します。?></div><?phpget_sidebar();get_footer();style.cssをカスタマイズするパンくずリストのデザインを指定します。1em;}以上で、今回のテーマカスタマイズは完了です。動作を確認する設計通りに動作するかを確認します。これは、個別投稿ページの表示結果です。パンくずリスト出力に対応したソースを確認します。2012年5月Authorプログラマー:TaeWordPressのサイト制作を始めて2年になりました。WordPressテーマの作り。