我正在使用高级自定义字段转发器插件来创建带有链接的大图像网格。我想在顶部创建最新的项目,所以我要问的是如何通过代码反转订单?
任何帮助都会很棒。这是我目前的代码
<?php if( have_rows('shop_product') ):
while ( have_rows('shop_product') ) : the_row();
?>
<div class="shop-item">
<div class="image-hover">
<div class="image-hover-inner">
<img src="<?php the_sub_field('product_image');?>">
<div class="image-caption">
<div class="image-caption-inner">
<a href="<?php the_sub_field('product_url');?>" target="_blank"><?php the_sub_field('product_brand');?><br>
Buy Now</a>
</div>
</div>
</div>
</div>
</div>
<?php endwhile;
else :
endif;
?>
答案 0 :(得分:4)
脱离我的头顶,使用输出缓冲区 - 虽然不是最干净的方式
<?php $outs = array(); if( have_rows('shop_product') ):
while ( have_rows('shop_product') ) : the_row(); ob_start();
?>
<div class="shop-item">
<div class="image-hover">
<div class="image-hover-inner">
<img src="<?php the_sub_field('product_image');?>">
<div class="image-caption">
<div class="image-caption-inner">
<a href="<?php the_sub_field('product_url');?>" target="_blank"><?php the_sub_field('product_brand');?><br>
Buy Now</a>
</div>
</div>
</div>
</div>
</div>
<?php $outs[] = ob_get_clean(); endwhile;
else :
endif;
$outs = array_reverse($outs);
echo implode($outs);
?>
答案 1 :(得分:3)
您可以使用get_field('my_repeater')
将转发器字段作为可以循环的数组。
然后使用PHP的array_reverse()
函数,你得到一个可以循环的反向数组。
唯一的区别是你必须以数组键的形式访问这些字段,而不是使用ACF的sub_field
函数。
对于你的例子:
<?php $products = array_reverse(get_field('shop_product'));
foreach ($products as $product): ?>
<img src="<?php echo $product['product_image']; ?>">
<a href="<?php echo $product['product_url']; ?>">Buy now</a>
<?php endforeach; ?>
答案 2 :(得分:3)
它可能无法回答实际问题,但可以解决问题。 如果要显示转发器的行,则可以将CSS display:flex与flex-flow:row / column-reverse一起使用;
因为可能只需要交换订单以显示它
示例:
display:flex;
flex-flow:row-reverse;