没有本地的方法可以做到这一点。最简单的方法是:
只需查询所传递页面ID层次结构中的所有页面
然后返回数组中所有页面中的所有父ID($post\\u post对象的父属性
循环浏览页面,并将页面ID与父ID数组中的ID进行比较
任何ID位于父ID数组中的页面,我们只需跳过并排除
任何ID不在父ID数组中的页面,我们将使用它来构建新的数组,这些页面将是最低级别的页面
最简单的方法是构建我们自己的自定义函数,我们可以在任何页面模板中调用该函数。功能如下:
function get_lowest_level_pages( $page_id = \'\' )
{
// Check if we have a page id, if not, return false
if ( !$page_id )
return false;
// Validate the page id
$page_id = filter_var( $page_id, FILTER_VALIDATE_INT );
// Check if this is a page, if not, return false
if ( !is_page() )
return false;
// Get all pages in hierarchy of the current page
$args = [
\'child_of\' => $page_id,
];
$q = get_pages( $args );
// Check if there are pages, if not, return false
if ( !$q )
return false;
// Use wp_list_pluck to get all the post parents from all return pages
$parents = wp_list_pluck( $q, \'post_parent\' );
// Set the $new__page_array variable that will hold grandchildren/lowest level pages
$new__page_array = [];
// Loop through all the pages
foreach ( $q as $page_object ) {
// Simply skip any page if it has child page
if ( in_array( $page_object->ID, $parents ) )
continue;
// Create a new array holding only grandchild pages
$new__page_array[] = $page_object;
}
return $new__page_array;
}
然后,您可以按如下方式使用它:(
请记住传递您需要的父页面id,以便从中获取孙子女)$page_id = get_queried_object_id(); // Returns the current page ID
$q = get_lowest_level_pages( $page_id );
if ( $q ) {
foreach ( $q as $post ) {
setup_postdata( $post );
the_title();
}
wp_reset_postdata();
}