2014-10-29 106 views
3

我想弄清楚如何将产品页面上显示的星级评分输出到循环中。以下是我试图将星形输出到回路上的代码循环显示星级评分

<div class="product-rating"> 
    <?php echo '<div class="star-rating" title="'.sprintf(__('Rated %s out of 5', 'woocommerce'), $average).'"><span style="width:'.(($average/5) * 100) . '%"><strong itemprop="ratingValue" class="rating">'.$average.'</strong> '.__('out of 5', 'woocommerce').'</span></div>'; ?> 
</div> 

现在,产品仅显示文字,并且不会输出正确的评分。我已经给它进行测试评级,它只能显示“超出5”这是帖子的截图

http://i255.photobucket.com/albums/hh140/testament1234/product_zpsaf2b219a.jpg

<ul class="products eight columns"> 
<?php 
    $args = array('post_type' => 'product', 'posts_per_page' => 10, 'product_cat' => 'Lumiere', 'orderby' => 'rand'); 
    $loop = new WP_Query($args); 
    while ($loop->have_posts()) : $loop->the_post(); global $product; ?> 

      <li class="product product-items ">  

       <div class="product-item"> 

        <?php woocommerce_show_product_sale_flash($post, $product); ?> 

        <div class="product-thumbnail"> 
        <?php if (has_post_thumbnail($loop->post->ID)) echo get_the_post_thumbnail($loop->post->ID, 'shop_catalog'); else echo '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" />'; ?> 
        </div> 

        <div class="product-info"> 
        <h3><a href="<?php echo get_permalink($loop->post->ID) ?>" title="<?php echo esc_attr($loop->post->post_title ? $loop->post->post_title : $loop->post->ID); ?>"><?php the_title(); ?></a></h3> 

        <?php echo $product->get_sku(); ?> 
        <?php echo apply_filters('woocommerce_short_description', $post->post_excerpt) ?> 


        <?php if ($price_html = $product->get_price_html()) : ?> 
         <span class="price"><?php echo $price_html; ?></span> 
        <?php endif; ?> 


        <div class="product-rating"> 
        <?php echo '<div class="star-rating" title="'.sprintf(__('Rated %s out of 5', 'woocommerce'), $average).'"><span style="width:'.(($average/5) * 100) . '%"><strong itemprop="ratingValue" class="rating">'.$average.'</strong> '.__('out of 5', 'woocommerce').'</span></div>'; ?> 
        </div> 

        <?php woocommerce_template_loop_add_to_cart($loop->post, $product); ?> 

        </div> 

       </div> 



      </li> 

<?php endwhile; ?> 
<?php wp_reset_query(); ?> 
</ul><!--/.products--> 
+0

不知道更多关于周围的代码,我的猜测是$平均没有被设置为你的循环。在打开div标签后添加以下内容:<?php var_dump($ average); ?> – joehart 2014-10-29 02:23:52

+0

添加您指定的代码后,它显示一个“NULL”文本。我还添加了整个代码供您参考 – clestcruz 2014-10-29 02:42:46

+0

我的猜测是,您需要获得$ product对象的属性,以填充$ average,类似于您设置$ price_html = $ product-> get_price_html()a提前几行。如果你var_dump($ product),你是否看到有平均评分的值? – joehart 2014-10-29 02:50:11

回答

0

如果我是正确的,该解决方案将是这个样子:

<div class="product-rating"> 
    <?php if ($average = $product->get_average_rating()) : ?> 
     <?php echo '<div class="star-rating" title="'.sprintf(__('Rated %s out of 5', 'woocommerce'), $average).'"><span style="width:'.(($average/5) * 100) . '%"><strong itemprop="ratingValue" class="rating">'.$average.'</strong> '.__('out of 5', 'woocommerce').'</span></div>'; ?> 
    <?php endif; ?> 
</div> 
+0

您的解决方案工作。多谢,伙计。现在我唯一的问题是试图实现字体真棒,以便它显示明星,而不是文字 – clestcruz 2014-10-29 04:29:35

+0

不能帮助你,但很高兴你的PHP问题已修复。 – joehart 2014-10-29 04:30:09