Automattic\WooCommerce\Database\Migrations\CustomOrderTable
CLIRunner::sync()
Sync order data between the custom order tables and the core WordPress post tables.
OPTIONS
- [--batch-size=<batch-size>]
- The number of orders to process in each batch.
--- default: 500
---
EXAMPLES
wp wc hpos sync --batch-size=500
Метод класса: CLIRunner{}
Хуков нет.
Возвращает
null
. Ничего (null).
Использование
$CLIRunner = new CLIRunner(); $CLIRunner->sync( $args, $assoc_args );
- $args(массив)
- Positional arguments passed to the command.
По умолчанию: array() - $assoc_args(массив)
- Associative arguments (options) passed to the command.
По умолчанию: array()
Код CLIRunner::sync() CLIRunner::sync WC 9.2.3
public function sync( $args = array(), $assoc_args = array() ) { if ( ! $this->synchronizer->check_orders_table_exists() ) { WP_CLI::warning( __( 'Custom order tables does not exist, creating...', 'woocommerce' ) ); $this->synchronizer->create_database_tables(); if ( $this->synchronizer->check_orders_table_exists() ) { WP_CLI::success( __( 'Custom order tables were created successfully.', 'woocommerce' ) ); } else { WP_CLI::error( __( 'Custom order tables could not be created.', 'woocommerce' ) ); } } $order_count = $this->count_unmigrated(); // Abort if there are no orders to migrate. if ( ! $order_count ) { return WP_CLI::warning( __( 'There are no orders to sync, aborting.', 'woocommerce' ) ); } $assoc_args = wp_parse_args( $assoc_args, array( 'batch-size' => 500, ) ); $batch_size = ( (int) $assoc_args['batch-size'] ) === 0 ? 500 : (int) $assoc_args['batch-size']; $progress = WP_CLI\Utils\make_progress_bar( 'Order Data Sync', $order_count / $batch_size ); $processed = 0; $batch_count = 1; $total_time = 0; $orders_remaining = true; while ( $order_count > 0 || $orders_remaining ) { $remaining_count = $order_count; WP_CLI::debug( sprintf( /* Translators: %1$d is the batch number and %2$d is the batch size. */ __( 'Beginning batch #%1$d (%2$d orders/batch).', 'woocommerce' ), $batch_count, $batch_size ) ); $batch_start_time = microtime( true ); $order_ids = $this->synchronizer->get_next_batch_to_process( $batch_size ); if ( count( $order_ids ) ) { $this->synchronizer->process_batch( $order_ids ); } $processed += count( $order_ids ); $batch_total_time = microtime( true ) - $batch_start_time; WP_CLI::debug( sprintf( // Translators: %1$d is the batch number, %2$d is the number of processed orders and %3$d is the execution time in seconds. __( 'Batch %1$d (%2$d orders) completed in %3$d seconds', 'woocommerce' ), $batch_count, count( $order_ids ), $batch_total_time ) ); ++$batch_count; $total_time += $batch_total_time; $progress->tick(); $orders_remaining = count( $this->synchronizer->get_next_batch_to_process( 1 ) ) > 0; $order_count = $remaining_count - $batch_size; $this->free_in_memory_usage(); } $progress->finish(); // Issue a warning if no orders were migrated. if ( ! $processed ) { return WP_CLI::warning( __( 'No orders were synced.', 'woocommerce' ) ); } WP_CLI::log( __( 'Sync completed.', 'woocommerce' ) ); return WP_CLI::success( sprintf( /* Translators: %1$d is the number of migrated orders and %2$d is the execution time in seconds. */ _n( '%1$d order was synced in %2$d seconds.', '%1$d orders were synced in %2$d seconds.', $processed, 'woocommerce' ), $processed, $total_time ) ); }