查看单亲帖子时,显示子项列表

时间:2012-02-21 作者:turbonerd

我有一个自定义的帖子类型,叫做glossary. 我设置了parent 称为“A”、“B”等的帖子。然后,词汇表术语本身用适当的首字母作为其父帖子。因此,例如,“腹部”将“A”岗位设置为其母岗位,“蛋白质撇渣器”将“P”岗位设置为其母岗位。

我现在有了这些首字母的列表,

<a href="/glossary/a/">A</a>
<a href="/glossary/b/">B</a>
当点击这些链接时,我会看到一个显示单个“a”或“B”帖子的视图。

相反,我希望看到的是“A”作为标题,然后是其所有子帖子的列表。

最有效的方法是什么?

提前感谢,

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

试试这个,这是最基本的实现。可以更有效地pre_get_posts, 并将查询从“顶级页面”更改为对其子级的查询。但这可能会破坏一些东西,尤其可能需要您更改所使用的模板。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post();  ?>

    <header class="entry-header">
        <h1 class="entry-title"><?php the_title(); ?></h1>
    </header><!-- .entry-header -->

    <?php   //If top level, find children
        if($post->post_parent == 0):
            $children = new WP_Query(array(
                \'post_type\'=>\'page\',
                \'post_parent\'=>$post->ID
            ));

            if($children->have_posts()): ?>
                <ul>
                <?php while ( $children->have_posts() ) : $children->the_post(); ?>
                    <li> <?php the_title();?> </li>
                <?php endwhile; ?>
                </ul>

            <?php else: ?>
                <?php echo \'No children\';?>
            <?php endif; ?>

            <?php wp_reset_postdata(); ?>
        <?php else://Not top level, display normal post ?>
            <?php the_content(); ?>
        <?php endif;?>

    <?php endwhile; // end of the loop. ?>
<?php endif; ?>

结束

相关推荐

Removing posts by sql

我经常建立一个网站,我们有测试站。我想知道是否有一种方法可以通过sql通过简单的sql查询删除所有博客帖子。显然,在截断这些表之前,我会备份以前的数据库。如果可能的话,我想把这些页面放在一边。