「メイド・イン・ヘブン」スキン適用中

Cocoonフォーラム

サイト内検索
書き込みの前に以下の3点をご確認ください。
  1. 1つのトピックにつき1つの質問を書き込んでください
  2. 不具合・カスタマイズ対象ページのURLを提示高速化を無効にしてください
  3. 該当部分のキャプチャ・環境情報とともに書き込んでいただけると助かります

何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。

不具合・カスタマイズ対象ページのURL:

相談内容:

不具合の発生手順:

解決のために試したこと:

※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:

※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。

環境情報の取得方法はこちら。
https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
https://wp-cocoon.com/theme-trouble/

フォーラム利用ガイドリンク

  1. フォーラムガイドライン
  2. よくある質問と答え(FAQ)
  3. サポート対象外のケース
  4. 原因不明の不具合用トラブルシューティング
  5. トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw
  6. 真っ白画面でのエラーメッセージの確認方法
  7. ブラウザ環境チェックツール
  8. Cocoonカスタマイズ依頼

フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。

評価スターに関する不具合
 
共有:
通知
すべてクリア

[解決済] 評価スターに関する不具合

10 投稿
2 ユーザー
3 Reactions
1,432 表示
ろこ
(@lococo)
Prominent Member Registered
結合: 6年前
投稿: 830
Topic starter  

評価スターを表示するためのget_rating_star_tag関数に2点の不具合があります。

 

