Automattic\WooCommerce\Internal\Fulfillments

FulfillmentsController::delete_legacy_order_fulfillment_metaprivateWC 1.0

Delete fulfillment status meta from legacy postmeta table.

Method of the class: FulfillmentsController{}

No Hooks.

Returns

null. Nothing (null).

Usage

// private - for code of main (parent) class only
$result = $this->delete_legacy_order_fulfillment_meta( $order_ids );
$order_ids(array)
Array of order IDs to delete fulfillment status meta for.
Default: array()

FulfillmentsController::delete_legacy_order_fulfillment_meta() code WC 10.3.3

private function delete_legacy_order_fulfillment_meta( $order_ids = array() ) {
	global $wpdb;

	if ( ! empty( $order_ids ) ) {
		$order_params = array_merge( array( '_fulfillment_status' ), $order_ids );
		$wpdb->query(
			$wpdb->prepare(
				"DELETE pm FROM {$wpdb->postmeta} pm
				INNER JOIN {$wpdb->posts} p ON pm.post_id = p.ID
				WHERE p.post_type = 'shop_order'
				AND pm.meta_key = %s
				AND pm.post_id IN (" . implode( ',', array_fill( 0, count( $order_ids ), '%d' ) ) . ')',
				...$order_params
			)
		);
	} else {
		$wpdb->query(
			$wpdb->prepare(
				"DELETE pm FROM {$wpdb->postmeta} pm
				INNER JOIN {$wpdb->posts} p ON pm.post_id = p.ID
				WHERE p.post_type = 'shop_order'
				AND pm.meta_key = %s",
				'_fulfillment_status'
			)
		);
	}
}