Php 什么';我的关系循环出了什么问题?
Wordpress中高级自定义字段的关系循环有问题 第一个帖子显示得很完美,但它应该执行一个以上的帖子,但事实并非如此 有人能看到我的代码有什么问题吗Php 什么';我的关系循环出了什么问题?,php,wordpress,foreach,advanced-custom-fields,Php,Wordpress,Foreach,Advanced Custom Fields,Wordpress中高级自定义字段的关系循环有问题 第一个帖子显示得很完美,但它应该执行一个以上的帖子,但事实并非如此 有人能看到我的代码有什么问题吗 <?php $posts = get_field('produkter'); if( $posts ): ?> <?php foreach( $posts as $post): ?> <?php setup_postdata($post); ?> <div class="produkt"> <
<?php $posts = get_field('produkter'); if( $posts ): ?>
<?php foreach( $posts as $post): ?>
<?php setup_postdata($post); ?>
<div class="produkt">
<?php the_title(); ?>
<?php the_content(); ?>
<?php $posts = get_field('fil'); if( $posts ): ?>
<div id="filer">
<div id="topsection" class="laddahem"><div class="topborder"></div>
<h2>Ladda hem</h2>
</div><!-- #top -->
<div class="filhuvud">
<div class="filtyp">Filtyp</div>
<div class="fildatum">Datum</div>
<div class="filstorlek">Filstorlek</div>
</div><!-- .filhuvud -->
<div class="filholder">
<?php foreach( $posts as $post): ?>
<?php setup_postdata($post); ?>
<?php $attachment_id = get_field('filen');
$url = wp_get_attachment_url( $attachment_id );
$title = get_the_title( $attachment_id );
// hämta filstorleken
$filesize = filesize( get_attached_file( $attachment_id ) );
$filesize = size_format($filesize, 1);
$filetype = strtolower(pathinfo($url, PATHINFO_EXTENSION)); ?>
<div class="fil <?php echo $filetype; ?>">
<div class="filtyp"><a target="_blank" href="<?php echo $url; ?>" ><?php the_title(); ?></a></div>
<div class="fildatum"><?php the_time('Y-m-d'); ?></div>
<div class="filstorlek"><?php echo $filesize; ?></div>
</div><!-- .fil -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
</div><!-- .filholder -->
</div><!-- #filer -->
<?php endif; ?>
</div><!-- .produkt -->
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
拉达下摆
肮脏的
资料
菲斯托莱克
解决方案是将另一个foreach循环更改为:
<?php $files = get_field('fil'); if( $files ): ?>
<?php foreach( $files as $post): ?>
<?php setup_postdata($post); ?>
这正是我想要的 您的问题是,在循环外部定义了$posts
变量之后,您将在循环内部覆盖该变量
解决方案是将第二个$posts
变量重命名为其他变量,使您的总体循环如下所示:
<?php $posts = get_field('produkter'); ?>
<?php if( $posts ): ?>
<?php foreach( $posts as $post): ?>
<?php $files = get_field('fil'); //RENAMED THIS VARIABLE?>
<?php if( $files ): ?>
<?php foreach( $files as $file): ?>
<?php //Main body of markup and other fun stuff ?>
<?php endforeach; //end $files foreach ?>
<?php endif; //end $files if ?>
<?php endforeach; //end $posts foreach ?>
<?php endif; //end $posts if ?>
在调用get\u field('fil')
之前,执行wp\u reset\u postdata
@Anand,不幸的是,这根本没有帮助。在调用get\u field('fil')
之后,执行var\u dump($posts)
并查看它是否包含所需的数据。@Anand,它输出了大量的数据…在相同的数据中,试着检查你期望看到的帖子是否存在。根据我上面的评论,我写了更多的关于出错原因的解释和解决方案作为答案。这个答案是不完整的。关于@HenricÅkesson试图在这里解释的完整答案,请参见我上面的答案。