php - Wordpress 查询仅显示子转发器的第一个元素
问题描述
我正在尝试从另一个 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; ?>
解决方案
我建议你的第一行修改如下..
<?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; ?>
推荐阅读
- python - 我将如何解决此 Python 代码中的“列表索引超出范围”错误?
- generics - 如何使用实现迭代器的泛型类型来实现泛型特征?
- javascript - 试图了解这个 JS 函数的作用以及它的参数是什么,有人可以解释一下吗?
- sharepoint-online - sharepoint 2016 在线搜索中心
- r - shinyjs:当条件不评估为 TRUE 时,切换不会隐藏自定义 UI
- javascript - My json object formed through a form is blank
- canvas - 清除画布后读取白色像素数据
- c++ - Should I use std::atomic or std::mutex to avoid the thread race?
- angular - Scala class isn't deserialised correctly by Angular HttpClient
- html - 使用“dl”元素键的日期?