Reputation: 1
this is the error warring: count(): parameter must be an array or an object that implement countable in
function larus_user_review_print_review_badge($post_id, $echo = true) {
$rating_type = 'number';
$rating_criteria = get_post_meta( $post_id, 'user_review' . 'rating_criteria', true );
$rating_criteria_count = count($rating_criteria);
$output = '';
$score_array = array();
if($rating_criteria){
foreach ($rating_criteria as $criteria) {
$score_array []= $criteria['score'];
}
}
$final_score = array_sum($score_array);
$final_score = $final_score / $rating_criteria_count;
$final_score = number_format($final_score, 1, '.', '') + 0;
$final_bar = array_sum($score_array) / $rating_criteria_count;
$final_bar = $final_bar * 10;
if($rating_criteria){
$output = '<div class="jl_review_wrapper"><div class="jl_rating_front" data-percent="'.$final_bar.'"><span class="jl_rating_value">'. larus_user_review_calculate_score($final_score, $rating_type, true).'</span></div></div>';
}
if($echo == 'true') :
print $output;
else :
return $output;
endif;
}
Upvotes: 0
Views: 68
Reputation: 1091
The result of get_post_meta
might be null or anything else, you can cast the result to array to solve the issue.
function larus_user_review_print_review_badge($post_id, $echo = true) {
$rating_type = 'number';
$rating_criteria = get_post_meta( $post_id, 'user_review' . 'rating_criteria', true );
$rating_criteria_count = count((array)$rating_criteria); //<-cast to array
$output = '';
$score_array = array();
...
Upvotes: 1