こんにちは、私は現在、Wordpressのバックエンドからギャラリーから画像を取り出すforeachループに取り組んでいます。ギャラリーは正常に動作していますが、期待どおり、重複した写真が表示されないようにしたいと思います。foreach内の重複する投稿を防止する
<?php if() $query->have_posts()):
$thumbs = [];
?>
<?php
foreach($query->posts as $gallery):
$images = get_field('gallery_images', $gallery->ID);
if($images):
foreach($images as $image):
$cropped_img = aq_resize($image['url'], 1024, 576, true, true, true);
$img_id[] = $image['ID'];
$thumbs[] = $cropped_img;
?>
ここで問題
<?php endforeach; endif; endforeach; ?>
<?php foreach($thumbs as $thumbnail): ?>
<div class="gallery__thumb"><img src="<?= $thumbnail; ?>"></div>
<?php endforeach; ?>
とは無関係のHTMLは、私が動作するようにしようとしているものを、本質的です。画像IDに2つの変数を追加して、最初のコードブロックに重複しないようにしました。だから、最初のif/foreachの状態は次のように見えること:私はこれを経験していたサムネイル
<?php foreach($thumbs as $thumbnail): ?>
<?php foreach($img_id as $img): ?>
<?php if ($img == $do_not_duplicate) : ?>
//do nothing
<?php else : ?>
<div class="gallery__thumb"><img src="<?= $thumbnail; ?>"></div>
<?php endif; ?>
<?php endforeach; endforeach; ?>
問題のために、その後のforeach続く
<?php if($images):
foreach($images as $image):
$cropped_img = aq_resize($image['url'], 1024, 576, true, true, true);
$img_id[] = $image['ID'];
$do_not_duplicate[] = $image['ID'];
$thumbs[] = $cropped_img;
?>
が、私は22枚の画像が23をoutputed取得していますです(2つのイメージが引かれているため)。本質的に私は重複のない22の画像を達成しようとしています。
洞察力は大変ありがとうございます、事前におねがいします。
$thumbs[$image['ID']] = $cropped_img;
それは画像をキーとしてIDが格納されている連想配列となりますので、二重像が配列にプッシュされている場合、それだけでオーバーライドします:
非常に助かりました、ありがとうございます! – thelgloriouspast