- サイトデザイン工事中です。ご意見をお寄せください。
- 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
テンプレートタグ/wp list pages
このページ「テンプレートタグ/wp list pages」は一部未翻訳です。和訳や日本語情報を加筆してくださる協力者を求めています。
疑問: パラメータ hierarchical の説明に疑問があります。このページのノートをご覧ください。
目次 |
説明
テンプレートタグ wp_list_pages() は WordPress ページへのリンクのリスト (以下ページリストとする) を表示します。しばしばサイドバー/en やヘッダー/en をカスタマイズするのに使われますが、他のテンプレートにも同様に使えるかもしれません。
使い方
<?php wp_list_pages('引数'); ?>
用例
初期設定での使用
$defaults = array(
'depth' => 0,
'show_date' => '',
'date_format' => get_option('date_format'),
'child_of' => 0,
'exclude' => '',
'title_li' => __('Pages'),
'echo' => 1,
'authors' => '',
'sort_column' => 'menu_order, post_title',
'link_before' => '',
'link_after' => '',
'exclude_tree'=> '' );
デフォルトでは以下のように動作します。
- すべてのページとサブページを表示します (階層制限はありません)
- ページの作成日は表示しません
- すべてのページの子ページに関する制限はありません
- 除外されるページはありません
- リストの見出しが「ページ」となります
- 結果は echo されます (表示されます)
- ページの作成者による制限はありません
- ページのタイトル順にソートされます
- 昇順にソートされます (上述の例には載っていません)
- ページの親子関係をインデントして表示します (上述の例には載っていません)
- すべてのページが含まれます (上述の例には載っていません)
- 特定のメタキーやメタ情報による制限はありません (上述の例には載っていません)
- No Parent/Child trees excluded
wp_list_pages();
リストの見出しを隠す、変える
wp_list_pages が表示するページリストのデフォルトの見出し (「ページ」) は title_li パラメータに空の値を入れると表示しなくすることができます。以下の例はページリストの上に見出しのテキストを表示しません。
<ul>
<?php wp_list_pages('title_li='); ?>
</ul>
下記の例では ID が 9, 5, 23 のページだけを表示し、見出しのテキストを「Poetry」に置き換え、タグを <h2> に変更しています。
<ul>
<?php wp_list_pages('include=5,9,23&title_li=<h2>' . __('Poetry') . '</h2>' ); ?>
</ul>
リストの順序を変える
下の例では ページ > 新規追加 で設定されたページ順序に従ってページリストを表示します。
<ul>
<?php wp_list_pages('sort_column=menu_order'); ?>
</ul>
もしページ順序に従ってページリストを表示し、サイドバーに表示される見出しを「Prose」 (h2 タグスタイルで) と表示したい場合は、下のコードを sidebar.php ファイルに追加してください (サイドバーウィジェットを使用している場合は管理画面から)。
<ul>
<?php wp_list_pages('sort_column=menu_order&title_li=<h2>' . __('Prose') . '</h2>' ); ?>
</ul>
以下のコードを使うと、見出しなしでページ順序に従い表示します。
<ul>
<?php wp_list_pages('sort_column=menu_order&title_li='); ?>
</ul>
作成日順に並び替える
この例はページの作成日でソートし、その日付をページごとに表示します。
<ul>
<?php wp_list_pages('sort_column=post_date&show_date=created'); ?>
</ul>
特定のページを除外する
exclude パラメータを使うと、wp_list_pages が表示するページリストから特定のページを除外することができます。
<ul>
<?php wp_list_pages('exclude=17,38' ); ?>
</ul>
特定のページだけを含める
特定のページだけをリストに含めたい場合 (例えば ID が 35, 7 ,26, 13 のページ) は、include パラメータを使用します。
<ul>
<?php wp_list_pages('include=7,13,26,35&title_li=<h2>' . __('Pages') . '</h2>' ); ?>
</ul>
サブページの表示 (WordPress 2.0.1 以前)
使用中の WordPress のテーマの page.php テンプレートの the_post() セクション内の the_content() の後にこれを追加するか、サブページがあるページの page.php テンプレートのコピーに追加します。
<ul>
<?php
global $id;
wp_list_pages("title_li=&child_of=$id&show_date=modified
&date_format=$date_format"); ?>
</ul>
注意: この例は WordPress 2.0.1 以降ではページテンプレートに追加しても $id というグローバル変数がセットされていないので機能しません。替わりに以下のコードを使用してください。
サブページの表示 (WordPress 2.0.1 以降)
注意: サブページがない場合でも、HTML タグ (<ul> や <ol>) が表示されます。スタイルシートを使ってリストのデザインをしている場合はこのことを覚えておいてください。
<ul>
<?php
wp_list_pages('title_li=&child_of='.$post->ID.'&show_date=modified
&date_format=$date_format'); ?>
</ul>
以下の例は表示中のページに子ページ (表示中のページを親ページと設定しているページ) が存在する場合のみリストを表示します。
<?php
$children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0');
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
サブページの中でもサブページのリストを表示する
上述の例では親ページでは子ページを表示しますが、子ページでは表示しません。次のコードは親ページでも子ページでも、子ページのリストを表示します。
(注) このコードは、サイドバーのウィジェットブロックの後ろに置くと動作しません。
<?php
if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
As an alternative, this code in a sidebar.php, displays only top level Pages, but when viewing a Page that has children (or is a child) it displays only children of that parent.
- When visiting main page, all top level pages are listed in the sidebar.
- When visiting a top level page with no children, all top level pages are listed.
- When visiting a top level page with children, just the children pages, and descendant pages, are listed.
- When visiting a child page, just the children, and descendant pages, of that parent, are listed.
<?php
$output = wp_list_pages('echo=0&depth=1&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 ページを入れ子で順不同のリストに表示します。あなたは最外部のアイテム (li.pagenav) をなくすことも、title_li パラメータを空の値にすることもできます。
wp_list_pages() が表示するすべてのリストアイテム (li) には page_item というクラスが付けられています。wp_list_pages() をページ表示時に呼び出すと、そのページを指すリストアイテムには current_page_item というクラスが追加されます。
<li class="pagenav">
Pages [title_li]
<ul>
<!-- Output starts here if 'title_li' parameter is empty -->
<li class="page-item-2 page_item current_page_ancestor current_page_parent">
[parent of the current Page]
<ul>
<li class="page-item-21 page_item current_page_item">
[the current Page]
</li>
</ul>
</li>
<li class="page-item-3 page_item">
[another Page]
</li>
</ul>
</li>
これらは CSS セレクタでデザインできます。
.pagenav { … } /* the outermost list item; contains whole list */
.page-item-2 { … } /* item for Page ID 2 */
.page_item { … } /* any Page item */
.current_page_item { … } /* the current Page */
.current_page_parent { … } /* parent of the current Page */
.current_page_ancestor { … } /* any ancestor of the current Page */
パラメータ
- sort_column
- (文字列) ページのリストをいろいろな順序で並び替えます。デフォルトでは'ページタイトルのアルファベット順に並び替えます
- 'post_title' - (タイトルを) アルファベット順に並び替えます - デフォルト
- 'menu_order' - ページ順序によって並び替えます。要注意: ページ順序とページ ID に注意してください。ページ ID はそれぞれの記事やページにつけられた唯一の番号です。ページ順序は ページ > 新規追加画面でユーザーがつける番号のことです。上述の例をお読みください
- 'post_date' - 作成日順に並び替えます
- 'post_modified' - 最終更新日順に並び替えます
- 'ID' - ページ ID 順に並び替えます
- 'post_author' - ページ作成者の ID 順に並び替えます
- 'post_name' - ページスラッグ (パーマリンク) のアルファベット順に並び替えます
- 注意: sort_column パラメータは WordPress のデータベースの wp_post テーブル内のあらゆるフィールドの記述子を使ってページのリストを並び替えることができます。
- sort_order
- (文字列) ページリストの並び順を変更します (昇順または降順)。デフォルトは昇順です
- 'asc' - 低いほうから高いほうへ並び替えます
- 'desc' - 高いほうから低いほうへ並び替えます
- exclude
- (文字列) リストから除外したいページの ID をコンマで区切ったリストで定義します (例: 'exclude=3,7,31')。デフォルト値はありません。特定のページを除外する例をお読みください。
- exclude_tree
- (文字列) 除外したい親ページID をカンマ区切りで指定します。指定した親ページとその子ページ全てを除外するには、このパラメータを使います。'exclude_tree=5' とすれば、ページID 5 と、ページID 5 を親とする子ページ全て(子も孫も全て)が除外されます。
- このパラメータは バージョン 2.7 以上で使えます。
- include
- (文字列) wp_list_pages で生成されるリストに特定のページだけを含めます。exclude と同様に、このパラメータもコンマで ID を区切ったリストで定義します。特定のページだけを含める例をお読みください
- depth
- (整数) このパラメータは wp_list_pages で生成されるリストに含めるページの階層レベルを設定します。デフォルト値は 0 です (すべてのページとサブページを表示します)。
- 0 - ページとサブページを親子関係を維持して (インデントして) 表示します (デフォルト)
- -1 - ページとサブページを同列に (インデントなし) 表示します
- 1 - トップレベルのページのみ表示します
- 2 - 2 (またはそれ以上) の深さ (レベル) のページを表示します
- child_of
- (整数) ページ ID を値としてそのページのサブページのみを表示します。デフォルト値は 0 です (すべてのページを表示)。
- show_date
- (文字列) それぞれのページの作成日または最終更新日を表示します。デフォルト値は空です (日付を表示しません)。
- '' - 日付を表示しません (デフォルト)
- 'modified' - 最終更新日を表示します
- 'xxx' - modified 以外の値は作成日 (post_date) を表示します。上述の例をお読みください
- date_format
- (文字列) show_date パラメータで使うページの日付の書式を設定します (例: "l, F j, Y")。このパラメータは WordPress の管理画面で設定した日付フォーマットをデフォルトとします。日付と時刻の書式と PHPマニュアルの日時の書式化のページをお読みください
- title_li
- (文字列) ページリストの見出しのテキストとスタイルを設定します。デフォルトは「__('Pages')」です。ブログ上では「ページ」と表示されます (__('') はローカライゼーションのためのものです)。空の値のとき ('') は見出しを表示しません。また、リストは <ul>, </ul> タグで包まれていません。見出しの例をお読みください
- echo
- (論理値) ページリストを表示するか、PHP で使うために HTML テキストとして返すかを設定します。デフォルト値は 1 (リストを表示) です。
- 1 (true) - デフォルト
- 0 (false)
- hierarchical
- (論理値) サブページを親ページの下にインデントして表示するかインラインで表示するかを設定します。デフォルトは true です (サブページを親ページの下にインデントして表示)
- 1 (true) - デフォルト
- 0 (false)
- meta_key
- (文字列) ここに記述したカスタムフィールドキーを持つページだけを表示します (meta_value フィールドと同時に使います)。
- meta_value
- (文字列) ここに記述したカスタムフィールド値を持つページだけを表示します (meta_key フィールドと同時に使います)。
- link_before
- (文字列) <a> タグリンクの前に表示されるテキストまたは HTML (バージョン 2.7.0 以降)
- link_after
- (文字列): <a> タグリンクの後に表示されるテキストまたは HTML (バージョン 2.7.0 以降)
- authors
- (文字列) 指定した著者 ID (複数の場合はカンマで区切る) のページのみを表示します。指定しない場合は全著者が対象になります。
- number
- (文字列) 表示するページの数を指定します。SQL LIMIT 値を指定します。デフォルト値は no LIMIT です。バージョン 2.8 で追加されました。
- offset
- (文字列) ページの取得開始位置を飛ばす数です。デフォルト値は no OFFSETです。バージョン 2.8 で追加されました。
Notes
- See Also: wp_page_menu()
変更履歴
- 2.8 : パラメータ 'number', 'offset' が追加されました。
- 2.7 : パラメータ 'link_before', 'link_after', 'exclude_tree' が追加されました。
- 1.5 : 新規テンプレートタグ
関連
wp_title, get_posts, query_posts, the_search_query
最新英語版: WordPress Codex » Template Tags/wp_list_pages (最新版との差分)