Преобразовать число в звездный рейтинг php шорткод? - PullRequest
1 голос
/ 17 июня 2020

Я использовал следующий код для создания звездного рейтинга внутри шорткода на моем сайте.

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 номером переменной, который я могу изменить в шорткоде? Например, если бы я хотел показать 3,5 звезды с помощью шорткода, такого как [starrating rating="3.5"]

Все, что я пробую, кажется, только ломает шорткод. Любая помощь будет принята с благодарностью.

Спасибо!

1 Ответ

0 голосов
/ 17 июня 2020

Вам необходимо отправить звездочку в качестве параметра функции следующим образом:

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"]

...