こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

WordPressにおいて、サブカテゴリーに画像を表示させる。

WordPressにおいて、サブカテゴリーに画像を表示させる。
WordPress,PHP初心者です。

現在 情報サイトを作っているのですが、
あるカテゴリーのループ中に、サブカテゴリーにも属していると、画像を表示させたいです。

ショッピングサイト等で例を言うと
「シャツ」という大カテゴリーをループを使って一覧で出力し、
その中で、サブカテゴリー「売り切れ」や「NEW」にチェックを入れていると(管理画面で)
それに適した画像が表示されるようにしたいのです。
”「売り切れ」と「NEW」にどちらも属している場合もあります”

なおかつ、そのサブカテゴリーにチェックが入っていると
上位に表示されると一層良いのですが。


ループの中で、更にループ処理?という考えがあまり正しくないような気がするのですが、
試している所やはりうまくいきません。
ソースは下記の通りです。


<!--大カテゴリーのループ開始-->
<?php query_posts("cat=3&showposts=10"); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="list-box">

<a href="<?php the_permalink() ?>">
<img src="<?php echo get_post_meta($post->ID,'faceimage',TRUE); ?>" alt="<?php the_title(); ?>" width="141" height="141" />
</a>
<p class="name"><?php the_title(); ?></p>
<p class="size"><?php echo get_post_meta($post->ID,'textfield',TRUE); ?></p>


<!--売り切れの場合、画像表示-->
<?php query_posts("cat=4"); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="ico-on"><img src="hogehoge" alt="売り切れ" /></div>
<?php endwhile; ?>
<?php endif; ?>


<!--新着アイテムの場合、画像表示-->
<?php query_posts("cat=6"); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="ico-new"><img src="hogehoge2" alt="新着アイテム" /></div>
<?php endwhile; ?>
<?php endif; ?>


</div>
<!--ループ完全に終了-->
<?php endwhile; ?>
<?php endif; ?>


調べてみたものの、行き詰まっています。
稚拙な質問ではございますが、
どうぞご教授お願い致します。

投稿日時 - 2010-08-09 23:27:41

QNo.6098790

困ってます

質問者が選んだベストアンサー

内側のループ
<?php $my_query = new WP_Query("cat=4"); ?>
<?php if ($my_query->have_posts()) : ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

<?php endwhile; ?>
<?php endif; ?>

<?php $my_query = new WP_Query("cat=6"); ?>
<?php if ($my_query->have_posts()) : ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>

<?php endwhile; ?>
<?php endif; ?>


<!--ループ完全に終了-->
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>

投稿日時 - 2010-08-10 00:55:58

お礼

お返事ありがとうございます。

ご教授頂きましたソースで試しました所、
大カテゴリーに属する一覧は望んでいた処理の通り、
出力されました。


ただ「売り切れ」「NEW」の画像出力に少々稼動がおかしいようなのです。
例えば、
1.全ての記事には大カテゴリーにチェックを入れ、
 サブカテゴリーにはチェックを1つも入れておらずとも、
 出力としては数点の記事には画像が表示されていたりする。
 (サブカテゴリーにチェックが入っている状態)

2.記事の1つにでもサブカテゴリーのどちらかにチェックを入れると、
 全ての記事においてどちらの画像も表示されてしまう。
 (全ての記事においてサブカテゴリーにチェックが入っている状態)




ソースは下記の通りです。


<!--大カテゴリーのループ開始-->
<?php query_posts("cat=3"); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="list-box">

<a href="<?php the_permalink() ?>">
<img src="<?php echo get_post_meta($post->ID,'faceimage',TRUE); ?>" alt="<?php the_title(); ?>" width="141" height="141" />
</a>
<p class="name"><?php the_title(); ?></p>
<p class="size"><?php echo get_post_meta($post->ID,'textfield',TRUE); ?></p>






<!--売り切れの場合、画像表示-->
<?php $my_query = new WP_Query("cat=4"); ?>
<?php if ($my_query->have_posts()) : ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<div class="ico-on">
<img src="hogehoge.jpg" alt="売り切れ" />
</div>
<?php endwhile; ?>
<?php endif; ?>


<!--新着アイテムの場合、画像表示-->
<?php $my_query = new WP_Query("cat=6"); ?>
<?php if ($my_query->have_posts()) : ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<div class="ico-new">
<img src="hogehoge2.jpg" alt="新着アイテム" />
</div>
<?php endwhile; ?>
<?php endif; ?>


</div>
<!--ループ完全に終了-->
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>



上記でうまくいかず、rewind_posts()等も使用してみましたが
うまくいきません。

あと基本情報が不足していました。申し訳ありません。
WordPressのバージョンは2.8.4になります。



特にループの中でループ処理の様な「この方法でなくてはならない」という希望はなく、
大カテゴリー3と、サブカテゴリーの4と6の3点にチェックが入っていれば
一番上に表示。
次に大カテゴリー3と、サブカテゴリーの4の2点にチェックが入っていればならば2つ目に表示。

等と、1ページに複数のループを使用したりと方法が違えど構いません。


もしよろしければ、ご返答お願い致します。

投稿日時 - 2010-08-10 19:06:56

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問