任何人都可以通过wp_query帮助我。

我正在制作一个模板文件/循环来创建和归档当前页面子页面的页面。

这是我在下面的查询,但是它只是返回我的帖子,而不是子页面。

<?php

$parent = new WP_Query(array(

    'post_parent'       => $post->ID,                               
    'order'             => 'ASC',
    'orderby'           => 'menu_order',
    'posts_per_page'    => -1

));

if ($parent->have_posts()) : ?>

    <?php while ($parent->have_posts()) : $parent->the_post(); ?>

        <div id="parent-<?php the_ID(); ?>" class="parent-page">                                

            <h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>

            <p><?php the_advanced_excerpt(); ?></p>

        </div>  

    <?php endwhile; ?>

<?php unset($parent); endif; wp_reset_postdata(); ?>


非常感谢您的帮助。

Josh

评论

尝试此解决方案==获取帖子的子项-wordpress.stackexchange.com/a/123143/42702

#1 楼

您必须将child_of更改为post_parent,并添加post_type => 'page'

WordPress Codex Wp_query帖子和页面参数

<?php

$args = array(
    'post_type'      => 'page',
    'posts_per_page' => -1,
    'post_parent'    => $post->ID,
    'order'          => 'ASC',
    'orderby'        => 'menu_order'
 );


$parent = new WP_Query( $args );

if ( $parent->have_posts() ) : ?>

    <?php while ( $parent->have_posts() ) : $parent->the_post(); ?>

        <div id="parent-<?php the_ID(); ?>" class="parent-page">

            <h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>

            <p><?php the_advanced_excerpt(); ?></p>

        </div>

    <?php endwhile; ?>

<?php endif; wp_reset_postdata(); ?>


评论


谢谢花花公子,我尝试了post_parent原始,但关键是'post_type'=>'page'-WordPress的查询默认默认为发布吗?当它允许我时,我会接受答案。

– Joshc
2012年7月31日上午9:27

是的,默认为'post_type'=>'post'。

–mrwweb
19年3月26日在15:01

#2 楼

我知道这是一个非常老的问题,但是自从我着手解决这个问题后,其他问题也可能会出现。

Wordpress有一个非常简单的列表页面解决方案,您还可以在其中添加一些参数。

这就是显示页面子级所需的全部:

wp_list_pages(array(
  'child_of' => $post->ID,
  'title_li' => ''
))


请参阅wp_list_pages的参考页,了解可以应用的所有选项。 br />

评论


这将返回HTML字符串,而不是post对象的列表,因此可能不是OP想要的。

–亚历山大·霍尔斯格罗夫(Alexander Holsgrove)
20/07/27在11:43

#3 楼

将其重写为functions.php中的函数,您需要添加
global $ post;

function page_summary() {
    global $post;
    $args = array(
        'post_type'      => 'page',
        'posts_per_page' => -1,
        'post_parent'    => $post->ID,
        'order'          => 'ASC',
        'orderby'        => 'menu_order'
    );


    $parent = new WP_Query( $args );

    if ( $parent->have_posts() ) : 

        while ( $parent->have_posts() ) : $parent->the_post(); ?>
        <div id="parent-<?php the_ID(); ?>" class="parent-page">

        <h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
        </div>
    <?php
         endwhile; 

    endif; 
    wp_reset_postdata(); 
}


#4 楼

尽管OP专门要求使用wp_query,但这也可以:get_pages('child_of='.$post->ID.'&sort_column=menu_order');