Custom stock

<?php

// bomendael

// onbackorder_message custom field
add_action('woocommerce_product_options_stock_status', function() {
	woocommerce_wp_text_input(array(
		'id'                => 'onbackorder_message',
		'value'             => get_post_meta(get_the_ID(), 'onbackorder_message', true),
    'label'             => 'In nabestelling melding',
    'placeholder'       => 'dd-mm-yyyy',
		'description'       => 'Wordt getoond als status "in nabestelling" actief is (dag-maand-jaar)'
	));
});
add_action('woocommerce_process_product_meta', function($id, $post) {
	if (!empty($_POST['onbackorder_message'])) {
		update_post_meta($id, 'onbackorder_message', $_POST['onbackorder_message']);
	} else {
		delete_post_meta($id, 'onbackorder_message');
	}
}, 10, 2);

// onbackorder_message custom field for variations
add_action( 'woocommerce_variation_options_pricing', function($loop, $variation_data, $variation) {
	woocommerce_wp_text_input(array(
		'id'                => 'onbackorder_message[' . $loop . ']',
		'value'             => get_post_meta($variation->ID, 'onbackorder_message', true),
    'label'             => 'In nabestelling melding',
    'placeholder'       => 'dd-mm-yyyy',
		'wrapper_class'			=> 'form-row form-row-wide',
		'description'       => 'Wordt getoond als status "in nabestelling" actief is (dag-maand-jaar)'
	));
}, 10, 3);
add_action('woocommerce_save_product_variation', function($variation_id, $i) {
	$custom_field = $_POST['onbackorder_message'][$i];
	if (isset($custom_field)) {
			update_post_meta($variation_id, 'onbackorder_message', esc_attr($custom_field));
	}
}, 10, 2);


// MH

// custom stock message for variations
add_filter( 'woocommerce_available_variation', function($variation) {
	$wc_variation = wc_get_product( $variation['variation_id'] );

	if ( $variation['is_in_stock'] ) {
		if($wc_variation->get_stock_status() == 'instock') {
			$availability_html = '<div class="s7box__stock">Op voorraad</div>';
		} else {
      $availability_html = '<div class="s7box__stock d-inline mr-1">In bestelling</div>';
      if($onbackorder_message = get_post_meta($variation[ 'variation_id' ], 'onbackorder_message', true)) {
				if(strtotime($onbackorder_message) > strtotime(date('d-m-Y'))) {
					$availability_html .= '<span class="fs-sm">(verwacht: ' . $onbackorder_message . ')</span>';
				}
      }
		}
	} else {
		$availability_html = '<div class="s7box__stock s7box__stock--unavailable">Niet op voorraad</div>';
	}
	
	$variation['availability_html'] = $availability_html;
	return $variation;
});

// onbackorder_message custom field
add_action('woocommerce_product_options_stock_status', function() {
	woocommerce_wp_text_input(array(
		'id'                => 'onbackorder_message',
		'value'             => get_post_meta(get_the_ID(), 'onbackorder_message', true),
    'label'             => 'In nabestelling melding',
    'placeholder'       => 'dd-mm-yyyy',
		'description'       => 'Wordt getoond als status "in nabestelling" actief is (dag-maand-jaar)'
	));
});
add_action('woocommerce_process_product_meta', function($id, $post) {
	if (!empty($_POST['onbackorder_message'])) {
		update_post_meta($id, 'onbackorder_message', $_POST['onbackorder_message']);
	} else {
		delete_post_meta($id, 'onbackorder_message');
	}
}, 10, 2);

// onbackorder_message custom field for variations
add_action( 'woocommerce_variation_options_pricing', function($loop, $variation_data, $variation) {
	woocommerce_wp_text_input(array(
		'id'                => 'onbackorder_message[' . $loop . ']',
		'value'             => get_post_meta($variation->ID, 'onbackorder_message', true),
    'label'             => 'In nabestelling melding',
    'placeholder'       => 'dd-mm-yyyy',
		'wrapper_class'			=> 'form-row form-row-wide',
		'description'       => 'Wordt getoond als status "in nabestelling" actief is (dag-maand-jaar)'
	));
}, 10, 3);
add_action('woocommerce_save_product_variation', function($variation_id, $i) {
	$custom_field = $_POST['onbackorder_message'][$i];
	if (isset($custom_field)) {
			update_post_meta($variation_id, 'onbackorder_message', esc_attr($custom_field));
	}
}, 10, 2);
Last Updated:
Contributors: Niek Vlam, Suite Seven