Добавление своих данных в стандартный экспорт CSV
WooCommerce- Все Функций WooCommerce
- Все Хуки WooCommerce
- Добавление своих данных в стандартный экспорт CSV
Добавить свои данные в стандартный экспорт CSV WooCommerce несложно. Это может пригодиться, когда в файл экспорта надо добавить данные, не предусмотренные самим WooCommerce, например значения своих произвольных полей, своих таксономий и другой специфической информации. Процесс разбит на 2 шага.
Шаг 1 - Регистрируем новую колонку для экспорта
Данная операция не только регистрирует колонку для файла экспорта, но и для отображения в форме экспорта в поле выбора экспортируемых данных.

add_filter( 'woocommerce_product_export_product_default_columns', 'add_columns_to_wc_csv_export' ); add_filter( 'woocommerce_product_export_column_names', 'add_columns_to_wc_csv_export' ); /** * Регистрирует новую колонку для экспорта. * * @param string[] $column_names * * @return string[] */ function add_columns_to_wc_csv_export( $column_names ) { $column_names['key_my_field'] = 'Моя колонка'; return $column_names; }
Использовать сразу 2 фильтра не обязательно, выберите предпочтительный вариант:
- Фильтр woocommerce_product_export_product_default_columns
- Используйте, когда поле надо отображать в форме экспорта в выпадающем списке.
- Фильтр woocommerce_product_export_column_names
- Используйте, когда поле не надо отображать в форме экспорта в выпадающем списке.
Шаг 2 - Заполняем колонку данными
Для простоты в примерах указано заполнение колонки статичной строкой, но там может быть вызов произвольной функции, которая вернёт нужные данные в формате, который можно вывести в текстовый файл (строковый, числовой и т. д.).
Задача может быть решена двумя способами, в зависимости от используемого фильтра.
Вариант 1 - Фильтр woocommerce_product_export_row_data
На фильтре woocommerce_product_export_row_data можно изменить любые данные. В нашем случае мы дополняем массив с данными нашим полем и его значением.
add_filter( 'woocommerce_product_export_row_data', 'add_data_to_wc_export', 10, 2 ); /** * Заполняет новую колонку данными. Вариант 1. * * @param array $row * @param WC_Product $product * * @return array */ function add_data_to_wc_export( $row, $product ) { $row['key_my_field'] = 'Данные поля для экспорта'; // $row['key_my_field'] = get_data_my_field(); return $row; }
Вариант 2 - Фильтр woocommerce_product_export_(export_type)_column_(column_id)
В первом варианте мы использовали общий фильтр, содержащий все поля и их данные. В этом фильтре рассмотрим решение на основе фильтра woocommerce_product_export_(export_type)_column_(column_id), который позволяет работать с каждым полем в отдельности, так как его имя динамическое и определяется двумя значениями:
- export_type
- Тип экспорта, используемый в именах фильтров. В нашем случае это
product
. - column_id
- Ключ (id) поля. В нашем случае это
key_my_field
.
Наш код примет следующий вид:
add_filter( 'woocommerce_product_export_product_column_key_my_field', 'add_data_to_wc_export', 10, 2 ); /** * Заполняет новую колонку данными. Вариант 2. * * @param mixed $value (По умолчанию: '') * @param WC_Product $product * * @return mixed */ function add_data_to_wc_export( $value, $product ) { $value = 'Данные поля my_field'; // $value = get_data_my_field(); return $value; }
Какой вариант использовать? Судя по коду и фразе Filter for 3rd parties, то именно 2 вариант предпочтительнее, хотя и у 1 варианта "противопоказаний" выявлено не было.