web-dev-qa-db-ja.com

ACFプラグイン - wp_get_attachment_image()を使ったランダムギャラリー画像

ランダムを表示するために次のコードを使って他の人( source 1source 2source 3 )を見つけました。 ACFプラグイン を使用したギャラリー画像(および動作)

<?php
$gallery = get_field('images');
$Rand = array_Rand($gallery, 1);

if( $gallery ): ?>
    <img src="<?php echo $gallery[$Rand]['sizes']['large']; ?>" alt="<?php echo $gallery[$Rand]['alt']; ?>" />
<?php endif; ?>

しかし、私はwp_get_attachment_image()(レスポンシブ画像用)でそれをやろうとしていますが、$Rand変数をどのように動かすかわからないのですか? ACF Galleryフィールドのフィールド にはwp_get_attachment_image()を使用する 'Basic List of Images'の例がありますが、ギャラリーをループする必要はありません。

任意の助けは大歓迎です。 $Rand変数がどこかに追加されているので、私はそれが以下のようなものでなければならないと思います:

<?php 
    $images = get_field('gallery');
    $size = 'full'; // (thumbnail, medium, large, full or custom size)
    $Rand = array_Rand($images, 1);

    if( $images ): ?>
            <?php echo wp_get_attachment_image( $images['ID'], $size ); ?>
<?php endif; ?>
1
codeview

回答は ACFフォーラム で見つかりました。 falseパラメータを追加すると、生の/未フォーマットの値が返されます。

<?php 
    $images = get_field('gallery', 'option', false); // Adding the `false` parameter returns raw/unformatted value
    $size = 'full'; // (thumbnail, medium, large, full or custom size)
    $Rand = array_Rand($images, 1);

    if( $images ): ?>
        <?php echo wp_get_attachment_image( $images[$Rand], $size ); ?>
<?php endif; ?>
1
codeview
<?php 
    $images = get_field('gallery');
    $size = 'full'; // (thumbnail, medium, large, full or custom size)
    $Rand = array_Rand($images, 1);

    if( $images ): ?>
            <?php echo wp_get_attachment_image( $images[$Rand]['ID'], $size ); ?>
<?php endif; ?>

このコードはうまくいくはずです。 array_Rand() 2番目のパラメータが1に設定されている場合はキーを返し、2番目のパラメータが1より大きい場合はキーを持つ配列

2
Maxim Sarandi