WordPressテーマSANGOの質問

レビューボックスで点数「0」を使いたい

アバター
nakamura

お世話になります。
レビューボックスの点数は「1」〜「5」までになっていますが、「0」(グレーの星のみ5個)を表示させたいと考えています。
対処方法をご教示頂けないでしょうか。

SANGO
SANGO 質問ガイドライン
コメントへの回答
サルワカくん
サルワカくん
2020/04/21

お世話になっております。
ショートコードを上書きするのは大変なので、[value]をカスタマイズしたショートコードを別に作るのが良いと思います。
例えば以下のようにします。

①以下のコードをfunctions.phpに貼り付けます。

// 0点に対応したショートコード [myvalue]
add_shortcode('myvalue', 'my_rate_inner'); // 評価ボックスの中身
function my_rate_inner($atts, $content = null)
{
  if (isset($atts[0])) {
    $value = ($atts[0]);
    $s = '<i class="fa fa-star"></i>';
    $h = get_option('use_fontawesome4') ? '<i class="fa fa-star-half-o"></i>' : '<i class="fas fa-star-half-alt"></i>';
    $n = get_option('use_fontawesome4') ? '<i class="fa fa-star-o"></i>' : '<i class="fas fa-star rate-star-empty"></i>';
    if ($value == '5' || $value == '5.0') {
      $star = $s . $s . $s . $s . $s . ' (5.0)';
    } elseif ($value == '4.5') {
      $star = $s . $s . $s . $s . $h . ' (4.5)';
    } elseif ($value == '4' || $value == '4.0') {
      $star = $s . $s . $s . $s . $n . ' (4.0)';
    } elseif ($value == '3.5') {
      $star = $s . $s . $s . $h . $n . ' (3.5)';
    } elseif ($value == '3' || $value == '3.0') {
      $star = $s . $s . $s . $n . $n . ' (3.0)';
    } elseif ($value == '2.5') {
      $star = $s . $s . $h . $n . $n . ' (2.5)';
    } elseif ($value == '2' || $value == '2.0') {
      $star = $s . $s . $n . $n . $n . ' (2.0)';
    } elseif ($value == '1.5') {
      $star = $s . $h . $n . $n . $n . ' (1.5)';
    } elseif ($value == '0') {
      // 0を追加
      $star = $n . $n . $n . $n . $n . ' (0)';
    } else {
      $star = $s . $n . $n . $n . $n . ' (1.0)';
    }
    $endl = (isset($atts[1])) ? ' end-rate' : '';
    if ($content) {
      return '<div class="rateline' . $endl . '"><div class="rate-thing">' . $content . '</div><div class="rate-star dfont">' . $star . '</div></div>';
    }
  }
}

②ショートコードを使用するときに[rate title="テスト"][value 0]読みやすさ[/value][/rate]ではなく[rate title="テスト"][myvalue 0]読みやすさ[/myvalue][/rate]のようにします。

よろしくお願いします。

アバター
nakamura
2020/04/21

ご丁寧で迅速なご回答、誠にありがとうございます!
大変助かりました。