我正在尝试遍历另一个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; ?>
答案 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; ?>