使用QUERY_POSTS POST_PARENT或CHILD_OF时需要页面后代

时间:2012-04-13 作者:mikedev

我正在尝试使用query\\u posts列出页面ID的所有子代。使用post\\u parent只列出第一级子代。

这张Trac票据似乎解决了这个问题:http://core.trac.wordpress.org/ticket/5742, 但我不明白——post\\u parent只列出第一级的子级。

<?php
    query_posts( array(
    \'post_parent\' => 58, // Only shows posts that are direct children of the Machinery page. I want all descendants.
    //\'child_of\' => 58, // When used, shows posts filterd by taxonomy and term, but not filtered by child of ID 58. Acutally omits direct child of 58 but shows grandchild.
    \'post_status\' => \'any\',
    \'post_type\' => \'any\',
    \'taxonomy\' => \'industries\',
    \'term\' => \'dairy\'
    )); 
?>
<?php if ( have_posts() ) : ?>
    <h4>Dairy Machinery</h4>
    <ul>
        <?php while (have_posts()) : the_post(); ?>    
            <li>
                <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
            </li>
        <?php endwhile; ?>
    </ul>
<?php endif; wp_reset_query(); ?>
如何让query\\u帖子列出页面ID的所有子体?

1 个回复
SO网友:developdaly

如果你没有have 使用query_posts() 那么这是一种方法:

function my_menu() {
    global $post;

    if(!$post->post_parent){
        // will display the subpages of this top level page
        $children = wp_list_pages( array( \'title_li\' => \'\', \'child_of\' => $post->ID, \'echo\' => 0 ) );
    } elseif($post->ancestors){
        // diplays only the subpages of parent level
        $ancestors = end($post->ancestors);
        $children = wp_list_pages( array( \'title_li\' => \'\', \'child_of\' => $ancestors, \'echo\' => 0 ) );
    } else {
        // diplays all pages
        $children = wp_list_pages( array( \'title_li\' => \'\', \'echo\' => 0 ) );
    }

    if ($children) {
        echo \'<ul id="my-menu">\';
        echo $children;
        echo \'</ul>\';
    }

}

结束

相关推荐

Taxonomy Checkbox Admin Panel

我有一个基本的管理面板,允许管理员使用复选框保存选项。复选框的使用是因为该选项需要多选因此,管理选项-复选框1-复选框2-复选框3等我的复选框是动态生成的,使用<input type=\"checkbox\" name=\"firm\" id=\"firm-<?php echo esc_attr( $term->slug ); ?>\" value=\"<?php echo esc_attr( $term->slug ); ?>\" <?php checke