函数不返回“functions.php”中的值

时间:2011-12-11 19:03:43

标签: php wordpress

我在主题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(); ?>

1 个答案:

答案 0 :(得分:4)

我猜你忘记了第二个return。您有if有两个代码路径,但只返回最后一个的值。你需要:

if($current_post->post_parent){
    return get_top_parent_children(...);
   # ^^^^
} else {
    return get_children(...);
}

当该条件匹配时,您的函数(递归地)调用自身。但是你仍然需要告诉PHP它应该将值传递给外部调用。