В Woocommerce есть несколько способов добавления дополнительных полей для скачиваемых файлов. Я расскажу о двух наиболее распространенных способах в этом ответе.
1. Использование дополнительного плагина:
Шаг 1: Установите и активируйте плагин Advanced Custom Fields (ACF) из репозитория WordPress или с официального сайта.
Шаг 2: Создайте новую пользовательскую группу полей, чтобы добавить дополнительное поле.
Шаг 3: Добавьте новое поле типа "файл" в группу полей, установите метку и название поля.
Шаг 4: Используйте функцию get_field ()
в теме вашего сайта, чтобы отобразить это дополнительное поле на странице товара.
Шаг 5: Настройте шаблон для отображения скачиваемых файлов с помощью нового поля.
2. Использование кода в функциях темы:
Шаг 1: Откройте файл функций вашей активной темы (functions.php).
Шаг 2: Вставьте следующий код в файл функций:
/** * Добавление дополнительного поля скачиваемого файла на странице товара */ function add_custom_file_field() { echo '<div class="custom-file-field">'; woocommerce_form_field( 'custom_file', array( 'type' => 'file', 'class' => array('my-custom-file-class form-row-wide'), 'label' => __('Custom File'), 'required' => false, ), get_post_meta( get_the_ID(), 'custom_file', true )); echo '</div>'; } add_action( 'woocommerce_before_add_to_cart_button', 'add_custom_file_field' ); /** * Сохранение значения дополнительного поля скачиваемого файла */ function save_custom_file_field( $cart_item_data, $product_id ) { if( isset($_FILES['custom_file']['name']) && !empty($_FILES['custom_file']['name']) ) { $upload = wp_upload_bits( $_FILES['custom_file']['name'], null, file_get_contents( $_FILES['custom_file']['tmp_name'] ) ); if( isset($upload['error']) && $upload['error'] != 0 ) { wc_add_notice( __('There was an error uploading the file, please try again.') ); } else { $cart_item_data[ 'custom_file' ] = $upload; } } return $cart_item_data; } add_filter( 'woocommerce_add_cart_item_data', 'save_custom_file_field', 10, 2 ); /** * Отображение значения дополнительного поля скачиваемого файла на странице оформления заказа */ function display_custom_file_field_data( $item_data, $cart_item ) { if( !empty($cart_item['custom_file'] ) ){ $item_data[] = array( 'key' => 'Custom File', 'value' => $cart_item['custom_file']['url'], ); } return $item_data; } add_filter( 'woocommerce_get_item_data', 'display_custom_file_field_data', 10, 2 );
Шаг 3: Сохраните файл функций и обновите сайт.
Шаг 4: Теперь на странице товара будет отображаться дополнительное поле для скачиваемого файла.
Оба способа дают вам возможность добавлять дополнительные поля для скачиваемых файлов в Woocommerce. Вам нужно выбрать тот, который лучше подходит для вашей конкретной ситуации и требований.