前提・実現したいこと
カスタムしたコメントフォームにレビュー機能として評価を取り入れたいと思っています。
その評価の平均をぞのページへ掲載したいと考えています。
参照ページhttps://teratail.com/questions/202363
ショートコードを全てのページ(1ページ1つの商品を紹介しているページ)にコメントがあった場合平均値を表示させたいので、ショートコードを入れたのですが
コメントが投稿されているページでは問題なく平均値が表示できるのですが
まだ投稿されていないページにエラーメッセージが表示されてしまいます。
追記
コメントが投稿されていない場合、「0」と表示させたいです。「0」の前後に言葉が入るので「0」と表示が出るようにしたいです。
問題になっているソース以外で同様の値を取得できる方法はありますでしょうか?
発生している問題・エラーメッセージ
array_sum() expects parameter 1 to be array, null given in count(): Parameter must be an array or an object that implements Countable in Division by zero in 修正後 count(): Parameter must be an array or an object that implements Countable in のエラーが出ています。
該当のソースコード
修正後のソース
function fc_ratingstarFunc($atts) { global $post;
$args = array(
'post_id' => get_the_ID(),
);
$comments = get_comments( $args );
//下記追加
if(isset($comments)){
foreach( $comments as $comment) {
$array[] = get_comment_meta( $comment->comment_ID, 'comment-ratingstar', True );
}
//下記に修正 return array_sum( $array) / count( $array);
return count($array)> 0? array_sum( $array) / count( $array):"";
}
} add_shortcode('sc_ratingstar', 'fc_ratingstarFunc');
試したこと
コメントが投稿されていない場合arrayの中が0になってしまいエラーが出ていると考えています。
コメントがまだ投稿されていなければ平均値を取得しない、if何々ならばスルーするということだと思いますが、タグなどほとんどわからない初心者の為
どのように書けばよいのかわかりません。
よろしければご教授ねがいたいのですがよろしくお願いします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー