前言
让父级页面像 taxonomy 归档页面(如目录、标签等)输出文章列表那样,输出所有的子页面和页面内容。今天考完六级回来贴吧里有 Wper 提到这个需求,这里不妨就此写一下。没有什么技巧可言,纯粹是利用了 wordpress 提供的原生函数
get_page_children();
函数介绍
其实每次都懒得对函数进行介绍,因为官网都有,而且函数的定义和表现都能在所提示的文件中找到比如说提示你函数位于 include/post.php。写出来太占篇幅了,看着文章挺长好像很牛 X 的样子,其实也就那么点东西。
<?php get_page_children( page_id, pages ) ?>
参数
$page_id (integer) (required) ——Page ID.
Default: None
$pages(array) (required)—— List of pages’ objects.
Default: None
函数返回值
(array)数组
代码
我们根据此次的应用需求来写一下代码,注意这只是测试代码,为了你好,也为了我方便,全部代码还是自己写吧。
1.将下面这段代码写入你新建的页面模板的内容区域,然后用此模板建立父级页面。
// Set up the objects needed
$my_wp_query = new WP_Query();
all_wp_pages = my_wp_query->query(array('post_type' => 'page'));
// Get the page as an Object
// 注:下面这句代码我们此次用不到,因为我们可以直接获得页面 ID,所以注释掉了
//$portfolio = get_page_by_title('父级页面');
// Filter through all pages and find Portfolio's children
portfolio_children = get_page_children(post->ID, $all_wp_pages);
// echo what we get back from WP to the browser
//注:下面这段代码实际中也不必添加,这次主要是为了让大家看清楚返回的数组
echo '
'.print_r($portfolio_children,true).'';foreach(portfolio_children as k=>$v){
//下面这些你自己可以开始定义输出列表的形式
echo '<h1>'.$v->post_title.'</h1>';
echo '<p>'.$v->post_content.'</p>';}
2.建立该页面的子页面,发布。
3.之后返回父页,查看,你就能看到如图的返回效果
返回以及输出
应用
利用这段代码可以让你在一个页面上列出所有子页面及其内容。当然你也可以显示摘要,更可以通过 php 截断显示固定字数。
结语
就像这样,在父级页面上显示子级页面的列表效果就完成了,当然输出代码需要根据主题写一下的,不然就像图片那样也太难看了。
不过有一点需要注意:
你的页面是按照一般的正常步骤发布的,即建立模板,调用,填写题目,填写内容,……发布,这样才有效。
而一些像我这样,独立页面都是自己写出来的(所有内容都是直接写进页面代码中)就不适用了,如果像采用这段代码的话,你还需要将页面的内容在 wordpress 后台编辑器再写一遍(写进数据库)才行。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于