ハロー!肉球アッパー(@hellokidneylife)です。
当ブログが使用している無料Wordpressテーマ「Cocoon」で、レーティングスター(評価スター)を表示させるショートコード機能が先日追加されたので使ってみました。


あれ?
うまく表示されません。
原因は、自分で追加したメニューアイコンなどにFont Awesome5を使用していたためでした。
CocoonはFont Awesome4の仕様なのでうまく表示されなくて当然です。
なんとかできないか試行錯誤してみたところ表示に成功したので、やったことを書き留めておきます。
といっても素人ですので、これがベストなのかはわかりませんが「とりあえずできたよ」という記事です。
PHPコードの変更と追記
開発者のわいひらさんが運営されている寝ログにてPHPコードが公開されています。
バックアップをした上で、その中のスター()・半分スター()・空スター()の各コードをFont Awesome5のものに変更します。
//スターの出力 の中の “fa fa-star” を “fas fa-star” へ
//半分スターの出力 の中の “fa fa-star-half-o” を “fas fa-star-half-alt” へ
//空スターの出力 の中の “fa fa-star-o” を “far fa-star” へ
変更前の該当箇所
//スターの出力
for ($j=1; $j <= $before; $j++) {
$tag .= '<span class="fa fa-star"></span>';
}
//半分スターの出力
for ($j=1; $j <= $middle; $j++) {
$tag .= '<span class="fa fa-star-half-o"></span>';
}
//空スターの出力
for ($j=1; $j <= $after; $j++) {
$tag .= '<span class="fa fa-star-o"></span>';
}
変更後の該当箇所
//スターの出力
for ($j=1; $j <= $before; $j++) {
$tag .= '<span class="fas fa-star"></span>';
}
//半分スターの出力
for ($j=1; $j <= $middle; $j++) {
$tag .= '<span class="fas fa-star-half-alt"></span>';
}
//空スターの出力
for ($j=1; $j <= $after; $j++) {
$tag .= '<span class="far fa-star"></span>';
}
変更箇所を含める全文を子テーマの[外観]→[テーマの編集]→[テーマのための関数 (functions.php)]へ追記します。
変更後の全文
//レーティングスタータグの取得
if ( !function_exists( 'get_rating_star_tag' ) ):
function get_rating_star_tag($rate, $max = 5, $number = false){
$rate = floatval($rate);
$max = intval($max);
//数字じゃない場合
if (!is_numeric($rate) || !is_numeric($max)) {
return $rate;
}
//レーティングが100より多い場合は多すぎるので処理しない
if ($rate > 100 && $max > 100) {
return $rate;
}
$tag = '<div class="rating-star">';
//小数点で分割
$rates = explode('.', $rate);
if (!isset($rates[0])) {
return $rate;
}
//小数点以下が5かどうか
if (isset($rates[1])) {
$has_herf = intval($rates[1]) == 5;
} else {
$has_herf = false;
}
if ($has_herf) {
$before = intval($rates[0]);
$middle = 1;
$after = $max - 1 - $before;
} else {
$before = intval($rate);
$middle = 0;
$after = $max - $before;
//3.2とかの場合は小数点以下を切り捨てる
$rate = floor(floatval($rate));
}
//スターの出力
for ($j=1; $j <= $before; $j++) {
$tag .= '<span class="fas fa-star"></span>';
}
//半分スターの出力
for ($j=1; $j <= $middle; $j++) {
$tag .= '<span class="fas fa-star-half-alt"></span>';
}
//空スターの出力
for ($j=1; $j <= $after; $j++) {
$tag .= '<span class="far fa-star"></span>';
}
if ($number) {
$tag .= '<span class="rating-number">'.$rate.'</span>';
}
$tag .= '</div>';
return $tag;
}
endif;
//星ショートコード
add_shortcode('star', 'rating_star_shortcode');
if ( !function_exists( 'rating_star_shortcode' ) ):
function rating_star_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
'rate' => 5,
'max' => 5,
'number' => 1,
), $atts ) );
return get_rating_star_tag($rate, $max, $number);
}
endif;
CSSの追記
スター自体のCSSを、子テーマの[外観]→[テーマの編集]→[スタイルシート (style.css)]へ追記して完了です。
/*星のスタイル*/
.rating-star{
color: #f5bc55;
font-size: 1.2em;
}
動作確認
実際にショートコード機能を使って表示させてみます。
問題ないようです。
さいごに
以上、Cocoonで勝手にFont Awesome5を使っちゃってる場合の対処法でした。

レーティングスター(評価スター)ショートコードは、とても素晴らしいのでどうしても使いたかったのです



