当child_of
参数已设置,get_pages()
将使用get_page_children()
要获取子页面,不幸的是sort_column
将不再使用,因此最终列表将不会按指定的自定义排序列排序,因此您需要使用自己的代码来获取具有预期排序列(和顺序)的列表。
下面的示例使用一个递归调用的自定义函数(直到检索到所有子页),然后walk_page_tree()
使用(而不是wp_list_pages()
其问题与get_pages()
) 输出列表中的页面(li
) 布局:
// In the theme functions file:
function my_get_pages( $parent, $orderby = \'menu_order\', $order = \'ASC\' ) {
$pages = get_pages( array(
\'parent\' => $parent,
\'sort_column\' => $orderby,
\'sort_order\' => $order,
) );
$children = array();
foreach ( $pages as $page ) {
$children[] = $page;
// Retrieve grandchildren.
$children2 = my_get_pages( $page->ID, $orderby, $order );
if ( ! empty( $children2 ) ) {
$children = array_merge( $children, $children2 );
}
}
return $children;
}
// In your template:
$parent = 123; // parent post/Page ID
$pages = my_get_pages( $parent );
echo \'<ul>\' .
walk_page_tree( $pages, 0, get_queried_object_id(), array() ) .
\'</ul>\';
这是另一个例子,与上面的例子类似,但这个例子不使用
walk_page_tree()
— 您可以完全控制HTML:
// In the theme functions file:
function my_wp_list_pages( $parent, $orderby = \'menu_order\', $order = \'ASC\' ) {
$pages = get_pages( array(
\'parent\' => $parent,
\'sort_column\' => $orderby,
\'sort_order\' => $order,
) );
if ( empty( $pages ) ) {
return;
}
// Just change the HTML markup based on your liking..
echo \'<ul>\';
foreach ( $pages as $page ) {
printf( \'<li><a href="%s">%s</a></li>\',
esc_url( get_permalink( $page ) ),
get_the_title( $page ) );
// Display grandchildren.
my_wp_list_pages( $page->ID, $orderby, $order );
}
echo \'</ul>\';
}
// In your template:
$parent = 123; // parent post/Page ID
my_wp_list_pages( $parent );