将数字转换为星级 php 简码?

Convert number to star rating php shortcode?

我使用以下代码在我网站的短代码中生成星级。

function Getrating() {

$starNumber = "5";

for($x=1;$x<=$starNumber;$x++) {
    $output .= '<i class="fa fa-star" aria-hidden="true"></i>';
}
if (strpos($starNumber,'.')) {
    $output .= '<i class="fa fa-star-half-o" aria-hidden="true"></i>';
    $x++;
}
while ($x<=5) {
    $output .= '<i class="fa fa-star-o" aria-hidden="true"></i>';
    $x++;
}

return $output;

 }

add_shortcode('starrating', 'Getrating');

我是 PHP 的新手,非常困惑。我遇到的问题是,如何使 $starNumber 成为我可以在短代码中更改的可变数字?例如,如果我想用 [starrating rating="3.5"]

这样的简码显示 3.5 颗星

我尝试的一切似乎都只能破解简码。任何帮助将不胜感激。

谢谢!

您需要将星号作为参数发送给函数如下:

function Getrating($atts) {
    //starNumber has a default value of 5 if it is not set in the short code
    extract(shortcode_atts(array(
        'starNumber' => 5,
    ), $atts));

    for($x=1;$x<=$starNumber;$x++) {
        $output .= '<i class="fa fa-star" aria-hidden="true"></i>';
    }
    if (strpos($starNumber,'.')) {
        $output .= '<i class="fa fa-star-half-o" aria-hidden="true"></i>';
        $x++;
    }
    while ($x<=5) {
        $output .= '<i class="fa fa-star-o" aria-hidden="true"></i>';
        $x++;
    }

    return $output;

}

//register the shortcode
function wp_shortcodes_init(){
    add_shortcode('starrating', 'Getrating');
}

//tie the shortcode to WordPress initialization action
add_action('init', 'wp_shortcodes_init');

在 CMS 中使用短代码时,请像这样使用 [starrating starNumber="5"]