Title: メディア画像の表示をforループで表現したい
Last modified: 2016年9月15日

---

# メディア画像の表示をforループで表現したい

 *  解決済 [atsushi312](https://ja.wordpress.org/support/users/atsushi312/)
 * (@atsushi312)
 * [11年、 2ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%a1%e3%83%87%e3%82%a3%e3%82%a2%e7%94%bb%e5%83%8f%e3%81%ae%e8%a1%a8%e7%a4%ba%e3%81%ab%e9%96%a2%e3%81%97%e3%81%a6foreach%e2%86%92for%e3%83%ab%e3%83%bc%e3%83%97%e3%81%b8%e5%a4%89%e6%9b%b4%e3%81%97/)
 * 制作目標は、
    タクソノミーでカテゴリ分けされたメディアの最新画像を**１枚**表示
   し、 それらをカテゴリの更新順に並べ替えることです。 （参照：[WPでカテゴリを投稿の新しい順に並べ替える](http://www.h-fj.com/blog/archives/2013/06/05-095031.php)）
 * 一般的にメディア画像一覧表示などにはforeachループを使うようですが、
    今回「カテゴリ
   別」「更新順」という条件があるためforループで表現したいです。 しかし下記のコード
   ではうまくいかずとても困っています。
 * 問題点を探るため、一度forループを外してprint_rでひとつずつ要素を調べた所
    10行
   目のget_posts関数で値をまったく取得できていないようなのです。 原因がつかめず、
   他の関数を当てはめようにもわからない状況です。 どうか解決策やヒントだけでもご
   助力いただけませんでしょうか。
 *     ```
       <!--function.php-->
       <?php  //更新順・カテゴリー別アタッチメント表示方法
       function get_taxs_and_sort() {
           $taxs = get_terms( 'attachment_category', 'get=all' );	// 特定のタクソノミーにあるカテゴリをすべて読み込む
           $count = count($taxs);					// カテゴリの数を得る
           for ($i = 0; $i < $count; $i++) {				// カテゴリの数だけ繰り返す
   
               // 各カテゴリの最も新しい投稿を読み込む
               $where = array('attachment_category' => $taxs[$i]->term_id, 'orderby' => 'post_date',
       			'post_type' => 'attachment', 'order' => 'desc', 'numberposts' => 1);
               $newest_atms = get_posts($where); //■ここが機能しない■
   
               // カテゴリのオブジェクトに「newest_atm」というメンバを追加して、最新の投稿を代入する
               $taxs[$i]->newest_atm = $newest_atms[0];
           }
           	// カテゴリを、最新の投稿の日付が新しい順に並べ替える
           	usort($taxs, 'sort_by_postdate');
           	// 結果を返す
           	return $taxs;
       }
   
       function sort_by_postdate($a, $b) {
           // 2つのカテゴリの最新の投稿(newest_atmメンバ)の日付の大小関係を返す
           return ($a->newest_atm->post_date == $b->newest_atm->post_date) ? 0 :
                  ($a->newest_atm->post_date < $b->newest_atm->post_date) ? 1 : -1;
       }
       ?>
       ```
   
 * 念のため、カスタム固定ページテンプレートのコードも載せておきます。
 *     ```
       <?php
       $taxs = get_taxs_and_sort();	// カテゴリーと各カテゴリーの最新投稿を取得
       $count = count($taxs);		// カテゴリの数を得る
       for($i=0; $i<$count; $i++) :	// カテゴリの数だけ繰り返す
       ?>
   
       <li class="photo-list">
       	<?php 	//最新の投稿に関する情報を準備しておく
       	 	$post = $taxs[$i]->newest_atm; setup_postdata($post);
       		//最新の投稿画像を呼び出せるようにしておく
       		$img = wp_get_attachment_image_src( $newest_atms[$i]->ID, '' );
       	 ?>
   
       	<!--メインコンテンツ-->
       	<?php echo $taxs[$i]->name ?>(<?php echo get_the_date(); ?>)<br />
       	<?php the_title(); ?>(<?php echo get_the_date(); ?>)<br />
       	<?php 	echo '<a href="' . $img[0] . '">';
       		echo wp_get_attachment_image( $newest_posts[0]->ID, 'thumbnail' );;
       		echo '</a>';
       	 ?>
       </li>
   
       <?php endfor; ?>
       ```
   

2件の返信を表示中 - 1 - 2件目 (全2件中)

 *  [jim912](https://ja.wordpress.org/support/users/jim912/)
 * (@jim912)
 * [11年、 2ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%a1%e3%83%87%e3%82%a3%e3%82%a2%e7%94%bb%e5%83%8f%e3%81%ae%e8%a1%a8%e7%a4%ba%e3%81%ab%e9%96%a2%e3%81%97%e3%81%a6foreach%e2%86%92for%e3%83%ab%e3%83%bc%e3%83%97%e3%81%b8%e5%a4%89%e6%9b%b4%e3%81%97/#post-196696)
 * タクソノミー名で指定する方法は、3.1より非推奨となっていますので、tax_query を
   使用してください。
 *     ```
       'tax_query' => array( array( 'taxonomy' => 'attachment_category', 'field' => 'term_id', 'terms' => $taxs[$i]->term_id ) )
       ```
   
 *  トピック投稿者 [atsushi312](https://ja.wordpress.org/support/users/atsushi312/)
 * (@atsushi312)
 * [11年、 2ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%a1%e3%83%87%e3%82%a3%e3%82%a2%e7%94%bb%e5%83%8f%e3%81%ae%e8%a1%a8%e7%a4%ba%e3%81%ab%e9%96%a2%e3%81%97%e3%81%a6foreach%e2%86%92for%e3%83%ab%e3%83%bc%e3%83%97%e3%81%b8%e5%a4%89%e6%9b%b4%e3%81%97/#post-196722)
 * 返信遅くなりましてすみません。
    jim912さんのアドバイスのおかげで解決しました！！
 * 本当にありがとうございました！
    　
 * 保存用に書き換えたコード残しておきます。
 *     ```
       $where = array( 'orderby' => 'post_date', 'post_type' => 'attachment', 'order' => 'desc',
       			 'numberposts' => 1, 'tax_query' => array( array( 'taxonomy' => 'attachment_category',
       			 'field' => 'term_id', 'terms' => $taxs[$i]->term_id )) );
               $newest_atms = get_posts($where);
       ```
   

2件の返信を表示中 - 1 - 2件目 (全2件中)

 トピック「メディア画像の表示をforループで表現したい」には新たに返信することはでき
ません。

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 2件の返信
 * 2人の参加者
 * 最後の返信者: [atsushi312](https://ja.wordpress.org/support/users/atsushi312/)
 * 最後の活動: [11年、 2ヶ月前](https://ja.wordpress.org/support/topic/%e3%83%a1%e3%83%87%e3%82%a3%e3%82%a2%e7%94%bb%e5%83%8f%e3%81%ae%e8%a1%a8%e7%a4%ba%e3%81%ab%e9%96%a2%e3%81%97%e3%81%a6foreach%e2%86%92for%e3%83%ab%e3%83%bc%e3%83%97%e3%81%b8%e5%a4%89%e6%9b%b4%e3%81%97/#post-196722)
 * 状態: 解決済

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
