Создать загружаемый продукт с аудиофайлом в woocommerce

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

// 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

2

Решение

Что вы должны сделать, это добавить в свой файл functions.php этот код.

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' );

Этот код подключится к WooCommerce и, когда заказ будет завершен, он создаст метаданные нового пользователя. Таким образом, у каждого пользователя, который произведет оплату за указанный продукт, будет новый мета-элемент под названием «user_downloads». Значением этого элемента будут значения разделенного запятыми идентификатора вложения или некоторого зашифрованного идентификатора. Теперь все, что вам нужно сделать на странице шаблона

$user_downloads = get_user_meta($user_id, 'user_downloads', TRUE);
$user_downloads = explode(',',$user_downloads);

foreach($user_downloads as $user_download){
echo '<a href="'.wp_get_attachment_url( $user_downloads[$user_download] ).'">Downloadable File</a>';
}

Таким образом, они могут купить столько продуктов, сколько захотят, и все эти элементы будут добавлены в их профиль пользователя, откуда они смогут их скачать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector