乐闻世界logo
搜索文章和话题

How to get all child pages of a parent page in wordpress?

4 个月前提问
4 个月前修改
浏览次数16

1个答案

1

在WordPress中,获取父页面的所有子页面可以通过多种方法实现,但最常用的是使用WordPress内置的WP_Query类或get_pages函数。下面我将详细介绍如何使用这些方法。

方法1: 使用WP_Query

WP_Query是WordPress中非常强大的一个类,可以用来查询几乎任何类型的帖子数据,包括页面和子页面。以下是如何使用WP_Query来获取特定父页面下的所有子页面的示例代码:

php
<?php // 假设$parent_page_id是父页面的ID $parent_page_id = 123; $args = array( 'post_type' => 'page', // 设置为页面类型 'posts_per_page' => -1, // 获取所有子页面 'post_parent' => $parent_page_id, // 设置父页面ID 'order' => 'ASC', // 按发布时间升序排序 'orderby' => 'menu_order' // 按菜单顺序排序 ); $parent_query = new WP_Query($args); if ($parent_query->have_posts()) : while ($parent_query->have_posts()) : $parent_query->the_post(); // 输出子页面的标题或其他信息 the_title(); endwhile; wp_reset_postdata(); endif; ?>

方法2: 使用get_pages函数

get_pages是一个专门用于获取页面的函数,相比WP_Query来说,使用起来更为简单直接,适用于只需要页面数据时的情况。下面是使用get_pages来获取父页面的所有子页面的方法:

php
<?php // 假设$parent_page_id是父页面的ID $parent_page_id = 123; $args = array( 'child_of' => $parent_page_id, // 设置父页面ID 'sort_column' => 'menu_order', // 按菜单顺序排序 'sort_order' => 'asc' // 升序排列 ); $pages = get_pages($args); foreach ($pages as $page) { // 输出子页面的标题或其他信息 echo $page->post_title; } ?>

总结

这两种方法各有优缺点:WP_Query更强大和灵活,可以自定义更多的查询参数,而get_pages则更简单、专注于页面。在选择适合的方法时,可以根据具体的需求和场景来决定使用哪一个。例如,如果你需要更复杂的查询条件,如自定义字段过滤等,则WP_Query可能是更好的选择;如果只需简单地拉取子页面列表,get_pages则能很好地完成任务。

2024年7月21日 20:59 回复

你的答案