Automattic\WooCommerce\Internal\DataStores\Orders

OrdersTableDataStore::maybe_create_backup_postprotectedWC 8.8.0

Takes care of creating the backup post in the posts table (placeholder or actual order post, depending on sync settings).

Method of the class: OrdersTableDataStore{}

No Hooks.

Returns

Int. The new post ID.

Usage

// protected - for code of main (parent) or child class
$result = $this->maybe_create_backup_post( $order, $context ): int;
$order(WC_Abstract_Order) (required) (passed by reference — &)
The order.
$context(string) (required)
The context: either 'create' or 'backfill'.

Changelog

Since 8.8.0 Introduced.

OrdersTableDataStore::maybe_create_backup_post() code WC 10.4.3

protected function maybe_create_backup_post( &$order, string $context ): int {
	$data_sync = wc_get_container()->get( DataSynchronizer::class );

	$data = array(
		'post_type'     => $data_sync->data_sync_is_enabled() ? $order->get_type() : $data_sync::PLACEHOLDER_ORDER_POST_TYPE,
		'post_status'   => 'draft',
		'post_parent'   => $order->get_changes()['parent_id'] ?? $order->get_data()['parent_id'] ?? 0,
		'post_date'     => gmdate( 'Y-m-d H:i:s', $order->get_date_created( 'edit' )->getOffsetTimestamp() ),
		'post_date_gmt' => gmdate( 'Y-m-d H:i:s', $order->get_date_created( 'edit' )->getTimestamp() ),
	);

	if ( 'backfill' === $context ) {
		if ( ! $order->get_id() ) {
			return 0;
		}

		$data['import_id'] = $order->get_id();
	}

	return wp_insert_post( $data );
}