如何获取当前自定义帖子的子帖子并按自定义字段编号进行排序?

时间:2016-04-07 15:41:51

标签: php wordpress wordpress-theming parent-child

我有自定义帖子类型'汽车'它的子邮件类型是' carvariants'。

我想要做的是获取当前帖子(汽车)的子帖(carvariants)。我试过这段代码:

    <div>
    <?php 
    $parent_id = 1064;
    $the_query = new WP_Query(array(
'post_parent' => $parent_id,
        'post_type'         => 'carvariants',
        'posts_per_page'    => 1,
        'meta_key'          => 'wpcf-minimum-price',
        'orderby'           => 'meta_value_num',
        'order'             => 'ASC'
    ));

    ?>
    <?php if( $the_query->have_posts() ): ?>
        <ul>
        <?php while( $the_query->have_posts() ) : $the_query->the_post(); 
                $compprd = get_the_ID(); ?>

  <?php the_title(); ?>
     <?php
         endwhile; ?>
        </ul>
    <?php endif; ?>
    <?php wp_reset_query();  ?>
    </div>

我想通过自定义字段 wpcf-minimum-price 显示汽车订单的子帖子 但是&post -parent&#39;不管用。此代码显示空白输出。这有什么不对吗?

1 个答案:

答案 0 :(得分:0)

我没试过。但我希望这会奏效。

如果它不起作用,请给我留言,我会尝试让它发挥作用。

此外,如果有更好的解决方案,我很高兴看到专业人士的代码:

<div>
    <?php 
    $parent_id = 1064;
    $args = array( 'child_of' => $parent_id );

    $children_pages = get_pages( $args );

    if ( count( $children_pages ) != 0 ) :
        foreach ( $children_pages as $children_page ) :
            if ( $children_page->have_posts() ) :
                    $args_for_posts = array( 'posts_per_page' => 1,
                        'post_type' => 'carvariants',
                        'orderby' => 'meta_value_num',
                        'order' => 'ASC',
                        'post_parent' => $children_page );
                    $postlist = get_posts( $args_for_posts );
                    foreach ( $postlist as $post) :
                        setup_postdata( $post ); ?>
                        <ul>
                            <?php
                            the_post();
                            ?>
                        </ul>    
                    <?php
                    endforeach;
                    wp_reset_postdata();
            endif;
        endforeach;
    else : ?>
        <p>No content to show.</p>
    <?php 
    endif; ?>
</div>