...] * : Attachment IDs. Leave empty to optimize all pending images. * * [--force] * : Re-optimize already optimized images. * * ## EXAMPLES * * wp spinix-images optimize * wp spinix-images optimize 12 15 --force * * @param array $args Args. * @param array $assoc Assoc args. */ public function optimize( $args, $assoc ) { $force = ! empty( $assoc['force'] ); if ( $args ) { foreach ( $args as $id ) { $r = Spinix_Image_Optimization_Optimizer::optimize( (int) $id, $force ); WP_CLI::log( sprintf( '#%d %s: %s', $id, $r['status'], $r['message'] ) ); } return; } $count = 0; $ids = Spinix_Image_Optimization_Bulk::pending_ids( 20 ); while ( $ids ) { foreach ( $ids as $id ) { $r = Spinix_Image_Optimization_Optimizer::optimize( $id, $force ); Spinix_Image_Optimization_Bulk::log( array( $r ) ); WP_CLI::log( sprintf( '#%d %s: %s', $id, $r['status'], $r['message'] ) ); ++$count; } $ids = Spinix_Image_Optimization_Bulk::pending_ids( 20 ); } if ( 'running' === Spinix_Image_Optimization_Bulk::state() ) { Spinix_Image_Optimization_Bulk::complete(); } WP_CLI::success( sprintf( '%d images processed.', $count ) ); } /** * Show library stats. * * [--format=] * : table or json. Default table. * * @param array $args Args. * @param array $assoc Assoc args. */ public function status( $args, $assoc ) { $s = Spinix_Image_Optimization_Stats::get(); if ( isset( $assoc['format'] ) && 'json' === $assoc['format'] ) { WP_CLI::line( wp_json_encode( $s ) ); return; } $rows = array(); foreach ( $s as $k => $v ) { $rows[] = array( 'key' => $k, 'value' => $v, ); } WP_CLI\Utils\format_items( 'table', $rows, array( 'key', 'value' ) ); } /** * Delete all Spinix files and data. Originals are not touched. * * [--yes] * : Skip confirmation. * * @param array $args Args. * @param array $assoc Assoc args. */ public function reset( $args, $assoc ) { WP_CLI::confirm( 'Delete all Spinix WebP files and data?', $assoc ); foreach ( array( Spinix_Image_Optimization_Optimizer::META_STATUS, Spinix_Image_Optimization_Optimizer::META_DATA, Spinix_Image_Optimization_Optimizer::META_BEFORE, Spinix_Image_Optimization_Optimizer::META_AFTER, Spinix_Image_Optimization_Optimizer::META_ERROR ) as $key ) { delete_metadata( 'post', 0, $key, '', true ); } Spinix_Image_Optimization_Storage::delete_all(); update_option( Spinix_Image_Optimization_Bulk::STATE_OPTION, 'idle', false ); Spinix_Image_Optimization_Bulk::timing_clear(); WP_CLI::success( 'Spinix data removed.' ); } } WP_CLI::add_command( 'spinix-images', 'Spinix_Image_Optimization_CLI' );