Automattic\WooCommerce\Database\Migrations\CustomOrderTable
CLIRunner::diff()
Displays differences for an order between the HPOS and post datastore.
OPTIONS
- <order_id>
- The ID of the order.
- [--format=<format>]
- Render output in a particular format.
--- default: table options:
- table
- csv
- json
- yaml
EXAMPLES
# Find differences between datastores for order 123. $ wp wc hpos diff 123
# Find differences for order 123 and display as CSV. $ wp wc hpos diff 123 --format=csv
Method of the class: CLIRunner{}
No Hooks.
Return
null
. Nothing (null).
Usage
$CLIRunner = new CLIRunner(); $CLIRunner->diff( $args, $assoc_args );
- $args(array)
- Positional arguments passed to the command.
Default: array() - $assoc_args(array)
- Associative arguments (options) passed to the command.
Default: array()
Changelog
Since 8.6.0 | Introduced. |
CLIRunner::diff() CLIRunner::diff code WC 9.7.1
public function diff( array $args = array(), array $assoc_args = array() ) { $id = absint( $args[0] ); try { $diff = wc_get_container()->get( LegacyDataHandler::class )->get_diff_for_order( $id ); } catch ( \Exception $e ) { // translators: %1$d is an order ID, %2$s is an error message. WP_CLI::error( sprintf( __( 'An error occurred while computing a diff for order %1$d: %2$s', 'woocommerce' ), $id, $e->getMessage() ) ); } if ( ! $diff ) { WP_CLI::success( __( 'No differences found.', 'woocommerce' ) ); return; } // Format the diff array. $diff = array_map( function ( $key, $hpos_value, $cpt_value ) { // Format for dates. $hpos_value = is_a( $hpos_value, \WC_DateTime::class ) ? $hpos_value->format( DATE_ATOM ) : $hpos_value; $cpt_value = is_a( $cpt_value, \WC_DateTime::class ) ? $cpt_value->format( DATE_ATOM ) : $cpt_value; // Format for NULL. $hpos_value = is_null( $hpos_value ) ? '' : $hpos_value; $cpt_value = is_null( $cpt_value ) ? '' : $cpt_value; return array( 'property' => $key, 'hpos' => $hpos_value, 'post' => $cpt_value, ); }, array_keys( $diff ), array_column( $diff, 0 ), array_column( $diff, 1 ), ); WP_CLI::warning( // translators: %d is an order ID. sprintf( __( 'Differences found for order %d:', 'woocommerce' ), $id ) ); WP_CLI\Utils\format_items( $assoc_args['format'] ?? 'table', $diff, array( 'property', 'hpos', 'post' ) ); }