WordPress查询仅显示子转发器的第一个元素

时间:2019-03-18 15:27:46

标签: php wordpress advanced-custom-fields

我正在尝试遍历另一个wordpress页面上的所有高级自定义字段发布对象。循环仅输出第一个后置对象(事件)。

也许我没有正确使用reset_postdata吗?关于我可能做错了什么的任何想法?

感谢您的任何建议。

<?php $your_query = new WP_Query( 'pagename=events' );
while ( $your_query->have_posts() ) : $your_query->the_post(); ?>
<?php if( have_rows('events') ): ?>
    <?php while ( have_rows('events') ) : the_row(); ?>
        <?php if( get_row_layout() == 'single-event' ): ?>

            <?php $post_object = get_sub_field('event');
            if( $post_object ): 
                $post = $post_object;
                setup_postdata( $post ); ?>
                    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                <?php wp_reset_postdata(); ?>
            <?php endif; ?>

        <?php endif; ?>
    <?php endwhile; ?>
<?php endif; ?>

1 个答案:

答案 0 :(得分:0)

我建议您对第一行进行如下修改。

<?php $your_query = new WP_Query( 
                          array(
                           'posts_per_page'   => -1,
                           'post_type' => 'events',
                           ));

如果要放置wp_reset_postdata(),则应将其放置在while循环之外。

<?php while ( $your_query->have_posts() ) : $your_query->the_post(); ?>
<?php if( have_rows('events') ): ?>
<?php while ( have_rows('events') ) : the_row(); ?>
    <?php if( get_row_layout() == 'single-event' ): ?>
        <?php $post_object = get_sub_field('event');
          if( $post_object ): 
            setup_postdata( $GLOBALS['post'] =& $post_object );
          ?>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        <?php endif; ?>

    <?php endif; ?>
<?php endwhile; wp_reset_postdata(); ?>
<?php endif; ?>
<?php endwhile; ?>