Automattic\WooCommerce\Internal\DataStores\Orders

OrdersTableDataStore::maybe_create_backup_post()protectedWC 8.8.0

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

Метод класса: OrdersTableDataStore{}

Хуков нет.

Возвращает

int. The new post ID.

Использование

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->maybe_create_backup_post( $order, $context ): int;
$order(\WC_Abstract_Order) (обязательный) (передается по ссылке — &)
The order.
$context(строка) (обязательный)
The context: either 'create' or 'backfill'.

Список изменений

С версии 8.8.0 Введена.

Код OrdersTableDataStore::maybe_create_backup_post() WC 9.7.1

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 );
}