ループ内でコメントを1件表示させる方法。コメント一覧と投稿一覧の紐付
-
はじめまして。
このたび、初めてwordpressでサイト制作をおこなっております。
ものすごい苦労してやっと形になってまいりましたが、一点だけどうしてもわからないことがあり、質問させてください。いまポータルサイトのようなものを作ってまして、コメント機能を使って、いわゆる「口コミを書く」的な機能をもたせました。
さらに、wp-postratingsを導入し、店舗(通常の投稿1つ1つを店舗として登録)の評価をできるようにしました。そして評価が高かった順に5件一覧表示させるページをつくりました。いわゆるランキングです。そしてこのループ1つ1つにコメントを1件だけ表示させたいのです。
ここまでのソースがこちらです。
(ranking.phpのなかで、<?php get_template_part( 'loop', 'page' ); ?>
としてよみこんでいるloop_ranking.phpです)
<?php query_posts(array(
'meta_key' => ratings_average,
'orderby' => meta_value_num,
'order' => DESC,
'showposts' => 5,
));
$ranking = 1;
while (have_posts() && $ranking < 6): the_post(); if(get_comments_number() >= 0) :?>
<div class="lankblock">
<div class="lankblock-inner">
<?php if ( get_post_meta($post->ID,'head_logo',true) ): ?>
"><img class="pickupimg" src="<?php echo post_custom('head_logo'); ?>" alt="<?php echo post_custom('head_name'); ?>" />
<?php else : ?>
"><img class="pickupimg" src="" width="118" height="91" alt="<?php echo post_custom('head_name'); ?>" />
<?php endif; ?>
<div class="boxL">
<h3 class="lank<?PHP echo $ranking; ?>">第<?PHP echo $ranking; $ranking++; ?>位 "><?php echo post_custom('head_name'); ?></h3>
<p><span>住所: </span><?php echo post_custom('salon_01'); ?></p>
<p><?php if ( get_post_meta($post->ID,'head_description',true) ): ?><span>紹介文: </span><?php echo post_custom('head_description'); ?><?php endif; ?>…">サロンの詳細へ</p>
</div>
<div class="boxR">
<div class="title">
<span class="star"><?php echo the_ratings_results(get_the_id()); ?></span>
<span class="rank-kuchikomi">最新口コミ</span></div><p><?php comment_text(); ?></p>
<p class="name">by <?php echo get_comment_author(); ?> <?php comment_date('m/d'); ?></p></div>
</div>
</div><?php endif; endwhile; wp_reset_query(); ?>
phpのループのところなどはもうぜんぜんわからず、なんとか人に聞きながらここまでできた感じです。文法ミス等のご指摘もいただけるとたすかります。
これですと、一覧が5件表示されはするのですが、コメントが表示されません。
コメント日時もでませんし、コメント投稿者名はなぜか「匿名」になってしまいます。そこで、次に考えたのがこんなソースです。
<?php query_posts(array(
'meta_key' => ratings_average,
'orderby' => meta_value_num, // 数値の大きい順に並び替えWP3.0~)
'order' => DESC,
'showposts' => 5,
));
$ranking = 1;
while (have_posts() && $ranking < 6): the_post(); if(get_comments_number() >= 0) :$come = 1;
$comments = get_comments(array(
'status' => 'approve' ,'number' => 5));
foreach($comments as $comment):
$post = get_post($comment->comment_post_ID);?>
<div class="lankblock">
<div class="lankblock-inner">
<?php if ( get_post_meta($post->ID,'head_logo',true) ): ?>
"><img class="pickupimg" src="<?php echo post_custom('head_logo'); ?>" alt="<?php echo post_custom('head_name'); ?>" />
<?php else : ?>
"><img class="pickupimg" src="" width="118" height="91" alt="<?php echo post_custom('head_name'); ?>" />
<?php endif; ?>
<div class="boxL">
<h3 class="lank<?PHP echo $ranking; ?>">第<?PHP echo $ranking; $ranking++; ?>位 "><?php echo post_custom('head_name'); ?></h3>
<p><span>住所: </span><?php echo post_custom('salon_01'); ?></p>
<p><?php if ( get_post_meta($post->ID,'head_description',true) ): ?><span>紹介文: </span><?php echo post_custom('head_description'); ?><?php endif; ?>…">サロンの詳細へ</p>
</div>
<div class="boxR">
<div class="title">
<span class="star"><?php echo the_ratings_results(get_the_id()); ?></span>
<span class="rank-kuchikomi">最新口コミ</span></div><p><?php comment_text(); ?></p>
<p class="name">by <?php echo get_comment_author(); ?> <?php comment_date('m/d'); ?></p></div>
</div>
</div><?php endforeach ; endif; endwhile; wp_reset_query(); ?>
これですともうめちゃめちゃですが、惜しい感じもしたのであげておきます。
まず5件表示はされましたが、コメントがある記事のみが、2件づつループして5件表示されます。しかも評価の低い順になってます。めちゃめちゃなのは理解していますが、ここでこれ以上本当にわからなくなってしまいました。
たぶんコメント一覧と投稿一覧の紐付け(?)みたいなことをすればうまくいくのかなとおもうのですが、どうでしょうか。素人の考えですので、ムリだったらまたムリの理由を教えていただけると諦めがつきます。
よろしくお願いいたします。
-
なんか投稿方法間違えちゃったかもしれませんね、見づらくなってしまいました・・・
- トピック「ループ内でコメントを1件表示させる方法。コメント一覧と投稿一覧の紐付」には新たに返信することはできません。