wc_maybe_schedule_sale_events_on_meta_change()WC 10.8.0

Schedule sale events when sale date meta is added, updated, or deleted.

Hooks into post meta operations so per-product sale events are kept in sync regardless of how the meta is written: WooCommerce CRUD, direct update_post_meta() calls from importers, ERP sync tools, or custom code.

No Hooks.

Returns

null. Nothing (null).

Usage

wc_maybe_schedule_sale_events_on_meta_change( $meta_id, $object_id, $meta_key ): void;
$meta_id(int|int[]) (required)
Meta ID (or array of IDs for delete).
$object_id(int) (required)
Post ID.
$meta_key(string) (required)
Meta key.

Changelog

Since 10.8.0 Introduced.

wc_maybe_schedule_sale_events_on_meta_change() code WC 10.9.1

function wc_maybe_schedule_sale_events_on_meta_change( $meta_id, $object_id, $meta_key ): void { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
	if ( '_sale_price_dates_from' !== $meta_key && '_sale_price_dates_to' !== $meta_key ) {
		return;
	}

	// Prevent duplicate scheduling when a sale handler's save() rewrites dates already in flight.
	if ( doing_action( 'wc_product_start_scheduled_sale' ) || doing_action( 'wc_product_end_scheduled_sale' ) ) {
		return;
	}

	$post_type = get_post_type( $object_id );
	if ( 'product' !== $post_type && 'product_variation' !== $post_type ) {
		return;
	}

	wc_maybe_schedule_product_sale_events( $object_id );
}