Чтобы добавить индивидуальное поле для загрузки файлов к карточке товара в WooCommerce, вы можете использовать пользовательские поля (custom fields) и соответствующие хуки. Вот шаги, которые помогут вам реализовать эту функциональность:
### Шаг 1: Добавьте поле загрузки файла в админке товара
Для начала, нужно добавить пользовательское поле для загрузки файла на страницу редактирования товара. Это можно сделать с помощью фильтра `woocommerce_product_options_general_product_data`.
Вставьте следующий код в файл `functions.php` вашей темы (или используйте плагин для пользовательских функций):
```php
add_action('woocommerce_product_options_general_product_data', 'add_custom_file_upload_field');
function add_custom_file_upload_field() {
woocommerce_wp_text_input(array(
'id' => 'custom_file_upload',
'label' => __('Upload File', 'woocommerce'),
'description' => __('Upload a file (pdf, jpg, docx)', 'woocommerce'),
'desc_tip' => true,
));
}
```
### Шаг 2: Сохраните загруженный файл
Теперь нужно сохранить загруженный файл, когда продукт будет обновлен. Для этого используем хук `woocommerce_process_product_meta`.
```php
add_action('woocommerce_process_product_meta', 'save_custom_file_upload_field');
function save_custom_file_upload_field($post_id) {
if (isset($_POST['custom_file_upload'])) {
update_post_meta($post_id, 'custom_file_upload', sanitize_text_field($_POST['custom_file_upload']));
}
}
```
### Шаг 3: Отобразите загруженный файл на странице товара
Чтобы отобразить загруженный файл на странице товара, вам нужно использовать хук `woocommerce_single_product_summary`.
```php
add_action('woocommerce_single_product_summary', 'display_custom_file_upload_field', 25);
function display_custom_file_upload_field() {
global $post;
$file_url = get_post_meta($post->ID, 'custom_file_upload', true);
if ($file_url) {
echo '<a href="'.esc_url($file_url).'" target="_blank">'.__('Download File', 'woocommerce').'</a>';
}
}
```
### Шаг 4: Добавьте функцию загрузки файлов
Если вам нужно добавить функцию выбора файлов, вам нужно использовать JavaScript и дополнительные функции. Общий принцип такой:
1. Используйте `<input type="file">` в вашем поле загрузки.
2. Используйте JavaScript для загрузки файла на сервер (пример: ajax-загрузка).
3. Сохраните путь к загруженному файлу аналогично указанию пути в шаге 2.
### Полезные ссылки и ресурсы
- [Документация WooCommerce](https://docs.woocommerce.com/)
- [Функции WordPress для работы с медиа](https://developer.wordpress.org/reference/functions/media_handle_upload/)
- [AJAX в WordPress](https://developer.wordpress.org/plugins/javascript/ajax/)
Этот базовый пример позволяет вам начать. Вы можете доработать его по мере необходимости, добавив дополнительные проверки, ограничения на тип файлов и другие функции.