Конвертировать число в Звезды - PullRequest
0 голосов
/ 03 ноября 2018

Я создал этот шорткод, который преобразует число в звездный рейтинг. На данный момент шорткод работает, но не полностью:

function Shortcode() {

$starNumber = get_field('note_independant');

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('helloworld', 'Shortcode');

Скажем, мое значение поля note_independant = 3.

Вывод шорткода ★★★ вместо ★★★ ☆☆.

У меня также есть проблема при использовании числа с десятичным числом, например 3,5. Шорткод не будет выводить половину звезд ...

Ответы [ 3 ]

0 голосов
/ 03 ноября 2018

проблема может зависеть от используемой вами версии шрифта Awesome

в FA 5.5 используйте fa fa-star-half-alt для половины звезды и far fa-star для пустой звезды

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">

<div class="wrap">
  <i class="fa fa-star" aria-hidden="true"></i>
  <i class="fa fa-star" aria-hidden="true"></i> 
  <i class="fa fa-star" aria-hidden="true"></i> 
  <i class="fa fa-star-half-alt" aria-hidden="true"></i> 
  <i class="far fa-star" aria-hidden="true"></i>
</div>

и не забудьте заменить запятую , на точку . в if (strpos($starNumber,',')) {

0 голосов
/ 03 ноября 2018

Вместо этого вы можете использовать либо вышеуказанные решения, либо функцию рейтинга WordPress.

Подробнее о wp_star_rating здесь

0 голосов
/ 03 ноября 2018
  1. Сначала удалите aria-hidden="true", чтобы отобразить все пустые и пол звездочки. Узнайте больше о aria-hidden
  2. Замените ',' на '.', чтобы получить десятичную работу

      if (strpos($starNumber,'.')) {
    

В противном случае ваш код работает хорошо: Проверьте онлайн

...