Created
August 18, 2020 20:01
-
-
Save jbrinley/1978e95e7b4dffce05388fdc57661f99 to your computer and use it in GitHub Desktop.
Run this from a WP CLI shell to generate sample item code data for all local products.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use Tribe\Project\Post_Meta\Catalog_Integration; | |
use Tribe\Project\Post_Types\Product\Product; | |
use Tribe\Project\Taxonomies\Item_Code\Item_Code; | |
use Tribe\Project\Taxonomies\Spec_Field\Spec_Field; | |
use Tribe\Project\Taxonomies\Warranty\Warranty; | |
use Tribe\Project\Taxonomy_Meta\Spec_Field_Attributes; | |
function localdev_populate_itemcodes() { | |
$fields = [ | |
'height' => 'Height', | |
'width' => 'Width', | |
'depth' => 'Depth', | |
'seatheight' => 'Seat Height', | |
'weight' => 'Product Weight', | |
'steelcasestyle' => 'Steelcase Style', | |
'manufacturerstyle' => 'Manufacturer Style', | |
'leadtime' => 'Lead Time', | |
'warranty' => 'Warranty', | |
'material' => 'Material', | |
'certifications' => 'Certifications', | |
'countryavailability' => 'Country Availability', | |
]; | |
foreach ( $fields as $key => $label ) { | |
if ( ! term_exists( $key, Spec_Field::NAME ) ) { | |
$term = wp_insert_term( $label, Spec_Field::NAME, [ | |
'slug' => $key, | |
] ); | |
update_term_meta( $term['term_id'], Spec_Field_Attributes::GROUPING, Spec_Field_Attributes::INFO ); | |
} | |
} | |
$products_without_item_codes = get_posts( [ | |
'fields' => 'ids', | |
'posts_per_page' => - 1, | |
'post_type' => Product::NAME, | |
'post_status' => 'publish', | |
'tax_query' => [ | |
[ | |
'taxonomy' => Item_Code::NAME, | |
'operator' => 'NOT EXISTS', | |
], | |
], | |
] ); | |
foreach ( [ 'Steelcase Standard', 'Manufacturer' ] as $warranty ) { | |
if ( ! term_exists( $warranty, Warranty::NAME ) ) { | |
wp_insert_term( $warranty, Warranty::NAME ); | |
} | |
} | |
foreach ( $products_without_item_codes as $post_id ) { | |
$title = get_the_title( $post_id ); | |
\WP_CLI::log( 'Generating item code for ' . $title ); | |
$item_code = preg_replace( '/\W/', '_', strtoupper( $title ) ); | |
$term_data = term_exists( $item_code, Item_Code::NAME ); | |
if ( $term_data ) { | |
\WP_CLI::warning( sprintf( 'Item code %s already exists. Skipping...', $item_code ) ); | |
continue; | |
} | |
$term_data = wp_insert_term( $item_code, Item_Code::NAME ); | |
$item_code_id = (int) $term_data['term_id']; | |
if ( ! $item_code_id ) { | |
\WP_CLI::warning( sprintf( 'Unable to create item code %s. Skipping...', $item_code ) ); | |
continue; | |
} | |
wp_set_object_terms( $post_id, [ $item_code_id ], Item_Code::NAME ); | |
$specs = [ | |
'depth' => [ sprintf( '%d in', random_int( 10, 40 ) ) ], | |
'weight' => [ sprintf( '%d lb', random_int( 10, 40 ) ) ], | |
'width' => [ sprintf( '%d in', random_int( 10, 40 ) ) ], | |
'warranty' => [ [ 'Steelcase Standard', 'Manufacturer' ][ random_int( 0, 1 ) ] ], | |
'material' => [ [ 'Plastic', 'Fabric' ][ random_int( 0, 1 ) ] ], | |
'manufacturerstyle' => [ $item_code ], | |
'certifications' => [ [ 'BIFMA - Yes', 'SCS Indoor Advantage Gold' ][ random_int( 0, 1 ) ] ], | |
'countryavailability' => [ [ 'USA', 'CAN', 'MEX' ][ random_int( 0, 2 ) ] ], | |
'color' => [ [ 'Red', 'Green', 'Blue' ][ random_int( 0, 2 ) ] ], | |
'style' => [ [ 'Modern', 'Classic', 'Victorian' ][ random_int( 0, 2 ) ] ], | |
'leadtime' => [ sprintf( '%d weeks delivered', random_int( 2, 10 ) ) ], | |
]; | |
update_term_meta( $item_code_id, Catalog_Integration::SPECS, $specs ); | |
$list_price = random_int( 800, 1500 ); | |
$cost_price = random_int( 200, $list_price ); | |
$price_label = [ 'Retail', 'List' ][ random_int( 0, 1 ) ]; | |
update_term_meta( $item_code_id, Catalog_Integration::LIST_PRICE, ( (string) $list_price ) . '.00' ); | |
update_term_meta( $item_code_id, Catalog_Integration::LIST_PRICE_LABEL, $price_label ); | |
update_term_meta( $item_code_id, Catalog_Integration::COST_PRICE, ( (string) $cost_price ) . '.00' ); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment