Не видно кастомные поля при экспорте в WooCommerce?
У меня есть сайт на WordPress WooCommerce. Я использую плагин WP Ultimate CSV Importer - Custom Fields Import для того чтобы импортировать товары из CSV файла к себе на сайт.
Ранее в function.php я добавил новые кастомные поля, которые выводятся на странице товара:
// Add Custom Pricing Field to Product Data Meta Box
add_action('woocommerce_product_options_pricing', 'wbac_add_custom_field', 5);
function wbac_add_custom_field()
{
global $post;
woocommerce_wp_text_input([
'id' => 'wbac_customer_pricing',
'label' => 'Цена для клиента',
'value' => get_post_meta($post->ID, 'wbac_customer_pricing', true),
'data_type' => 'price',
]);
}
// Save Custom Pricing Field
add_action('woocommerce_process_product_meta', 'wbac_save_custom_field');
function wbac_save_custom_field($post_id)
{
$customer_pricing = $_POST['wbac_customer_pricing'];
// END НДС
if (!empty($customer_pricing)) {
update_post_meta($post_id, 'wbac_customer_pricing', wc_format_decimal($customer_pricing));
}
}
В настройках плагина есть такой пункт CMB2 Meta Fields prefix, в нём я указал "wbac". Но при импортировании я вижу только стандартные поля WordPress WooCommerce. Что я делаю не так?
Тоже самое пробовал делать и с WP All Import, всё аналогично, кастомные поля не видно. Мучаюсь уже месяц.. буду благодарен за любую подсказку
Дополнительно
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Ваше поле не является CMB2-полем. Вы просто добавили input в метабокс WooCommerce и сохраняете значение в post meta с ключом
wbac_customer_pricing. Поэтому настройка «CMB2 Meta Fields prefix» здесь не поможет: импортёр не видит «зарегистрированное поле», он может работать только с meta key. Ищите или добавляйте именно ключwbac_customer_pricing, а не label «Цена для клиента» и не prefixwbac.Сначала поправьте сохранение, чтобы не было notice и пустое значение тоже корректно обрабатывалось:
add_action('woocommerce_process_product_meta', 'wbac_save_custom_field'); function wbac_save_custom_field($post_id) { if (! isset($_POST['wbac_customer_pricing'])) { return; } $value = wc_format_decimal(wp_unslash($_POST['wbac_customer_pricing'])); update_post_meta($post_id, 'wbac_customer_pricing', $value); }
Для стандартного CSV-импорта WooCommerce можно явно добавить поле в маппинг:
add_filter('woocommerce_csv_product_import_mapping_options', function ($options) { $options['wbac_customer_pricing'] = 'Цена для клиента'; return $options; }); add_filter('woocommerce_csv_product_import_mapping_default_columns', function ($columns) { $columns['Цена для клиента'] = 'wbac_customer_pricing'; return $columns; }); add_filter('woocommerce_product_import_pre_insert_product_object', function ($product, $data) { if (isset($data['wbac_customer_pricing'])) { $product->update_meta_data('wbac_customer_pricing', wc_format_decimal($data['wbac_customer_pricing'])); } return $product; }, 10, 2);
Для экспорта поле тоже надо добавить отдельной колонкой через фильтры
woocommerce_product_export_column_names,woocommerce_product_export_product_default_columnsиwoocommerce_product_export_product_column_wbac_customer_pricing. В WP All Import/Export обычно можно вручную указать custom field по meta key; если поле нигде не появляется, сохраните его хотя бы у одного товара и проверьте наличие записи в таблицеwp_postmeta.