• 解決済 onsk

    (@onsk)


    いつもお世話になっております。

    表題のとおり、custom field suiteのループ内にある最初の画像を取得したいのですが、なかなかうまく表示されません。

    <?php
    	$fields = $cfs->get('slider');
    	if( $fields ) :
    		foreach ($fields as $field) :
    ?>
    	<?php
          $attachment_id = $field['slider_img'];
    	  if($attachment_id) :
    	  $gazou_sp = wp_get_attachment_image_src($attachment_id,'img470x350' );
    	  echo '<li><div><img src="' . $gazou_sp[0] . '" alt=""></div></li>';
    	  endif;
    	?>
    <?php
    	endforeach;
    	endif;
    ?>

    上記のコードで設定したすべての画像は表示されるのですが、最初の一枚だけ表示ができません。
    category.php に それぞれの記事のカスタムフィールドのループ内に登録した最初の画像を表示したいと考えています。
    単純に foreach を外せば良いのかと思ったのですが、表示されませんでした。

    <?php
    	$fields = $cfs->get('slider');
    	if( $fields ) :
    		foreach ($fields as $field) :
    		endforeach;
    ?>
    <?php
          $attachment_id = $field['slider_img'];
    	  if($attachment_id) :
    	  $gazou_sp = wp_get_attachment_image_src($attachment_id,'img470x350' );
    	  echo '<li><div><img src="' . $gazou_sp[0] . '" alt=""></div></li>';
    	  endif;
    	endif;
    ?>

    上記のように書くと、最後の画像だけ表示されましたが、できれば最初の画像を取得したいです。
    foreach をいまいち理解できていないので、ご教授頂けますようお願いします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 荒っぽい方法ですが、元のコード(すべての画像を表示できる)に対して endforeach; の直前に break; を入れてはどうですか。break を実行すると直近のループ(今回なら foreach)を抜けてくれます。

    foreach と break の使い方は下記の説明ページをどうぞ。
    PHP: foreach – Manual
    PHP: break – Manual

    もともと、$fieldsの中にすべての画像のIDが入っていますね。

    一枚目を取り出したい場合は、phpの配列の場合0番目という指定になります。

    なので、$fields の 0 番目の slider_imgにあるIDを取得するということで
    以下のようにすれば期待している画像が取れるかとおもいます。

    下記の場合は $first_attachment_id に一枚目の画像のIDを取得しています。

    <?php $fields = $cfs->get('slider');
    	$first_attachment_id = $fields[0]['slider_img'];
    	if($first_attachment_id) :
    		$gazou_sp = wp_get_attachment_image_src($first_attachment_id,'img470x350' );
    		echo '<div><li><img src="' . $gazou_sp[0] . '" alt=""></li></div>';
    	endif;
    ?>
    トピック投稿者 onsk

    (@onsk)

    megane9988さんの方法でうまくできました!
    配列もよくわからなくて、本当に本当に助かりました。
    ご解答いただき、誠にありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「custom field suiteのループ内にある最初の画像を取得したい」には新たに返信することはできません。