From f5eeb244aadcb79817f7bc498f1366f0aa2ad859 Mon Sep 17 00:00:00 2001 From: Bram Driesen Date: Thu, 21 Aug 2025 19:18:30 +0200 Subject: [PATCH 1/4] feat: Add WP CLI logic --- wp-batch-processing.php | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/wp-batch-processing.php b/wp-batch-processing.php index d96d188..48b446e 100644 --- a/wp-batch-processing.php +++ b/wp-batch-processing.php @@ -14,6 +14,22 @@ die; } +require_once 'includes/class-bp-helper.php'; +require_once 'includes/class-bp-singleton.php'; +require_once 'includes/class-batch-item.php'; +require_once 'includes/class-batch.php'; +require_once 'includes/class-batch-processor.php'; +require_once 'includes/class-batch-ajax-handler.php'; +require_once 'includes/class-batch-list-table.php'; +require_once 'includes/class-batch-processor-admin.php'; + +if ( defined( 'WP_CLI' ) && WP_CLI ) { + require_once 'includes/class-wp-cli.php'; + + $wp_cli_command = new Batch_Processor_CLI_Command(); + WP_CLI::add_command( 'batch_process', $wp_cli_command ); +} + if ( ! is_admin() ) { return; } @@ -26,15 +42,6 @@ define( 'WP_BP_URL', plugin_dir_url( __FILE__ ) ); } -require_once 'includes/class-bp-helper.php'; -require_once 'includes/class-bp-singleton.php'; -require_once 'includes/class-batch-item.php'; -require_once 'includes/class-batch.php'; -require_once 'includes/class-batch-processor.php'; -require_once 'includes/class-batch-ajax-handler.php'; -require_once 'includes/class-batch-list-table.php'; -require_once 'includes/class-batch-processor-admin.php'; - WP_Batch_Processor::boot(); // Examples From 8147a9f15b08330a3166d109e82302a7e7e4670c Mon Sep 17 00:00:00 2001 From: Bram Driesen Date: Thu, 21 Aug 2025 19:20:19 +0200 Subject: [PATCH 2/4] feat: Added CLI command --- includes/class-wp-cli.php | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 includes/class-wp-cli.php diff --git a/includes/class-wp-cli.php b/includes/class-wp-cli.php new file mode 100644 index 0000000..56cd846 --- /dev/null +++ b/includes/class-wp-cli.php @@ -0,0 +1,55 @@ + + * : The unique ID of the batch to run. + * + * ## EXAMPLES + * + * wp batch_process email_post_authors + */ + public function __invoke( $args, $assoc_args ) { + list( $batch_id ) = $args; + do_action( 'wp_batch_processing_init' ); + + $batch = WP_Batch_Processor::get_instance()->get_batch($batch_id); + if ( !$batch ) { + WP_CLI::error( "Batch with ID '{$batch_id}' not found." ); + return; + } + + WP_CLI::log( "Starting processing batch: {$batch_id} with {$batch->get_items_count()} items" ); + + $batch_items = $batch->get_all_items(); + $progress = WP_CLI\Utils\make_progress_bar( "Processing batch items", $batch->get_items_count() ); + + /** @var WP_Batch_Item $item */ + foreach ( $batch_items as $item ) { + // Process each item in the batch. + try { + if ( !$batch->is_processed( $item ) ) { + $batch->process( $item ); + $batch->mark_as_processed( $item->id ); + } + } catch ( Exception $e ) { + WP_CLI::warning( "Error processing item ID {$item->id}: " . $e->getMessage() ); + } + $progress->tick(); + } + + WP_CLI::success( "Batch '{$batch_id}' processing complete." ); + } +} From addb91d4e7ac5bf15287abef631caa9d4cbb700e Mon Sep 17 00:00:00 2001 From: Bram Driesen Date: Thu, 21 Aug 2025 22:49:40 +0200 Subject: [PATCH 3/4] fix: rename --- includes/class-wp-cli.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wp-cli.php b/includes/class-wp-cli.php index 56cd846..3306859 100644 --- a/includes/class-wp-cli.php +++ b/includes/class-wp-cli.php @@ -7,7 +7,7 @@ /** * Class Batch_Processor_CLI_Command(). */ -class Batch_Processor_CLI_Command extends WP_CLI_Command { +class WP_Batch_Processor_CLI_Command extends WP_CLI_Command { /** * Process a registered batch by ID. From f8c68995b593211425687136f0d5a7b506d5cdcd Mon Sep 17 00:00:00 2001 From: Bram Driesen Date: Thu, 21 Aug 2025 22:50:08 +0200 Subject: [PATCH 4/4] fix: rename --- wp-batch-processing.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wp-batch-processing.php b/wp-batch-processing.php index 48b446e..83e0530 100644 --- a/wp-batch-processing.php +++ b/wp-batch-processing.php @@ -26,7 +26,7 @@ if ( defined( 'WP_CLI' ) && WP_CLI ) { require_once 'includes/class-wp-cli.php'; - $wp_cli_command = new Batch_Processor_CLI_Command(); + $wp_cli_command = new WP_Batch_Processor_CLI_Command(); WP_CLI::add_command( 'batch_process', $wp_cli_command ); } @@ -46,3 +46,4 @@ // Examples // require_once 'examples/class-example-batch.php'; +