Woocommerce: Adding custom fields to existing panels (with date-picker) + Add to Out-of-stock availability text


/*
Adding custom fields to existing panels
awhitepixel.com/blog/woocommerce-product-data-custom-fields-tabs/
*/
add_action('woocommerce_product_options_inventory_product_data', function() {
	wp_enqueue_script( 'jquery-ui-datepicker' );
	woocommerce_wp_text_input([
			'id' => 'date_of_availability',
			'label' => __('Available from', 'txtdomain'),
			'class' => 'date-picker',
			'wrapper_class' => 'show_if_outofstock',
	]);
});

add_action('woocommerce_process_product_meta', function($post_id) {
	$product = wc_get_product($post_id);
	$date_of_availability = isset($_POST['date_of_availability']) ? $_POST['date_of_availability'] : '';
	$product->update_meta_data('date_of_availability', sanitize_text_field($date_of_availability));
	$product->save();
});

/*
Add to Out-of-stock availability text, an availability date in Woocommerce single products
https://stackoverflow.com/questions/55208262/add-to-out-of-stock-availability-text-an-availability-date-in-woocommerce-singl
*/
add_filter( 'woocommerce_get_availability_text', 'filter_product_availability_text', 10, 2);
function filter_product_availability_text( $availability, $product ) {
	$date_of_availability = $product->get_meta('date_of_availability');

    if ( ! $product->is_in_stock() && ! empty($date_of_availability) ) {
        $availability .= ' <span style="color:#e2401c;"><strong>(' . __('Available from:', 'flatsome') . ' </strong>' . $date_of_availability . ')</span>';
    }
    return $availability;
}
Woocommerce: Adding custom fields to existing panels (with date-picker) + Add to Out-of-stock availability text

Woocommerce: Adding custom fields to existing panels (with date-picker) + Add to Out-of-stock availability text