Вопрос или проблема
Нам нужно было добавить коды EAN к нашим продуктам. Но когда я экспортировал продукты из WooCommerce, в CSV-файле не было колонки “GTIN, UPC, EAN или ISBN”. Поэтому я вручную добавил колонку “GTIN, UPC, EAN или ISBN” и попытался сопоставить её при импорте. Но это не сработало, не было поля для сопоставления. Мне это показалось странным, так как это должно быть основной функцией. Это совершенно бесполезно, когда нужно вручную добавлять EAN к каждому продукту.
Я попытался найти обходной путь, который прекрасно работает, за исключением автоматического сопоставления:
add_filter('woocommerce_csv_product_import_mapping_options', 'add_gtin_to_importer');
add_filter('woocommerce_csv_product_import_mapping_default_columns', 'add_gtin_to_importer');
add_filter('woocommerce_product_import_pre_insert_product_object', 'import_gtin_field', 10, 2);
function add_gtin_to_importer($columns) {
$columns['gtin_upc_ean_isbn'] = 'GTIN, UPC, EAN или ISBN';
return $columns;
}
function import_gtin_field($product, $data) {
if (!empty($data['gtin_upc_ean_isbn'])) {
$product->update_meta_data('_global_unique_id', sanitize_text_field($data['gtin_upc_ean_isbn']));
}
return $product;
}
add_filter('woocommerce_product_export_column_names', 'add_ean_to_export_column');
add_filter('woocommerce_product_export_product_default_columns', 'add_ean_to_export_column');
function add_ean_to_export_column($columns) {
$columns['ean'] = 'EAN';
return $columns;
}
add_filter('woocommerce_product_export_product_column_ean', 'add_ean_to_export_data', 10, 2);
function add_ean_to_export_data($value, $product) {
return $product->get_meta('_global_unique_id');
}
После того как я добавил этот код в файл functions.php, он появился в экспортируемых CSV-файлах, и я также смог вручную сопоставить его при импорте продуктов, что мне было нужно.
Я просто хотел бы спросить, почему это не работает в общем. Я бы поспорил, что многие люди сталкивались с этой проблемой. Я знал, что в последнее время были обновления WP и WooCommerce, так что это может быть связано с этим. Чья это ошибка? WP или WooCommerce, и будет ли это исправлено в будущем? Этот обходной путь работает, но не знаю, является ли это идеальным решением. Спасибо за ваши наблюдения.
С наилучшими пожеланиями
TK
Ответ или решение
К сожалению, многие пользователи WooCommerce сталкиваются с проблемой отсутствия в экспортируемых CSV файлах поля "GTIN, UPC, EAN или ISBN", что может вызвать значительные неудобства при массовом импорте товаров с уникальными идентификаторами. Ваша ситуация, безусловно, типична для многих владельцев интернет-магазинов, а отсутствие такого базового функционала — это действительно досадное упущение.
Причины проблемы
-
Модульность WooCommerce: WooCommerce, как плагин для WordPress, имеет определённые модульные ограничения. Основные поля, которые включены в экспорт, зависят от стандартных параметров WooCommerce. Поля GTIN, UPC, EAN и ISBN часто не входят в предустановленные поля по умолчанию, так как они не являются обязательными для всех типов товаров.
-
Обновления и совместимость: Как вы упомянули, недавние обновления WordPress и WooCommerce могут повлиять на функциональность. Это может привести к тому, что некоторые поля, которые ранее были доступны, были удалены или изменены.
-
Различие в версиях плагинов: В зависимости от версии WooCommerce, возможность импорта/экспорта определённых полей может варьироваться. Всегда рекомендуется использовать последние версии плагинов, но при этом важно отслеживать изменения в документации.
Ваше Решение
Код, который вы предоставили, очень эффективно добавляет недостающее поле в процесс импорта и экспорта. Он позволяет:
- Создавать новое поле для GTIN, UPC, EAN или ISBN в процессе импорта,
- Обеспечить экспорт этого поля в CSV файл,
- Позволить пользователям вручную сопоставлять это поле при импорте товаров.
Это решение не является идеальным с точки зрения поддержки, так как требует внесения изменений в код, и может стать проблематичным при обновлении плагина.
Рекомендации
-
Регулярные обновления: Следите за обновлениями WooCommerce и WordPress, так как разработчики могут исправить эту ситуацию в будущих версиях. Обязательно проверяйте документацию на наличие анонсов по изменениям в функциональных возможностях.
-
Обратная связь с поддержкой: Рассмотрите возможность отправить запрос в службу поддержки WooCommerce с описанием данной проблемы. Пользовательские запросы могут существенно повлиять на развитие функционала в будущих обновлениях.
-
Используйте плагины: Существуют сторонние плагины, которые могут управлять EAN, UPC и другими уникальными идентификаторами. Возможно, стоит рассмотреть такие варианты, если вы не хотите изменять код самой темы или плагина.
-
Документация и сообщества: Ознакомьтесь с документацией WooCommerce и участвуйте в сообществах, чтобы обмениваться опытом с другими пользователями. Часто другие владельцы магазинов могли найти похожие решения.
Заключение
Хотя ваше текущее решение и работает, важно понимать, что работа с пользовательским кодом требует должной осторожности. Обновления или изменения в WooCommerce могут привести к появлению ошибок или некорректному функционированию предыдущих решений. Поддержка функционала на уровне кода — это временное решение до тех пор, пока не будет внесено официальное исправление.
Берите на заметку приведенные рекомендации, чтобы оптимизировать процесс работы с уникальными идентификаторами в WooCommerce, и обязательно оставайтесь в контакте с последними изменениями в обучающей документации.