Como fazer o upload de uma imagem na página de pagamento do woocommerce e ligá-la à ordem

Estou tentando fazer o upload de uma imagem na página de pagamento e gravar isso na ordem. Então eu tentei adicionar campos personalizados e quando eu var_dump $_FILES eu obtenho uma matriz vazia. Por que isso está acontecendo?

 function add_file_field(){ echo ''; } add_action('woocommerce_after_order_notes','add_file_field'); 

O campo está disponível na página de check-out, mas quando eu tento validá-lo, não consegui obter nada de $_FILES vez disso, eu recebo uma matriz vazia

 function output_file_datas(){ $filename = plugin_dir_path(__FILE__).'test.txt'; ob_start(); var_dump($_FILES); $data = ob_get_clean(); file_put_contents($filename, $data); } add_action('woocommerce_checkout_process','output_file_datas'); 

Aqui, test.txt é um arquivo de texto onde eu costumava depurar.

Eu até adicionei o atributo enctype forma em jquery. Então pensei que o arquivo ficaria disponível, mas não.

 jQuery(document).ready(function(){ jQuery('form.checkout').attr('enctype','multipart/form-data'); }); 

Não sei por que isso está acontecendo. Alguém poderia me dizer por que não está carregando a imagem. Só acontece neste contexto. Eu tentei adicionar um formulário na mesma página de checkout. Se eu carregar a imagem do formulário, posso conseguir isso. Mas não consegui-lo através do formulário de pagamento Woocommerce.

Existe algo que o Woocommerce está fazendo?

Eu tentei com o formulário ajax para carregar imagem usando jQuery Form Plugin que já está disponível no wordpress. Aqui, posso conseguir a imagem, mas tenho medo da lógica porque, uma vez que o usuário carrega a imagem e se ele não fez a ordem, a imagem carregada pode ser desperdiçada.

Então eu preciso do arquivo carregado junto com o formulário e gravá-lo ao pedido. Como fazer isso? Por que eu não consegui obter $_FILES quando eu tentar obter de woocommerce_checkout_process Hook?

Eu sei que não há nenhum problema com o upload normal de arquivos na mesma página, mas com diferentes formas. Quando eu tento do formulário de check-out do woocommerce, então não consegui obter $_FILES .

Eles estão usando ajax antes do pedido, é a razão pela qual não estou obtendo a matriz $_FILES . Em caso afirmativo, posso replace o ajax normal e usar o jQuery Form Plugin para que eu possa obter os $FILES

Qualquer ajuda ou referência sobre o problema será muito útil para mim.

 ///Add the File Upload Field in Shipping Fields Group add_filter( 'woocommerce_shipping_fields', 'woo_filter_upload_shipping' ); function woo_filter_upload_shipping( $address_fields ) { // $address_fields['file_upload']['required'] = true; $address_fields['file_upload'] = array( //'label' => __('Upload your ID', 'woocommerce'), 'required' => false, 'class' => array('form-row-wide'), 'clear' => true ); return $address_fields; } //Use this function to show Upload field on your form. function add_file_field(){ $uploadFile = ""; $uploadFile .='
'; $uploadFile .=''; $uploadFile .=''; $uploadFile .=''; $uploadFile .='
'; echo $uploadFile; } add_action('woocommerce_after_order_notes','add_file_field');

Deve usar a class de upload para este fim para atender ao seu requisito de fazer o upload de um arquivo.

Utilizei os seguintes ganchos para gerenciar os valores postados do formulário:

woocommerce_order_status_on-hold, woocommerce_order_status_processing, woocommerce_order_status_completed

E

Seguindo ganchos para gerenciar os campos do formulário:

woocommerce_checkout_after_customer_details, woocommerce_after_cart_table

Espero que estes ganchos o ajude.

PS Eu estava em um processo para gerenciá-lo como uma peça de plug and play, então finalmente formou-o como um plugin !