Automattic\WooCommerce\Internal\CLI\Migrator\Core
ProductsController::simulate_import_batch
Simulate the import process for dry-run mode.
Method of the class: ProductsController{}
No Hooks.
Returns
Array. Simulated batch results matching real import format.
Usage
// private - for code of main (parent) class only $result = $this->simulate_import_batch( $mapped_products ): array;
- $mapped_products(array) (required)
- Array of mapped product data.
ProductsController::simulate_import_batch() ProductsController::simulate import batch code WC 10.8.1
private function simulate_import_batch( array $mapped_products ): array {
$results = array();
$stats = array(
'successful' => 0,
'failed' => 0,
'skipped' => 0,
);
foreach ( $mapped_products as $product_data ) {
$product_name = $product_data['name'] ?? 'Unknown Product';
if ( empty( $product_data['name'] ) ) {
$results[] = array(
'status' => 'error',
'message' => 'Product name is required',
'data' => $product_data,
);
++$stats['failed'];
$this->simulate_stats_increment( 'errors_encountered' );
continue;
}
$existing_product_id = null;
if ( ! empty( $product_data['sku'] ) ) {
$existing_product_id = wc_get_product_id_by_sku( $product_data['sku'] );
}
$would_skip = false;
if ( $existing_product_id && $this->parsed_args['skip_existing'] ) {
$would_skip = true;
}
if ( $would_skip ) {
$results[] = array(
'status' => 'skipped',
'message' => "Product '{$product_name}' would be skipped (already exists)",
'data' => $product_data,
);
++$stats['skipped'];
$this->simulate_stats_increment( 'products_skipped' );
} else {
$results[] = array(
'status' => 'success',
'message' => "Product '{$product_name}' would be imported",
'data' => $product_data,
);
++$stats['successful'];
if ( $existing_product_id ) {
$this->simulate_stats_increment( 'products_updated' );
} else {
$this->simulate_stats_increment( 'products_created' );
}
if ( in_array( 'images', $this->fields_to_process, true ) && ! empty( $product_data['images'] ) ) {
$image_count = is_array( $product_data['images'] ) ? count( $product_data['images'] ) : 1;
for ( $i = 0; $i < $image_count; $i++ ) {
$this->simulate_stats_increment( 'images_processed' );
}
}
}
wc_get_logger()->info( "DRY RUN: Would import product '{$product_name}'", array( 'source' => 'wc-migrator' ) );
}
return array(
'results' => $results,
'stats' => $stats,
);
}