Can anyone tell me what went wrong in the code below to cause the Warning: Invalid argument supplied for foreach(). And how do I fix it? This is a script from the Ultimate Membership Pro plugin ‘shortcode.php’.
foreach ($data['custom_fields'] as $key => $value) {
if (empty($data['custom_fields'][$key])){
unset($data['custom_fields'][$key]);
}
}
if (!empty($data['levels'])){
$fullPath = IHC_PATH . 'public/views/membership_card.php';
$searchFilename = 'membership_card.php';
$template = apply_filters('ihc_filter_on_load_template', $fullPath, $searchFilename );
wp_enqueue_script( 'ihc-print-this' );
if (!empty($data['metas']['ihc_membership_card_custom_css'])){
$output .=
"<style>".
stripslashes($data['metas']['ihc_membership_card_custom_css'])
."</style>";
}
$output .= ' <script>
var printhisopt = {
importCSS: true,
importStyle: true,
loadCSS:"'.IHC_URL.'assets/css/style.css",
debug: false,
printContainer: true,
pageTitle: "",
removeInline: true,
printDelay: 333,
header: null,
formValues: false,
};
jQuery(document).ready(function(){
jQuery(".fa-print-ihc").on("click", function(e){
var idToPrint = jQuery( e.target ).attr( "data-id-to-print" );
jQuery( "#" + idToPrint ).printThis(printhisopt);
});
});
</script>';
foreach ($data['levels'] as $lid => $level_data){
if (in_array($lid, $exclude_levels)){
continue;
}
ob_start();
include $template;
$output .= ob_get_contents();
ob_end_clean();
}
}else{
$output = '<div class="ihc-additional-message">'. __("No Membership Cards available based on your Subscriptions. SignUp on new Subscriptions or renew the existent one.", 'ihc').'</div>';
}
}
return $output;
Here is the data structure for this foreach
loop.
array(1) { [2]=> array(12) { [“id”]=> string(1) “3” [“user_id”]=> string(1) “4” [“level_id”]=> string(1) “2” [“start_time”]=> string(19) “2021-05-15 19:05:21” [“update_time”]=> string(19) “2021-06-15 19:05:27” [“expire_time”]=> string(19) “2021-06-15 19:05:21” [“notification”]=> string(1) “0” [“status”]=> string(1) “1” [“label”]=> string(7) “Monthly” [“level_slug”]=> string(7) “monthly” [“badge_image_url”]=> string(0) “” [“is_expired”]=> bool(false) } }
Source code file: ufile.io/sux2awvl