1点目:評価スターのマニュアル( https://wp-cocoon.com/rating-star/ )には、

rateには、0.1刻みで評価数値を入力します。
...
異常値が入力された場合は、入力された文字列がそのまま表示されます。

とありますが、例えば小数第二位まである数値が指定されても、スター表示が数値と一致しないだけで文字列をそのまま返す形にはなっていません。
("4.11"だと4.5以上のスターが表示される。)

小数第一位までで刻むための処理を加えるか、または小数第一位未満でも正しく動作させるよう修正する必要があります。

 

2点目:numberオプションを1で指定した場合には、

評価数値を表示する

とありますが、0.1刻みだとすると小数第一位が0の場合は少数が表示されません。
(4.0の評価が4と表示される。)

この不具合の原因は、floatvalによるfloat型の変数を表示用の文字列としても扱っているからです。

また、get_the_review_rate関数もtype="range"のinputで保存された値をそのまま用いていることから、レビュー評価の表示で同様の問題が起きています。


   
わいひら reacted
ろこ
(@lococo)
Prominent Member Registered
結合: 6年前
投稿: 830
Topic starter  

少し補足しておきますと、小数第一位までの評価数値を表示させるためには少数第二位までの数値が必要です。
(実際にそのつもりでデータを取る仕組みを作っていた。)

評価スター関連の機能を小数第一位までとした場合、Cocoon側または外部で小数第一位までの評価数値を算出することになるはずですが、現在のコードでは算出の考慮がなされていないため、最初の投稿で示した2つの問題点が生じているということです。

 


[例]
"4.04"というデータが出た場合、外部で小数第一位までにして受け渡すときには"4.0"ですが、表示されるのは"4.0"ではなく"4"となり、数値の意味が変わってきます。
"4.45"は"4.5"として渡すことになりますが、実際の数値は"4.5"未満でも表示上は"4.5"以上となります。

一方で、"4.04"のまま渡すと"4.04"がそのまま表示され、このときは正しい表示になりますが、他の数値も一律で少数第二位まで渡すことになり、"4.05"は"4.5"以上として表示されます。
また、"4.00"も"4"と表示されます。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 6年前
投稿: 16655
 

とりあえず、小数点第一位で数値を切り捨てするようにし、文字列での出力部分は、小数点第一位まで表示されるようにフォーマットを設定してみました。
https://github.com/yhira/cocoon/commit/0a1b4d43d008158dcd53c90ec8d19ef819177cd1


   
ろこ
(@lococo)
Prominent Member Registered
結合: 6年前
投稿: 830
Topic starter  

確認しました。

item-ranking-func.php#L204は、

$rate = round($rate, 1);

でそのまま四捨五入すると、何か別の問題が生じたのでしょうか?

 

また、

get_the_review_rate関数もtype="range"のinputで保存された値をそのまま用いていることから、レビュー評価の表示で同様の問題が起きています。

については、修正がなければ自身で対応しようと思いますが、現状のままでいくということでよろしいでしょうか?


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 6年前
投稿: 16655
 
でそのまま四捨五入すると、何か別の問題が生じたのでしょうか?

特に。四捨五入の方が良かったですか?

説明ページに以下のように書いていたので、「小数点第一位まで有効」ということを機能としても強調した方が良いかなと思い、小数点第二位より下を切り捨てようと思っただけです。

rateには、0.1刻みで評価数値を入力します。

僕としては0.1刻みで使ってもらうには、こちらの方が良いかなと思っただけなので、どちらでも良いと言えばどちらでも良いです。


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 6年前
投稿: 16655
 

get_the_review_rate関数もtype="range"のinputで保存された値をそのまま用いていることから、レビュー評価の表示で同様の問題が起きています。

これについては、冒頭「2点の不具合があります」とあったので、2ヶ所修正した時点で修正したと思ってしまったんだと思います。

ただ、「レビュー評価の表示」というのは、タイトル下のことですか、それとも投稿設定画面の事でしょうか.それともJSON-LDの出力でしょうか。

タイトル下は、小数点で表示されているようなので、それ以外の部分全部ということでしょうか。


   
ろこ
(@lococo)
Prominent Member Registered
結合: 6年前
投稿: 830
Topic starter  

特に。四捨五入の方が良かったですか?

説明ページに以下のように書いていたので、「小数点第一位まで有効」ということを機能としても強調した方が良いかなと思い、小数点第二位より下を切り捨てようと思っただけです。

#post-24058で指摘したのは四捨五入が良いという意味ではなく、四捨五入でも切り上げ・切り捨てでもないという意味です。

$rate = round($rate, 1, PHP_ROUND_HALF_DOWN);

PHP_ROUND_HALF_DOWNを用いているので、仮に少数第二位まで投げたとすると

0.05 → 0.0
0.06 → 0.1

となります。

round関数は四捨五入するための関数なので、わいひら様は四捨五入での実装を判断したのだと思い、

$rate = round($rate, 1);

として、一般的な四捨五入である

0.04 → 0.0
0.05 → 0.1

ではダメなのか?ということでした。

切り捨てるという判断であれば、round関数ではなくfloor関数を用いるべきかと思います。

 

「レビュー評価の表示」というのは、タイトル下のことですか、それとも投稿設定画面の事でしょうか.それともJSON-LDの出力でしょうか。

どれかと言われれば、JSON-LDで用いられている部分です。

アプリ紹介メディアなどを見ても表示上の数値と一致、またはより細かい計算上の数値で出力(4.00、4.00163など)しているので、小数含む適切な数値として扱った方が良いのではないでしょうか。


   
わいひら reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 6年前
投稿: 16655
 

失礼いたしました。
PHP_ROUND_HALF_DOWNに関しては、完全に誤用してました。
勝手に切り捨てだと思い込んでいました。よく見たらハーフダウンですね;
最初floorを使おうと思ったら、少し冗長な描き方になるかなと思ったので、roundのそっちで対応できるのかと勘違いしていました。
floorを使った書き方に修正しておきました。
https://github.com/yhira/cocoon/commit/8c9b675f3a5118948bedd16a483aa3e8a5d3f51a
あと、JSON-LD部分も小数点第一位表示するようにしておきました。


   
ろこ
(@lococo)
Prominent Member Registered
結合: 6年前
投稿: 830
Topic starter  

確認しました。
修正ありがとうございます。


   
わいひら reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 6年前
投稿: 16655
 

ご確認いただきありがとうございます!


   
共有:

問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。

また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。

「いいね!」機能はフォーラム登録者のみが利用できる機能です。

CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。

最近の書き込みはこちら。

詳細なカスタマイズ依頼をするならこちら。

タイトルとURLをコピーしました