I guess the problem is here.
$slug = $term->slug;
$explodedSlug = explode('-', $_slug);
you are passing an undefined array $_slug
to explode
function. the correct array is $slug
. so your complete code should be something like below.
function revised_featured_courses_query() {
$meta_query = WC()->query->get_meta_query();
$tax_query = WC()->query->get_tax_query();
$tax_query[] = array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => 'featured',
'operator' => 'IN',
);
$args = array(
'post_type' => 'product',
'stock' => 1,
'showposts' => 3,
'orderby' => 'rand',
'order' => 'DESC',
'meta_query' => $meta_query,
'tax_query' => $tax_query
);
$featured_query = new WP_Query( $args );
if ($featured_query->have_posts()) :
$html_out="<ul class="products">";
while ($featured_query->have_posts()) : $featured_query->the_post();
$id = get_the_ID(); // or use $post->ID
$terms = get_the_term( $id, 'product_cat' );
foreach ($terms as $term ) {
$slug = $term->slug;
$explodedSlugs[] = explode( '-', $slug );
}
// Your other codes goes here.
$html_out .= '<li class=""><div class="entry-product">';
$html_out .= '<div class="course-level">';
foreach ($explodedSlugs as $slug ) {
$html_out .= $slug[1];
}
$html_out .= '</div>';
$html_out .= '</div></li>';
endwhile;
$html_out .= '</ul>';
endif;
//wp_reset_query();
return $html_out;
}