Как импортировать сериализованный массив данных продукта в виде отдельных столбцов в woocommerce? - PullRequest
0 голосов
/ 14 сентября 2018

Использование Woocommerce 3.4.5, версия PHP: 7.1.21

Мы используем плагин для создания правил скидок для каждого продукта (более 1000 скусов), которые необходимо регулярно обновлять.

Я пытаюсь изменить встроенный импортер Woocommerce, чтобы сопоставить столбец с правильным полем, используя код, указанный на Github - это успешно сработало для добавления других столбцов.

Однако значение этого столбца является массивом, объединяющим все 5 полей в один столбец. При экспорте продукта столбец имеет заголовок Meta: wwpp_post_meta_quantity_discount_rule_mapping с содержанием a: 1: {i: 0; a: 5: {s: 14: "wholesale_role"; s: 18: "wholesale_customer"; s: 9: "start_qty"; s: 2: "50"; s: 7: "end_qty"; s: 0: ""; s: 10: "price_type"; s: 11: "с фиксированной ценой"; s: 15:» wholesale_price "; s: 2:" 70" ;}}

.

Мне нужно импортировать каждое поле как отдельный столбец. Я бы подумал, что для сопоставления поля (например, start_qty) вы бы использовали wwpp_post_meta_quantity_discount_rule_mapping:start_qty, но это не похоже на работу.

Это текущий код, который не работает: загрузка завершена без ошибок, но на странице редактирования продукта нет изменений в ранее установленном правиле скидки на количество.

//this is for Wholesale prices premium fields test
function add_column_to_importer1( $options ) {

// column slug => column name
$options['wwpp_post_meta_quantity_discount_rule_mapping:start_qty'] = 'Indent Qty';
$options['wwpp_post_meta_quantity_discount_rule_mapping:wholesale_price'] = 'Indent Price';
return $options;
}
add_filter( 'woocommerce_csv_product_import_mapping_options', 'add_column_to_importer1' );

/*
* Add automatic mapping support for 'Custom Column'. 
* This will automatically select the correct mapping for columns named 'Custom Column' or 'custom column'.
*/
function add_to_mapping_screen11( $columns ) {

// potential column name => column slug
$columns['Indent Qty'] = 'wwpp_post_meta_quantity_discount_rule_mapping:start_qty';
$columns['Indent Price'] = 'wwpp_post_meta_quantity_discount_rule_mapping:wholesale_price';
return $columns;
}
add_filter( 'woocommerce_csv_product_import_mapping_default_columns', 'add_to_mapping_screen11' );

/* Process the data read from the CSV file.*/
function process_import1( $object, $data ) {

if ( ! empty( $data['wwpp_post_meta_quantity_discount_rule_mapping:start_qty'] ) ) {
    $object->update_meta_data( 'wwpp_post_meta_quantity_discount_rule_mapping:start_qty', $data['wwpp_post_meta_quantity_discount_rule_mapping:start_qty'] );
}
if ( ! empty( $data['wwpp_post_meta_quantity_discount_rule_mapping:wholesale_price'] ) ) {
    $object->update_meta_data( 'wwpp_post_meta_quantity_discount_rule_mapping:wholesale_price', $data['wwpp_post_meta_quantity_discount_rule_mapping:wholesale_price'] );
}

return $object;
}
add_filter( 'woocommerce_product_import_pre_insert_product_object', 'process_import1', 10, 2 );

У меня есть поле в неправильном формате или мне нужен дополнительный код для работы?

Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...