Automattic\WooCommerce\Internal\CLI\Migrator\Commands
ProductsCommand::__invoke
The main execution logic for the command.
- [--platform=<platform>]
- The platform to migrate products from.
--- default: shopify
--- - [--count]
- Only fetch and display the total product count.
- [--limit=<limit>]
- Maximum number of products to migrate.
- [--status=<status>]
- Filter products by status (active, archived, draft).
- [--product-type=<product-type>]
- Filter products by type (for Shopify: any product type name, or 'single'/'variable' for WooCommerce equivalents).
- [--vendor=<vendor>]
- Filter products by vendor name.
- [--ids=<ids>]
- Comma-separated list of product IDs to migrate.
- [--batch-size=<size>]
- Number of products to process per batch (default: 20, max: 250).
- [--fields=<fields>]
- Comma-separated list of fields to migrate.
- [--exclude-fields=<fields>]
- Comma-separated list of fields to exclude from migration.
- [--resume]
- Resume from previous migration session without prompting.
- [--skip-existing]
- Skip products that already exist in WooCommerce.
- [--dry-run]
- Perform a dry run without creating products.
- [--verbose]
- Show detailed progress information including warnings and errors.
- [--assign-default-category]
- Assign WooCommerce default category to products that have no categories.
EXAMPLES
wp wc migrate products --count wp wc migrate products --count --status=active wp wc migrate products --count --product-type="T-Shirt" wp wc migrate products --count --vendor="My Brand" wp wc migrate products --limit=100 --batch-size=25 wp wc migrate products --product-type="single" --status=active --limit=50 wp wc migrate products --ids="123,456,789" wp wc migrate products --fields=name,price,sku --resume wp wc migrate products --verbose --limit=50 wp wc migrate products --assign-default-category --limit=100
Method of the class: ProductsCommand{}
No Hooks.
Returns
null. Nothing (null).
Usage
$ProductsCommand = new ProductsCommand(); $ProductsCommand->__invoke( $args, $assoc_args ): void;
- $args(array) (required)
- The positional arguments.
- $assoc_args(array) (required)
- The associative arguments.
ProductsCommand::__invoke() ProductsCommand:: invoke code WC 10.8.1
public function __invoke( array $args, array $assoc_args ): void {
// Resolve and validate the platform.
$platform = $this->platform_registry->resolve_platform( $assoc_args );
$platform_display_name = $this->platform_registry->get_platform_display_name( $platform );
if ( ! $this->credential_manager->has_credentials( $platform ) ) {
WP_CLI::log( "Credentials for '{$platform_display_name}' not found. Let's set them up." );
// Get platform-specific credential fields and set them up.
$required_fields = $this->platform_registry->get_platform_credential_fields( $platform );
if ( empty( $required_fields ) ) {
WP_CLI::error( "The platform '{$platform_display_name}' does not have configured credential fields." );
return;
}
$this->credential_manager->setup_credentials( $platform, $required_fields );
WP_CLI::success( 'Credentials saved successfully. Please run the command again to begin the migration.' );
return;
}
// Handle count request if specified.
if ( isset( $assoc_args['count'] ) ) {
$this->handle_count_request( $platform, $platform_display_name, $assoc_args );
return;
}
// Delegate actual migration logic to ProductsController with resolved platform.
$this->products_controller->migrate_products( $assoc_args, $platform );
}