функция не возвращает значение в "functions.php" - PullRequest
2 голосов
/ 11 декабря 2011

Я создал функцию в моем файле тем 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 Ответ

4 голосов
/ 11 декабря 2011

Полагаю, вы забыли второе return.У вас есть if с двумя путями кода, но вы возвращаете значение только в последнем.Вам нужно:

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

Ваша функция (рекурсивно) вызывает себя, когда это условие соответствует.Но вам все равно нужно указать PHP, что он должен передавать значение внешнему вызову.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...