首页 > 解决方案 > 如何显示空星或半星?

问题描述

为了显示帖子的平均评分,我使用以下代码片段。

代码的第一部分:使用此代码,我为平均评分生成一个变量。

<?php 
$post_id = get_the_ID();
$comments = get_approved_comments( $post_id );
foreach( $comments as $comment ){
    $rate = get_comment_meta( $comment->comment_ID, 'rating', true );
    if( isset( $rate ) && '' !== $rate ) {
        $i++;
        $total += $rate;
        $avrating = round($total / $i, 1);
    }
}
?>

代码的第二部分输出评分星。

<?php
global $post;
$stars   = '';
for ( $i = 1; $i <= $avrating + 1; $i++ ) {
    $width = intval( $i - $avrating > 0 ? 20 - ( ( $i - $avrating ) * 20 ) : 20 );
    if ( 0 === $width ) {
        continue;
    }
    $stars .= '<img src="mysite.com/wp-content/themes/gin_mag/img/star_little.svg" alt="">';
    if ( $i - $avrating > 0 ) {
        
    }
}
echo $stars;
?>  

现在我有问题。首先,如果平均评分大于 5,例如前面的 5.3,则显示的不是 5 颗而是 6 颗星。我不明白如何解决这个问题。

第二点,如果平均评分为 2.4,则显示三颗星 (star_little.svg),或者显示两颗满星 (star_little.svg) 和一颗 (halfstar_little_half.svg) 是合乎逻辑的。我知道这可以通过 if-else 语句的检查来实现。

如我所见:如果评分超过 2 但不是 3,则显示两颗满星和一颗半星。但我不知道如何实现这一点。请帮忙。

标签: phpwordpress

解决方案


推荐阅读