Как добавить загрузку файла в кассу WooCommerce?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить загрузку файла в кассу WooCommerce?

Сообщение Anonymous »


Страница оформления заказа WooCommerce изначально не поддерживает добавление поля загрузки файла в качестве возможного поля по соображениям безопасности. Я хочу добавить поле загрузки файла на страницу оформления заказа, чтобы клиент мог предоставить нам документ, который затем можно будет прикрепить к его заказу, и администраторы снова смогут ссылаться на него через панель управления заказами в будущем, если нам понадобится.< /п> Я попробовал два разных метода, но оба зашли в тупик. Я попробовал два разных решения:
[*]Форма загрузки Gravity Forms – попыталась отобразить форму Gravity Forms на странице оформления заказа с помощью перехватчика, но данные полей файла никогда не отображались в $_FILES или $_POST. [*]Загрузить поле с помощью ajax - попробовал создать поле загрузки, а затем использовать ajax для отправки данных поля загрузки в функцию ajax WordPress, но проблема с этим подходом заключается в том, что вы не можете проверить размер файла/если файл уже был загружен. Таким образом, пользователь потенциально может загружать очень большие файлы или может испортить место хранения файла из-за того, что путь загрузки файла добавляется в HTML элемента загрузки файла, например:
add_action('wp_ajax_mishaupload', 'misha_file_upload'); add_action('wp_ajax_nopriv_mishaupload', 'misha_file_upload'); функция misha_file_upload(){ $upload_dir = wp_upload_dir(); if ( isset($_FILES['misha_file'])) { $path = $upload_dir['путь'] . '/' . basename($_FILES['misha_file']['имя']); if( move_uploaded_file( $_FILES[ 'misha_file' ][ 'tmp_name' ], $path )) { echo $upload_dir['url'] . '/' . basename($_FILES['misha_file']['имя']); } } умереть; } где строка echo $upload_dir['url'] . '/' . basename( $_FILES[ 'misha_file' ][ 'name' ] ); добавляет каталог файла в часть value= входного элемента, что не идеально с точки зрения безопасности.

Затем я дошел до того момента, когда теперь могу добавлять поля типа «файл» с помощью следующего кода:

/** * Функция для фильтр-хука `woocommerce_form_field`. * * @param $поле * @param $key * @param $args * @param $значение * * @возвращаться */ function wp_kama_woocommerce_form_field_filter($field, $key, $args, $value){ // проверяем, является ли поле полем файла if( $args['type'] == 'file' ){ // добавляем пользовательский HTML в поле $field = ''; $field .= ''; $field .= 'Сертификат загрузки'; $field .= ''; $field .= спринтф( '', esc_attr( implode(' ', $args['class'] )), esc_attr($ключ), esc_attr($args['id']), ); $field .= ''; $field .= '
'; $field .= ''; } вернуть $поле; } add_filter('woocommerce_form_field', 'wp_kama_woocommerce_form_field_filter', 10, 4);
Приведенный выше код позволяет мне сделать следующее в другом хуке:

function add_custom_checkout_field($checkout) { woocommerce_form_field('certificate_file_upload', массив( 'тип' => 'файл', 'class' => array('form-row-wide'), 'label' => __('Загрузить сертификат'), 'обязательно' => ложь, ), $checkout->get_value('certificate_file_upload')); } add_action('woocommerce_after_order_notes', 'add_custom_checkout_field'); который затем этот код добавляет поле файла на страницу оформления заказа. Проблема на данный момент заключается в том, что ни $_FILES, ни $_POST не имеют никаких данных файла, связанных с ключом «certificate_file_upload», что является проблемой при попытке сделать что-либо с самими данными файла.

Я пытался узнать, как WooCommerce работает с полями оформления заказа по умолчанию, чтобы понять, как можно добавить данные моего файла в $_FILES/$_POST, но все, что я придумал, это то, что они управляют данными возможно через плагин WooCommerce: woocommerce->assets->js->frontend->checkout.js но я не знаю, как я мог бы добавить поддержку файлов на страницу оформления заказа после этого момента, не изменяя их файлы (которые будут переопределены при каждом обновлении плагина), если это даже правильный файл, в котором можно это делать.< /п> Является ли checkout.js файлом, который мне следует просмотреть в первую очередь, чтобы добавить данные моего файла в $_FILES, или мне следует искать где-то еще? Если checkout.js — это правильный файл, который мне следует просмотреть, есть ли способ изменить его файл, чтобы данные моего файла можно было добавлять в $_FILES?

Я хотел бы избежать необходимости загружать плагин только для того, чтобы сделать возможной загрузку файлов на страницу оформления заказа, поскольку я пытаюсь избежать раздувания, но если это единственное решение, я думаю, я воспользуюсь этим, если ничего невозможно сделать исправьте это.
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как добавить загрузку файла в кассу WooCommerce?
    Anonymous » » в форуме Php
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Как добавить загрузку файла в кассу WooCommerce?
    Anonymous » » в форуме Jquery
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как получить зарплату с использованием Adeptive PayPal и успешно оформлять за кассу?
    Anonymous » » в форуме Php
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • FastAPI выдает ошибку 422 при попытке добавить загрузку файла [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Laravel: Как проверить загрузку файла с помощью реального файла?
    Anonymous » » в форуме Php
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

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