Woocommerce после оформления заказа загружает файлыPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Woocommerce после оформления заказа загружает файлы

Сообщение Anonymous »


Я отчаянно пытаюсь загрузить и обновить поле ввода файла на странице оформления заказа woocommerce, но только после того, как заказ будет создан, а не раньше. Итак, я пробовал разные вещи, но не понимаю, почему woocommerce может видеть только файлы $_POST, а $_FILES в моей функции всегда пусты.

Я не использую AJAX. Я хотел бы получить значения файла из формы так же, как и в $_POST. Есть какие-нибудь руководства, пожалуйста?

Это мой подход:

checkout-template.js
/** * Начальный шаблон изменений оформления заказа * @return void */ публичная функция init() { add_action('woocommerce_checkout_update_order_meta', [$this, 'saveCheckoutFields'], 10, 2); } ---------- /** * Функция фильтра для реализации ввода файла для woocommerce. */ общественная функция woocommerce_file_form_field($field, $key, $args, $value) { // Изменяем только в том случае, если тип поля — «файл» if('file' == $args['type']) { $max_size = isset($args['max_size']) ? 'data-max_size="'.intval($args['max_size'] * 1024 * 1024).'" ' : ''; $accept = isset($args['accept']) ? 'accept="'.esc_attr($args['accept']).'" ' : ''; $multiple = isset($args['multiple']) ? 'несколько' : ''; $fileInfoLabel = isset($args['file_info_label']) ? esc_html($args['file_info_label']) : esc_html__('Нажмите на документацию!', 'woocommerce'); $maxSizeLabel = isset($args['max_size_label']) ? esc_html($args['max_size_label']) : esc_html__('Максимальный размер и размер файла должны составлять 10 МБ. Если в вашем распоряжении максимум 5 рыб.', 'woocommerce'); $inputLabel = isset($args['input_label']) ? esc_html($args['input_label']) : esc_html__('Набор рыбы', 'woocommerce'); $fieldInput = спринтф( '', esc_attr($args['тип']), esc_attr(implode(' ', $args['input_class'])), $несколько, esc_attr(empty($multiple) ? $key : $key.'[]'), esc_attr($args['id']), $max_size.$accept ); $fieldInputHolder = sprintf('', esc_attr($key).'_holder', esc_attr($key).'_holder'); $field = ' '.$fileInfoLabel.' '.$fieldInput.' '.$fieldInputHolder.' '.$inputLabel.' '.$maxSizeLabel.' '; } if($args['return']) { вернуть $поле; } еще { эхо $поле; } } ---------- общественная функция saveCheckoutFields($order_id,$data) { // простые поля $additional_simple_fields = [ 'motivul_consultatiei', 'recomandare_consult', 'alte_consultatii', ]; // выбираем поля $additional_select_fields = [ 'tipul_consultatiei' ]; // держатель ввода файла $additional_file_field = [ 'documente_medicale_file' ]; // Сохраняем обычные поля - ок foreach($additional_simple_fields как $field) { if(isset($_POST[$field]) && !empty($_POST[$field])) { $sanitized_value = wp_kses($_POST[$field], 'post'); update_post_meta($order_id, $field, $sanitized_value); } } // Сохраняем выбранные поля - ок foreach($additional_select_fields как $field) { if(isset($_POST[$field]) && !empty($_POST[$field])) { update_post_meta($order_id, $field, sanitize_key($_POST[$field])); } } // Сохраняем файлы - не ок foreach($additional_file_field как $field) { error_log("Файлы: ".print_r($_FILES[$field], true)); // здесь пусто if(isset($_FILES[$field]) && !empty($_FILES[$field])) { $files = $_FILES[$поле]; $file_count = count($files['name']); $upload_dir = wp_upload_dir(); $user_path = '/wc_checkout_uploads/'.$order_id; $user_folder = $upload_dir['basedir'].$user_path; $user_url = $upload_dir['baseurl'].$user_path; if(!is_dir($user_folder)) { wp_mkdir_p($user_folder); chmod($user_folder, 0777); } for($i = 0; $i
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»