add_filter( 'woocommerce_post_class', 'igotflue_dynamic_badge_classes', 20, 2 );

function igotflue_dynamic_badge_classes( $classes, $product ) {
	if ( ! $product instanceof WC_Product ) {
		return $classes;
	}

	$product_id  = $product->get_parent_id() ? $product->get_parent_id() : $product->get_id();
	$is_preorder = has_term( 'pre-order', 'product_tag', $product_id ) || 'onbackorder' === $product->get_stock_status();

	if ( $is_preorder ) {
		$classes[] = 'igf-badge-preorder';
		return $classes;
	}

	$created  = $product->get_date_created();
	$new_days = 30;

	if ( $created && ( time() - $created->getTimestamp() ) < $new_days * DAY_IN_SECONDS ) {
		$classes[] = 'igf-badge-new';
	}

	return $classes;
}
