WordPressで登録されている固定ページを表示する(親子カテゴリの出力・特定カテゴリの除外可)

  • 27348
    views
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

例えば、サイドバーに一覧メニューを用意したり、サイトマップページを独自に作成 する時になどに便利な、WordPress管理画面で登録した「固定ページ」を取得してブログページに表示する方法のまとめ。

今回の記事のポイントは主に3 点です。

■登録されている固定ページのカテゴリ名、カテゴリページへのリンクを取得し、表示できる
親子のカテゴリ両方の表示できる
特定のカテゴリを除外できる

親子のカテゴリ両方の表示特定のカテゴリの除外に関しては、手持ちのWordPressサイトの内容、または登録カテゴリの内容に応じて若干のカスタマイズが発生しますが、それほど難しい事ではありません。

では早速、以下で具体的なソースコードを交えてご紹介致します。

一般的なソースコード

に掲載されている wp_list_pages(); を利用するだけで、ほぼ完了してしまいます。

場合によって、パラメータを追記するなどのカスタマイズが必要になりますが、概ね、以下のような全体像となります。
<?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 と記述します。
<?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 パラメータを利用します。
<?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順」などの順番で表示順を変更することが可能になるようです。

  • 27348
    views
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

この投稿と関連する記事一覧

この記事に関するコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください