Crie um produto para download com arquivo de áudio no woocommerce

Confie em seu dia cumprindo. Eu preciso criar um produto woocommerce para download a partir do front end. Eu consegui criar um link para publicar o produto e adicionar o arquivo de áudio como anexo, mas eu preciso fazer esse anexo transferível após o pagamento, como você tem quando você publica um produto woocommerce para download no painel. Posso ver meu produto no painel agora, mas tenho que verificar manualmente o download e adicionar o arquivo do painel. Por favor, eu preciso de ajuda sobre como eu posso fazer o produto postado de front-end para download automaticamente. Agradeço as pessoas por sempre. Abaixo está o meu fragment de código.

// ADD THE FORM INPUT TO $new_post ARRAY $new_post = array( 'post_title' => $title, 'post_content' => $description, 'post_category' => array($_POST['cat']), 'tags_input' => array($tags), 'post_status' => 'draft', 'post_type' => 'product', //'post',page' or use a custom post type if you want to 'rating' => $myrating ); //SAVE THE POST $pid = wp_insert_post($new_post); //KEEPS OUR COMMA SEPARATED TAGS AS INDIVIDUAL wp_set_post_tags($pid, $_POST['post_tags']); //REDIRECT TO THE NEW POST ON SAVE $link = get_permalink( $pid ); wp_redirect( $link ); //ADD OUR CUSTOM FIELDS add_post_meta($pid, 'rating', $myrating, true); //INSERT OUR MEDIA ATTACHMENTS if ($_FILES) { foreach ($_FILES as $file => $array) { $newupload = insert_attachment($file,$pid); // $newupload returns the attachment id of the file that } } // END THE IF STATEMENT FOR FILES 

O que você deve fazer é, em suas funções.php, adicionar este código.

 function user_downloads($order_id) { // Variables to change $download_file_id = CUSTOM_ID_OR_ATTACHMENT_ID_OF_FILE; $user_id = USER_ID; $product_id = PRODUCT_ID; $order = new WC_Order( $order_id ); if($order['product_id'] == $product_id ){ $user_downloads = get_user_meta($user_id, 'user_downloads', TRUE); if(!empty($user_downloads)){ $user_downloads = $user_downloads.','.$download_file_id; update_user_meta($user_id, 'user_downloads', $user_downloads ); }else{ update_user_meta($user_id, 'user_downloads', $user_downloads ); } } } add_action( 'woocommerce_order_status_completed', 'user_downloads' ); 

Este código irá se conectar ao woocommerce e sempre que um pedido for concluído, ele criará um novo metadado do usuário. Portanto, todos os usuários que efetuarão um pagamento pelo produto especificado terão um novo meta chamado ‘user_downloads’. O valor deste item será os valores separados por vírgula do ID do anexo ou algum ID criptografado. Agora, tudo o que você precisa fazer na página do modelo é

 $user_downloads = get_user_meta($user_id, 'user_downloads', TRUE); $user_downloads = explode(',',$user_downloads); foreach($user_downloads as $user_download){ echo 'Downloadable File'; } 

Desta forma, eles podem comprar tantos produtos quanto quiserem e todos esses itens serão empilhados em seu perfil de usuário de onde eles podem baixar.