例えば、サイドバーに一覧メニューを用意したり、サイトマップページを独自に作成する時になどに便利な、WordPress管理画面で登録した「固定ページ」を取得してブログページに表示する方法のまとめ。
今回の記事のポイントは主に3点です。
■登録されている固定ページのカテゴリ名、カテゴリページへのリンクを取得し、表示できる
■親子のカテゴリ両方の表示できる
■特定のカテゴリを除外できる
■親子のカテゴリ両方の表示できる
■特定のカテゴリを除外できる
親子のカテゴリ両方の表示、特定のカテゴリの除外に関しては、手持ちのWordPressサイトの内容、または登録カテゴリの内容に応じて若干のカスタマイズが発生しますが、それほど難しい事ではありません。
では早速、以下で具体的なソースコードを交えてご紹介致します。
一般的なソースコード
テンプレートタグ/wp list pagesに掲載されているwp_list_pages();を利用するだけで、ほぼ完了してしまいます。場合によって、パラメータを追記するなどのカスタマイズが必要になりますが、概ね、以下のような全体像となります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $output = wp_list_pages('echo=0&title_li=<h2>Top Level Pages </h2>' ); if (is_page( )) { $page = $post->ID; if ($post->post_parent) { $page = $post->post_parent; } $children=wp_list_pages( 'echo=0&child_of=' . $page . '&title_li=' ); if ($children) { $output = wp_list_pages ('echo=0&child_of=' . $page . '&title_li=<h2>Child Pages</h2>'); } } echo $output; ?> |
固定ページのカテゴリ名、カテゴリページへのリンクを取得して表示
wp_list_pages()を利用することで、以下の説明にもある通り「固定ページをリスト表示」させることが可能になる訳です。WordPress ページへのリンクのリスト(以下ページリストとする)を表示します。
しばしばサイドバーやヘッダーをカスタマイズするのに使われますが、他のテンプレートにも同様に使えるかもしれません。
http://wpdocs.sourceforge.jp/テンプレートタグ/wp_list_pages
ただしデフォルトのままだと、逆に不都合なページまで表示してしまう可能性もあるため、幾分かカスタマイズしてあげる方が良いかと思います。
親子のカテゴリ両方を表示
親子のカテゴリ両方を取得し、表示するためにはdepthパラメータを利用しますが、デフォルトの設定では「すべてのページとサブページを表示します」とのことなので、特別記述しなくても、親子のカテゴリページを表示することが可能です。ただし、親カテゴリ(トップレベル)だけの表示に制限したい場合は depth=1と記述します。
1 2 3 |
<?php $output = wp_list_pages('echo=0&depth=1&title_li=<h2>Top Level Pages </h2>' ); ?> |
デフォルトは depth=0で全てのページを表示するのですが、depth=1はトップレベルのみ表示することを意味しています。
※その他 depth=2、depth=-1 などの表記もあるようなのですが、詳しい使用例は http://wpdocs.sourceforge.jp/テンプレートタグ/wp_list_pages のページを参照してください。
特定のカテゴリを除外
Wordpressのサイトの内容によっては、直接アクセスさせることで不都合があるページや、表には出したくないページなども存在するかと思います。(例えば、お問い合わせ送信完了ぺージなど)
その場合、特定のページに関してのみ除外させる方法として、excludeパラメータを利用します。
1 2 3 |
<?php $output = wp_list_pages('echo=0&exclude=1,3,5,6&title_li=<h2>Top Level Pages </h2>' ); ?> |
上記のように、例えばページID が「1」「3」「5」「6」のものを表示させたくない場合は exclude=1,3,5,6のようにページID をカンマ区切りで記述します。
ページの表示順の並び替え
これは補足ですが、どうしてもページリストの表示順が気になる場合は、http://wpdocs.sourceforge.jp/テンプレートタグ/wp_list_pages ページにsort_columnパラメータが掲載されていますので、必要に応じてカスタマイズすれば大丈夫です。sort_columnパラメータにより「ページタイトル名のアルファベット順」「ページスラッグのアルファベット順」「ページ作成日順」「ページID順」などの順番で表示順を変更することが可能になるようです。
コメント