Использование 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 );
У меня есть поле в неправильном формате или мне нужен дополнительный код для работы?
Любая помощь приветствуется.