Languages: 中文(简体) • English • 日本語 (Add your language)
以链接形式显示Pages列表。 主要用于自定义Sidebar 或者 Header, 不过,你也可以使用在其他 Templates 中。
<?php wp_list_pages( $args ); ?>
<?php $args = 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' => ); ?>
缺省值如下:
The default heading of the list ("Pages") of Pages generated by wp_list_pages can be hidden by passing a null or empty value to the title_li parameter. The following example displays no heading text above the list.
<ul> <?php wp_list_pages('title_li='); ?> </ul>
In the following example, only Pages with IDs 9, 5, and 23 are included in the list and the heading text has been changed to the word "Poetry", with a heading style of <h2>:
<ul> <?php wp_list_pages('include=5,9,23&title_li=<h2>' . __('Poetry') . '</h2>' ); ?> </ul>
The following example lists the Pages in the order defined by the Page Order settings for each Page in the Write > Page administrative panel.
<ul> <?php wp_list_pages('sort_column=menu_order'); ?> </ul>
If you wanted to sort the list by Page Order and display the word "Prose" as the list heading (in h2 style) on a Sidebar, you could add the following code to the sidebar.php file:
<ul> <?php wp_list_pages('sort_column=menu_order&title_li=<h2>' . __('Prose') . '</h2>' ); ?> </ul>
Using the following piece of code, the Pages will display without heading and in Page Order:
<ul> <?php wp_list_pages('sort_column=menu_order&title_li='); ?> </ul>
This example displays Pages sorted by (creation) date, and shows the date next to each Page list item.
<ul> <?php wp_list_pages('sort_column=post_date&show_date=created'); ?> </ul>
Use the exclude parameter to hide certain Pages from the list to be generated by wp_list_pages.
<ul> <?php wp_list_pages('exclude=17,38' ); ?> </ul>
To include only certain Pages in the list, for instance, Pages with ID numbers 35, 7, 26 and 13, use the include parameter.
<ul> <?php wp_list_pages('include=7,13,26,35&title_li=<h2>' . __('Pages') . '</h2>' ); ?> </ul>
Versions prior to Wordpress 2.0.1 :
Put this inside the the_post() section of the page.php template of your WordPress theme after the_content(), or put it in a copy of the page.php template that you use for pages that have sub-pages:
<ul> <?php global $id; wp_list_pages("title_li=&child_of=$id&show_date=modified &date_format=$date_format"); ?> </ul>
This example does not work with Wordpress 2.0.1 or newer if placed in a page template because the global $id is not set. Use the following code instead.
Wordpress 2.0.1 or newer :
NOTE: Requires an HTML tag (either <ul> or <ol>) even if there are no subpages. Keep this in mind if you are using css to style the list.
<ul> <?php wp_list_pages('title_li=&child_of='.$post->ID.'&show_date=modified &date_format=$date_format'); ?> </ul>
The following example will generate a list only if there are child (Pages that designate the current page as a Parent) for the current Page:
<?php $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0'); if ($children) { ?> <ul> <?php echo $children; ?> </ul> <?php } ?>
The above examples will only show the children from the parent page, but not when actually on a child page. This code will show the child pages, and only the child pages, when on a parent or on one of the children.
This code will not work if placed after a widget block in the sidebar.
<?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.
<?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; ?>
This is how to get the whole subpages list
<?php if(!$post->post_parent){ // will display the subpages of this top level page $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0"); }else{ // diplays only the subpages of parent level //$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); if($post->ancestors) { // now you can get the the top ID of this page // wp is putting the ids DESC, thats why the top level ID is the last one $ancestors = end($post->ancestors); $children = wp_list_pages("title_li=&child_of=".$ancestors."&echo=0"); // you will always get the whole subpages list } } if ($children) { ?> <ul> <?php echo $children; ?> </ul> <?php } ?>
By default, wp_list_pages() generates a nested, unordered list of WordPress Pages created with the Write > Page admin panel. You can remove the outermost item (li.pagenav) and list (ul) by setting the title_li parameter to an empty string.
All list items (li) generated by wp_list_pages() are marked with the class page_item. When wp_list_pages() is called while displaying a Page, the list item for that Page is given the additional class 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>
They can be styled with CSS selectors:
.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 */
link_before
, link_after
and exclude_tree
parameters.number
and offset
parameters.wp_list_pages() is located in wp-includes/post-template.php
.