我在主题functions.php
文件中创建了一个函数,以便在层次结构中更深层导航时,从父页面级别保留子页面列表。
我的问题是,当我在page.php
主题文件中调用该函数时,我得不到任何回报。
的functions.php:
function get_top_parent_children($the_id,$start = 0,$walk = null){
$current_post = get_post($the_id);
$walk[] = $current_post;
if($current_post->post_parent){
get_top_parent_children($current_post->post_parent,$start,$walk);
} else {
$output = array_reverse($walk);
return get_children($output[$start]->ID);
}
}
page.php文件:
<?php get_header(); ?>
<div id="primary" class="clearfix">
<div id="content">
<?php the_post(); ?>
<?php $children = get_top_parent_children($id,1); ?>
<?php if ( $children ) { ?>
<section id="post-topic">
<h2><?php the_title() ?> Topics</h2>
<ul class="clearfix">
<?php foreach( $children as $child){ ?>
<li>
<a href="<?php echo get_permalink($child->ID) ?>"> <?php echo child->post_title ?> </a>
</li>
<?php }; ?>
</ul>
</section>
<?php }; ?>
<?php get_template_part( 'content', 'page' ); ?>
</div>
<aside>
<?php dynamic_sidebar('Page Sidebar'); ?>
</aside>
</div>
<?php get_footer(); ?>
答案 0 :(得分:4)
我猜你忘记了第二个return
。您有if
有两个代码路径,但只返回最后一个的值。你需要:
if($current_post->post_parent){
return get_top_parent_children(...);
# ^^^^
} else {
return get_children(...);
}
当该条件匹配时,您的函数(递归地)调用自身。但是你仍然需要告诉PHP它应该将值传递给外部调用。