Fix partial data import with product task imports (#38089)
* Fix product task import mapping issue with en_US locale * Sanitize template name * Changelog
This commit is contained in:
parent
81b899b55e
commit
8e6fd416e0
|
@ -0,0 +1,4 @@
|
||||||
|
Significance: minor
|
||||||
|
Type: fix
|
||||||
|
|
||||||
|
Fix product task import for cases when user locale is en_US
|
|
@ -32,7 +32,7 @@ function wc_importer_current_locale() {
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
function wc_importer_default_english_mappings( $mappings ) {
|
function wc_importer_default_english_mappings( $mappings ) {
|
||||||
if ( 'en_US' === wc_importer_current_locale() ) {
|
if ( 'en_US' === wc_importer_current_locale() && is_array( $mappings ) && count( $mappings ) > 0 ) {
|
||||||
return $mappings;
|
return $mappings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ add_filter( 'woocommerce_csv_product_import_mapping_default_columns', 'wc_import
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
function wc_importer_default_special_english_mappings( $mappings ) {
|
function wc_importer_default_special_english_mappings( $mappings ) {
|
||||||
if ( 'en_US' === wc_importer_current_locale() ) {
|
if ( 'en_US' === wc_importer_current_locale() && is_array( $mappings ) && count( $mappings ) > 0 ) {
|
||||||
return $mappings;
|
return $mappings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -355,7 +355,7 @@ class OnboardingTasks extends \WC_REST_Data_Controller {
|
||||||
* @return WP_REST_Response|WP_Error
|
* @return WP_REST_Response|WP_Error
|
||||||
*/
|
*/
|
||||||
public static function create_product_from_template( $request ) {
|
public static function create_product_from_template( $request ) {
|
||||||
$template_name = $request->get_param( 'template_name' );
|
$template_name = basename( $request->get_param( 'template_name' ) );
|
||||||
$template_path = __DIR__ . '/Templates/' . $template_name . '_product.csv';
|
$template_path = __DIR__ . '/Templates/' . $template_name . '_product.csv';
|
||||||
$template_path = apply_filters( 'woocommerce_product_template_csv_file_path', $template_path, $template_name );
|
$template_path = apply_filters( 'woocommerce_product_template_csv_file_path', $template_path, $template_name );
|
||||||
|
|
||||||
|
|
|
@ -135,6 +135,32 @@ class WC_Admin_Tests_API_Onboarding_Tasks extends WC_REST_Unit_Test_Case {
|
||||||
$this->assertEquals( 'simple', $product->get_type() );
|
$this->assertEquals( 'simple', $product->get_type() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test creating a product from a template with 'en_US' locale since this is handled differently.
|
||||||
|
*/
|
||||||
|
public function test_create_product_from_template_locale() {
|
||||||
|
wp_set_current_user( $this->user );
|
||||||
|
|
||||||
|
// Get the current user's locale.
|
||||||
|
$user_locale = get_user_locale();
|
||||||
|
switch_to_locale( 'en_US', $this->user );
|
||||||
|
|
||||||
|
$request = new WP_REST_Request( 'POST', $this->endpoint . '/create_product_from_template' );
|
||||||
|
$request->set_param( 'template_name', 'variable' );
|
||||||
|
$response = $this->server->dispatch( $request );
|
||||||
|
$data = $response->get_data();
|
||||||
|
|
||||||
|
$this->assertEquals( 200, $response->get_status() );
|
||||||
|
|
||||||
|
$this->assertArrayHasKey( 'id', $data );
|
||||||
|
$product = wc_get_product( $data['id'] );
|
||||||
|
$this->assertEquals( 'auto-draft', $product->get_status() );
|
||||||
|
$this->assertEquals( 'variable', $product->get_type() );
|
||||||
|
|
||||||
|
// Set to initial locale.
|
||||||
|
switch_to_locale( $user_locale, $this->user );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that we get an error when template_name does not exist.
|
* Test that we get an error when template_name does not exist.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue